Commit Graph

1208 Commits

Author SHA1 Message Date
miloignis ad3c251ba9 implement non-varidic and/or and start porting match. Need to make and/or varidac and continue match work 2023-02-13 01:08:34 -05:00
miloignis 3df7d6e0ec Finish converting into individual tests (mostly) - might need to split out and uncomment some should-fail tests 2023-02-13 00:42:54 -05:00
miloignis e9b8f636cf Start splitting out the tests into multiples, with the library code at top level in once_cell's Lazy 2023-02-12 16:16:59 -05:00
miloignis 5838cf0bdd Added 'assert', and changed match_params to assert that when the param tree is nil so are the passed params, which should handle exact length for functions etc.
Added unwrap, lapply, array, the Y combinator, and rlambda. Y and rlambda were almost verbatim copies from old Kraken, with a change for how variadic functions are declared ( '( & args )' vs 'args' ) and a name change.
2023-02-12 13:30:45 -05:00
miloignis 5512ab8804 Fix warnings, add destructuring let1 2023-02-12 12:19:56 -05:00
miloignis 30964bf4ec Better BVAU, which does full trees-of-symbols destructuring with varidic support! 2023-02-12 11:56:32 -05:00
miloignis 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
miloignis 1b813e39fb Fix vapply bug, write vmap, add debug 2023-02-10 23:05:08 -05:00
miloignis 606972a38b Implement vapply, got around the ever-growing environment 2023-02-10 22:34:04 -05:00
miloignis 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
miloignis 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
miloignis 3b5cc2c506 Implement a new style of let1 based on direct env manipulation 2023-02-09 01:20:19 -05:00
miloignis 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
miloignis d861d91397 Fix ', add if and = along with bools 2023-02-08 01:54:53 -05:00
miloignis c801f604c2 Add derived combiners and fix some bugs with eval, vau, quote, cons, car, cdr 2023-02-07 13:00:15 -05:00
miloignis 60dad101f8 Speed sketch beginnings of a Rust implementation of new stripped-down Scheme-like Kraken 2023-02-07 02:07:53 -05:00
miloignis 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
miloignis 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
miloignis a038a8cebf Ensure proper env care during memo short circuiting 2023-01-31 22:54:53 -05:00
miloignis 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
miloignis 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
miloignis 7f9f419a23 Remove rest of comb rec_hash tracking 2023-01-22 00:41:29 -05:00
miloignis 5a4cb4b40b Cleanup, remove some of the rec_hashes 2023-01-22 00:07:39 -05:00
miloignis dff6730dd9 Got partial-eval during compile working 2023-01-21 17:55:55 -05:00
miloignis 0ed097b5b0 mix old and unstable 2023-01-16 22:14:41 -05:00
miloignis 95f6dd867c Koka needs old emscripten sigh 2023-01-16 19:01:50 -05:00
miloignis 94ae60f9d1 Merge branch 'master' of github.com:Limvot/kraken 2023-01-16 18:55:54 -05:00
miloignis b2f0b5f1dd Notes on todo 2023-01-16 18:55:52 -05:00
miloignis 18b901b2f1 Start version experiments to narrow down if Koka or Emscripten is the problem 2023-01-16 18:54:34 -05:00
miloignis 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