hikarin / aquario Goto Github PK
View Code? Open in Web Editor NEWGC-oriented Lisp interpreter
GC-oriented Lisp interpreter
Currently GC is not working at VM branch.
Branch dev is OK.
Branch VM cannot be compiled.
The email link did'nt work, so I try it this way.
I am trying to get your aquario program running. When I try e.g. (fib 20), then the GC should happen, but no sign of this is shown. It seems like no GC is done at all, only after a (gc) statement. Then again there is no feedback.
Could you please augment the README such that an uninformed user like me knows what to do? Also it appears that the do_test.lsp example does'nt run, e.g 'begin' and 'equal?' are not understood.
Thanks for your answer, with kind regards,
Wouter Boeke
[email protected]
Minor GC works well but Major GC fails.
Some kinds of objects are represented as objects with type T_NONE. However, it is inefficient because GC need to traverse pointers to them. These objects should be immediate values for efficiency.
Current version allows:
(1)
->(1)
(define m 0)
->0
(m)
->(m)
The file do_test.lsp defines procedure "assert-equal" for test cases. It should be written not by lambda expression but by macro.
But Aquario doesn't have macro system so far... After macro system is implemented, "assert-equal" should be replaced as a macro.
Parsing S-expression below fails.
(define m "
" <= a space
)
Mark-Sweep collector exhausts heap memory when expressions below are evaluated:
(define inf-gc (lambda (x) (gc) (inf-gc x)))
(inf-gc 1)
Other collectors work fine.
Aquario cannot parse dot form correctly.
'(1 . 2)
(1 . 2) <= O.K.
(cons 1 . 2)
Segmentation fault: 11 <= Bad
(define test (lambda (x . y) (cons x y)))t
(test 1 2)
Segmentation fault: 11 <= Bad
((lambda (x) (if (<= x 2) 1 100)) 30)
gives an error. Compiling lambda is not working properly.
If there is no empty line at the end of a script, it does not generate HALT.
So execution does not stop.
Expressions below causes SEGV:
(define func (lambda () (cons 1 2)))
(func)
-Heap XXX: Specify heap size at startup time
-MT: use multithread version (if possible)
Reference Count algorithm doesn't exhausts heap (fib 20) but exhausts (fib 30)
is necessary for infinite function call like:
(define gc-infinite (lambda () (gc) (gc-infinite)))
(gc-infinite)
Eliminate all of (Cell)AQ_NIL/(Cell)AQ_TRUE/(Cell)AQ_FALSE/....
They should be simply AQ_NIL/AQ_TRUE/AQ_FALSE/...
Make it sure that any integer value on stack are made via makeInteger().
bytecode is not generated -> generate bytecode.
bytecode is already generated but older than script -> generate bytecode.
bytecode is already generated and newer than script -> nothing will be generated.
It fails to run tak.lsp with every single collector.
GC: copy
./run-test.sh: line 6: 844 Segmentation fault: 11 ./aquario -GC copy $SCRIPT
real 0m1.002s
user 0m0.744s
sys 0m0.084s
GC: gen
./run-test.sh: line 9: 846 Segmentation fault: 11 ./aquario -GC gen $SCRIPT
real 0m0.175s
user 0m0.122s
sys 0m0.024s
GC: ms
Heap Exhausted.
real 0m3.118s
user 0m3.367s
sys 0m0.088s
GC: mc
[ERROR]Heap Exhausted
real 0m2.823s
user 0m2.735s
sys 0m0.084s
GC: ref
[ERROR]Heap Exhausted
Lambda should recognize "." in parameter list.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.