about summary refs log tree commit diff stats
path: root/apps/mulisp.subx
Commit message (Collapse)AuthorAgeFilesLines
* 6014Kartik Agaram2020-02-171-1/+1
|
* 5924Kartik Agaram2020-01-271-11/+11
|
* 5897 - rename comparison instructionsKartik Agaram2020-01-161-4/+4
| | | | | | | Signed and unsigned don't quite capture the essence of what the different combinations of x86 flags are doing for SubX. The crucial distinction is that one set of comparison operators is for integers and the second is for addresses.
* 5883 - drop the `ref` keywordKartik Agaram2020-01-121-1/+1
| | | | | | | | | | When I created it I was conflating two things: a) needing to refer to just the start, rather than the whole, and b) counting indirections. Both are kinda ill-posed. Now Mu will have just `addr` and `handle` types. Normal types will translate implicitly to `addr` types, while `handle` will always require explicit handling.
* 5880Kartik Agaram2020-01-101-1/+1
|
* 5876 - address -> addrKartik Agaram2020-01-031-15/+15
|
* 5804Kartik Agaram2019-12-081-9/+9
| | | | | Try to make the comments consistent with the type system we'll eventually have.
* 5782 - fix a widespread bug with Heap-sizeKartik Agaram2019-11-301-1/+1
|
* 5719Kartik Agaram2019-10-291-1/+1
|
* 5715Kartik Agaram2019-10-261-1/+1
| | | | | | | Clean up pseudocode to match planned syntax for the type- and memory-safe level-2 Mu language. http://akkartik.name/post/mu-2019-2 is already out of date.
* 5700Kartik Agaram2019-10-171-1/+1
|
* 5698Kartik Agaram2019-10-151-11/+11
| | | | Thanks Andrew Owen for reporting this typo.
* 5686Kartik Agaram2019-09-221-1/+1
| | | | Get mulisp reflecting whatever's typed in again.
* 5685 - back tinkering with mulispKartik Agaram2019-09-221-35/+41
|
* 5682Kartik Agaram2019-09-201-1/+1
|
* 5675 - move helpers from subx-common into layersKartik Agaram2019-09-191-1/+1
| | | | | | | | | | | | | | | | This undoes 5672 in favor of a new plan: Layers 000 - 099 are for running without syntax sugar. We use them for building syntax-sugar passes. Layers 100 and up are for running with all syntax sugar. The layers are arranged in approximate order so more phases rely on earlier layers than later ones. I plan to not use intermediate syntax sugar (just sigils without calls, or sigils and calls without braces) anywhere except in the specific passes implementing them.
* 5663Kartik Agaram2019-09-181-4/+63
| | | | | | Snapshot of mulisp before we put it on the back-burner. It's going to take too long, and we're better off building out the lower layers that make it more convenient to create.
* 5661Kartik Agaram2019-09-151-1/+1
|
* 5646Kartik Agaram2019-09-111-1/+1
|
* 5644 - plan data structures for mulispKartik Agaram2019-09-081-7/+42
|
* 5637Kartik Agaram2019-09-071-11/+7
|
* 5634 - add read/eval/print phasesKartik Agaram2019-09-071-16/+78
|
* 5633 - start of a toy lisp interpreterKartik Agaram2019-09-071-0/+76
r/blame/Makefile?h=v1.8.0&id=0085516925873f5cf08c42fdd15ae8fbef50f6f0'>^
e9e4b4ff ^
fde932f2 ^
3a1e1f28 ^
4ade06a6 ^

3a1e1f28 ^
0c2c782d ^

30ae2137 ^
b0a216f5 ^
4ade06a6 ^
b0a216f5 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112














                                                                       
             
               

                   

                       
               

                                                                         


                                                
 
                
                                                            
 



                                  
                                          






                                                      

                                                        


                                                                    
                                                                          
                                             
 




























                                                                                  


                            
                                                                   
 
      
                           

                                                        
             
                                                    





                                                  
         
                                                    
                                                      
 
     
                         

   
                                       

         
                                                                                                    
 
                                                                
                                  
# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

