|
|
30964bf4ec
|
Better BVAU, which does full trees-of-symbols destructuring with varidic support!
|
2023-02-12 11:56:32 -05:00 |
|
|
|
c028e975d4
|
Add wrap, vfoldl, zipd, concat, bvau, and lambda! Need to add varidac handling to bvau, but getting tired
|
2023-02-11 00:34:24 -05:00 |
|
|
|
1b813e39fb
|
Fix vapply bug, write vmap, add debug
|
2023-02-10 23:05:08 -05:00 |
|
|
|
606972a38b
|
Implement vapply, got around the ever-growing environment
|
2023-02-10 22:34:04 -05:00 |
|
|
|
3c2dfbf8a7
|
Add tail call recursion - works, but if a datastructure is too deep (say, because env keeps growing on the heap) Rc::drop will end up overflowing the stack when trying to deallocate
|
2023-02-10 19:38:44 -05:00 |
|
|
|
ba67b8c67b
|
Add "!" syntatic form - a bit like the single quote, but !(a b c) d => !(a b c d). Useful for like !(let a 1) (+ a 3) or w/e. Break out some of the infinate nesting"
|
2023-02-10 01:01:04 -05:00 |
|
|
|
3b5cc2c506
|
Implement a new style of let1 based on direct env manipulation
|
2023-02-09 01:20:19 -05:00 |
|
|
|
02e359f42d
|
Finish out the basic primitives along with testing infra for both parsing and evalaution, with some slick Into<> impls to make Rust values Kraken values, which is esp useful for testing
|
2023-02-08 23:37:23 -05:00 |
|
|
|
d861d91397
|
Fix ', add if and = along with bools
|
2023-02-08 01:54:53 -05:00 |
|
|
|
c801f604c2
|
Add derived combiners and fix some bugs with eval, vau, quote, cons, car, cdr
|
2023-02-07 13:00:15 -05:00 |
|
|
|
60dad101f8
|
Speed sketch beginnings of a Rust implementation of new stripped-down Scheme-like Kraken
|
2023-02-07 02:07:53 -05:00 |
|
|
|
3807381ceb
|
Sketch out call-info, realized it and function-analysis needs pectx and also err threaded through it, since it can fail (which must be recoverable) and needs env and pectx for partial_eval inside
|
2023-02-02 01:18:17 -05:00 |
|
|
|
bea48eb18b
|
Reviewing and making notes about analysises, looking to see if they can be implemented with a generic traversal or something
|
2023-02-01 01:01:37 -05:00 |
|
|
|
a038a8cebf
|
Ensure proper env care during memo short circuiting
|
2023-01-31 22:54:53 -05:00 |
|
|
|
967ec0feb4
|
After too much procrastination trying a bunch of parentheses editing plugins (parinfer the most interesting), did a bit of actual work and refactoring where the compiled function is checked for and inserted using both the pre and post partial-eval hash, and the analysis functions are pulled out together into a single meta analysis
|
2023-01-31 00:59:16 -05:00 |
|
|
|
c20ba09179
|
clean up compile more, going straight to pulling out of memo, removing compile-body-part, removing now-unecessary recursion checking (for ping-pong between partial-eval and compile-inner because of how we now check memo and normalize), and finally add all tests to new_test.sh
|
2023-01-25 02:22:10 -05:00 |
|
|
|
7f9f419a23
|
Remove rest of comb rec_hash tracking
|
2023-01-22 00:41:29 -05:00 |
|
|
|
5a4cb4b40b
|
Cleanup, remove some of the rec_hashes
|
2023-01-22 00:07:39 -05:00 |
|
|
|
dff6730dd9
|
Got partial-eval during compile working
|
2023-01-21 17:55:55 -05:00 |
|
|
|
0ed097b5b0
|
mix old and unstable
|
2023-01-16 22:14:41 -05:00 |
|
|
|
95f6dd867c
|
Koka needs old emscripten sigh
|
2023-01-16 19:01:50 -05:00 |
|
|
|
94ae60f9d1
|
Merge branch 'master' of github.com:Limvot/kraken
|
2023-01-16 18:55:54 -05:00 |
|
|
|
b2f0b5f1dd
|
Notes on todo
|
2023-01-16 18:55:52 -05:00 |
|
|
|
18b901b2f1
|
Start version experiments to narrow down if Koka or Emscripten is the problem
|
2023-01-16 18:54:34 -05:00 |
|
|
|
54f1092a2a
|
Old sketches, start simpler benchmarks setup with Koka WASM
|
2023-01-16 15:32:45 -05:00 |
|
Sharjeel Khan
|
29a0266c67
|
Fixed deriv
|
2022-11-11 05:42:17 -05:00 |
|
Sharjeel Khan
|
d440260d1c
|
Fixed cfold
|
2022-11-11 04:01:08 -05:00 |
|
Sharjeel Khan
|
4eb42d48f9
|
New Newlisps cfold
|
2022-11-11 03:53:13 -05:00 |
|
Sharjeel Khan
|
85f46f0e8d
|
Test
|
2022-11-11 00:20:36 -05:00 |
|
Sharjeel Khan
|
2146ecd761
|
Commit current things
|
2022-11-11 00:20:05 -05:00 |
|
Sharjeel Khan
|
70f151222e
|
Picolisp two examples
|
2022-11-11 00:19:32 -05:00 |
|
Nathan Braswell
|
8638086480
|
Added ability to turn off 4 major optimizations, integrated into benchmarks now focused only on Kraken (and NewLisp)
|
2022-11-10 02:10:56 -05:00 |
|
Sharjeel Khan
|
a7248daca0
|
Added new benches and will add the rest of them
|
2022-11-08 22:49:43 -05:00 |
|
Nathan Braswell
|
7eb8465f64
|
First maybe working version of borrow?. Now need to figure out exactly how to integrate into compiler
|
2022-07-19 23:42:24 -04:00 |
|
Nathan Braswell
|
82f652b178
|
first paper data
|
2022-07-09 13:58:11 -04:00 |
|
Nathan Braswell
|
7145f8865e
|
benchmark improvements
|
2022-07-07 13:10:14 -04:00 |
|
Nathan Braswell
|
196b0865c4
|
Benchmark adjustments and plotting
|
2022-07-06 21:26:10 -04:00 |
|
Nathan Braswell
|
e95feb9309
|
tiny perceus fix, but mostly wrote match+rb-tree f-expr/macro for newLisp and benchmarked it. kraken 5-15x faster than newlisp-rbtree-macro, 137x faster than newlisp-rbtree-fexpr. I was suprised at first that the macro and fexpr versions were so close at 8.7x (while interpreted kraken rbtree is 50,000x slower), but after thinking about it it makes sense - the Kraken version has slowdown exponential in the multiple levels of f-exprs ('match' is an fexpr, but then so is 'let' and 'and' and 'lambda'), whereas the newLisp f-expr runtime expands to fast builtins ('let', 'and', etc). And all that exponential f-expr slowdown gets compiled away in Kraken!
|
2022-07-06 02:34:48 -04:00 |
|
Nathan Braswell
|
2cdfa4dbed
|
Mostly sketch out borrow?, just have to thread through perceus data and figure out if we want to output a combined version to the user with a common entry point. Fixed a pseudo-perceus cond ordering issue as well, and now makes pseudo-perceus store if a symbol access is an owning sink - but this has a bug somewhere in Pseudo-Perceus causing this to error for now
|
2022-07-05 02:51:48 -04:00 |
|
Nathan Braswell
|
131824b230
|
First impl of Pseudo-Perceus, added veval case to infer_types, modified how lookups work on s_env, now lookups into enclosing envs don't reify current environments by starting at the outer env after climbing out of the inlined functions + main function
|
2022-07-05 01:41:58 -04:00 |
|
Nathan Braswell
|
15bf38db2b
|
Implement the first scaffolding for pseudo_perceus, support operatives in lapply (but not yet applicates in compiled vapply). Means (foldl and true (array true true false)) actually works now, for the paper!
|
2022-07-04 00:47:17 -04:00 |
|
Nathan Braswell
|
a64c67571f
|
small refactor around parameter array creation, then used it to inline calls to 'array' (which are almost no-ops, just returning their parameter array)
|
2022-07-03 20:29:53 -04:00 |
|
Nathan Braswell
|
b1817dfdc3
|
Add newLisp, our second interpreted lisp implementation that supports f-exprs today, (not in NixOS, but pretty easy to build, so inlined deriviation right in flake.nix). Implemented simple fib/fib-let test.
|
2022-07-03 00:50:00 -04:00 |
|
Nathan Braswell
|
ace81e362e
|
Inline array? and len, add PicoLisp fib & fib-let benchmarks
|
2022-07-02 23:49:47 -04:00 |
|
Nathan Braswell
|
07a25c8c59
|
Infer types of full idx expressions now, fix bug with shadowed inlined parameters, inline calls to idx where the type of the indexed expression is fully inferred (array+len) and the idx is a constant. Strong speedups
|
2022-07-02 19:00:20 -04:00 |
|
Nathan Braswell
|
b70e317e75
|
Fixed it! Missed converting the inline call to the inline predicate to use id instead of env. Then exposed and fixed bugs with the inline part of infer types
|
2022-07-02 17:10:16 -04:00 |
|
Nathan Braswell
|
9edfddd09c
|
Partial commit for debugging - almost have (maybe do have?) the type inference working (everything but asserts) good enough for idx, but somewhere inlining got messed up and nothing's inlining.
|
2022-07-02 16:55:12 -04:00 |
|
Nathan Braswell
|
f6b4231fca
|
Bugfix, improve, and thread through infer_types. Need to improve so that it can properly work & re-up through unval-and-eval. Also, will need to track idxs into symbols, I think. Need to continue to investigate how match is translated and that we get all types from it
|
2022-07-02 01:23:14 -04:00 |
|
Nathan Braswell
|
88a87f0760
|
Implement a good bit of the type inference (predicate ops, 'and', and len type inference). Need to implement combine_type_map, and figure out the structural caching
|
2022-06-30 00:59:04 -04:00 |
|
Nathan Braswell
|
4663982f1b
|
Move kraken,scheme,python,cpp fib tests over to koka_bench, add WAVM as a tested compiler backend for the Kraken benchmarks
|
2022-06-28 00:38:37 -04:00 |
|