NAME = ranger
VERSION = 1.0.4
PYTHON ?= python
DOCDIR ?= doc/pydoc
PREFIX ?= /usr
MANPREFIX ?= /share/man
PYOPTIMIZE ?= 1
PYTHON_SITE_DEST ?= $(shell $(PYTHON) -c 'import sys; sys.stdout.write( \
	[p for p in sys.path if "site" in p][0])' 2> /dev/null)
BMCOUNT ?= 5  # how often to run the benchmarks?

CWD = $(shell pwd)

default: compile
	@echo 'Run `make options` for a list of all options'

options: help
	@echo
	@echo 'Options:'
	@echo 'PYTHON = $(PYTHON)'
	@echo 'PYOPTIMIZE = $(PYOPTIMIZE)'
	@echo 'PYTHON_SITE_DEST = $(PYTHON_SITE_DEST)'
	@echo 'PREFIX = $(PREFIX)'
	@echo 'MANPREFIX = $(MANPREFIX)'
	@echo 'DOCDIR = $(DOCDIR)'

help:
	@echo 'make: Compile $(NAME)'
	@echo 'make doc: Create the pydoc documentation'
	@echo 'make install: Install ranger'
	@echo 'make clean: Remove the compiled files (*.pyc, *.pyo)'
	@echo 'make cleandoc: Remove the pydoc documentation'
	@echo 'make uninstall: Uninstall ranger'
	@echo 'make snapshot: Create a tar.gz of the current git revision'
	@echo 'make test: Run all unittests.'

all: test compile install

install:
	@if [ '$(PYTHON_SITE_DEST)' == '' ]; then \
		echo -n 'Cannot find a suitable destination for the files.'; \
		echo '  Please install $(NAME) manually.'; \
		false; \
	fi
	@echo "Installing $(NAME) version $(VERSION)..."
	@mkdir -p $(PREFIX)/bin
	cp -f ranger.py $(PREFIX)/bin/ranger
	@mkdir -p $(PYTHON_SITE_DEST)
	cp -fruT ranger $(PYTHON_SITE_DEST)/ranger
	@chmod 755 $(PREFIX)/bin/ranger
	@chmod -R +rX $(PYTHON_SITE_DEST)/ranger
	@mkdir -p $(PREFIX)$(MANPREFIX)/man1
	cp -f doc/ranger.1 $(PREFIX)$(MANPREFIX)/man1/ranger.1
	@chmod 644 $(PREFIX)$(MANPREFIX)/man1/ranger.1

uninstall:
	rm -f $(PREFIX)/bin/ranger
	rm -f '$(PREFIX)$(MANPREFIX)/man1/ranger.1'
	@if [ '$(PYTHON_SITE_DEST)' == '' ]; then \
		echo 'Cannot find a possible location of rangers library files'; \
		false; \
	fi
	rm -rf '$(PYTHON_SITE_DEST)/ranger/*'
	@echo 'NOTE: By default, configuration files are stored at "~/.ranger".'
	@echo 'This script will not delete those.'

compile: clean
	@echo 'Compiling...'
	PYTHONOPTIMIZE=$(PYOPTIMIZE) python -m compileall -q ranger

clean:
	@echo 'Cleaning...'
	find . -regex .\*.py[co]\$$ -exec rm -f -- {} \;

doc: cleandoc
	@echo 'Creating pydoc html documentation...'
	mkdir -p $(DOCDIR)
	cd $(DOCDIR); \
		$(PYTHON) -c 'import pydoc, sys; \
		sys.path[0] = "$(CWD)"; \
		pydoc.writedocs("$(CWD)")'

cleandoc:
	@echo 'Removing pydoc html documentation...'
	test -d $(DOCDIR) && rm -f -- $(DOCDIR)/*.html

test:
	@./all_tests.py 1

bm:
	@./all_benchmarks.py $(BMCOUNT)

snapshot:
	git archive HEAD | gzip > $(NAME)-$(VERSION)-$(shell git rev-parse HEAD | cut -b 1-8).tar.gz

.PHONY: default options all compile clean doc cleandoc test bm \
	install uninstall snapshot