Nathan Braswell
|
31ee20be7b
|
Implemented wasm eval and fixed slice
|
2022-03-13 22:56:04 -04:00 |
|
Nathan Braswell
|
1b220023bc
|
Fix cond to not die on guarded errors, implement a new if in macro-style, port some more over to_compile.kp. Stopped just before 'vau, which seems to loop forever or somesuch
|
2022-03-13 15:11:30 -04:00 |
|
Nathan Braswell
|
947d854ebb
|
Implement array functions (len idx slice concat) for strings in wasm versions. All work - note I think slice is broken (or at least exposes brokenness) for arrays (not the newly adding strings)!
|
2022-03-13 01:44:38 -05:00 |
|
Nathan Braswell
|
d1b6e520f9
|
Added support for strings to array functions for evaluator (compiled is next)
|
2022-03-12 20:19:00 -05:00 |
|
Nathan Braswell
|
d87f292c1c
|
Additional optimization using intset for env_stack, some small bugfixes regarding not making a marked_array out of components that errored, moved over a lot of code to to_compile.kp.
|
2022-03-10 01:06:44 -05:00 |
|
Nathan Braswell
|
a08415e1e6
|
Cleanup & some demo code for presentation
|
2022-03-08 15:55:59 -05:00 |
|
Nathan Braswell
|
7fed3a58f5
|
Added more to to_compile.kp and runtime started growing again - main bottleneck was the silly using lists as sets thing, changed the small-int uses of these to a new custom bitset and brought the time from 47s back down to 6s. There is a remaining hotspot where partial_eval_helper matches needed_for_progress vs the bitset, but that'll have to wait for tomorrow. Thinking of maintaining a env_stack bitset and adding a bitset_union_nonempty function. Note the new bitset does use some cons/car/cdr operations that'll be a bit different in Kraken, which I'll need to look at. Maybe when porting I can just use indexing if there's not a great way to unify them.
|
2022-03-08 02:54:26 -05:00 |
|
Nathan Braswell
|
90fe8e1bfa
|
Bunch of optimization that took us from 3:50 to 0:04 for the current to_compile.kp. Mainly pulling len out of hot loops and using a naive binary tree instead of alists for maps
|
2022-03-07 02:10:42 -05:00 |
|
Nathan Braswell
|
c8c9bba429
|
Have nodes carry around information about the additional non-real envs that aren't real because of a non-real env in their chain. These envs don't show up in needed partial idxs, since it's the up the chain env that actually needs progressing, but allow us to do check-for-env-id normally in essentially O(1). This made the function much more efficient by number of invocations and cut some of the other hottest functions by nearly an order of magnitude, but only took 15-20 seconds off of a 4 minute compile. This is unfortunate (Chez profile only shows invocation numbers, not time numbers, so this is hard to tell) but at least this part is better now.
|
2022-03-06 03:22:35 -05:00 |
|
Nathan Braswell
|
8cdf41826b
|
Starting to port over & self-host!
|
2022-03-03 00:33:25 -05:00 |
|
Nathan Braswell
|
4a273c9ba2
|
Bigfix error infinite recursion, error printing, wrap_level not being in hash_comb, extend to_compile.kp a bit
|
2022-03-02 01:44:20 -05:00 |
|
Nathan Braswell
|
dd0463d059
|
Comment out generated debugging and other log based code for large speedup - tried several other optimizations but they counterintitively made things worse
|
2022-02-28 23:47:02 -05:00 |
|
Nathan Braswell
|
3f26a3ad7d
|
Finish porting mif and fixing up other inconsistancies. Fix bug for emitting signed numbers as hex in compile. Runs correctly in both Chez and Chicken interpreter now, which Chez being about 3x faster
|
2022-02-28 00:27:19 -05:00 |
|
Nathan Braswell
|
ea15f48d6f
|
Implement dlambda and correct dlet. More attempt at Gambit
|
2022-02-23 16:43:03 -05:00 |
|
Nathan Braswell
|
54097ac074
|
Port the let+ macro from http://www.phyast.pitt.edu/~micheles/scheme/scheme15.html over mostly, and it works in both Chez and Chicken! Will massage some more to get it to be the same as our previous dlet, but it is working!
|
2022-02-23 00:56:46 -05:00 |
|
Nathan Braswell
|
f8bab2ada5
|
I caught the Chicken compiler red handed, it's compiled version has zip change behavior part way through, caught in the act with some prints. Where it does so changes based on optimization level, which is a bad sign. Starting a (hopfully quick) port to more standard scheme - looking to support Chez and Gambit in addition to Chicken, with at least some commented out code if not some sort of conditional compilation. We're off to a roaring start with define-syntax broken in Gambit 4.9.3, from 2019, but there was a new version released last month that I think should fix it.
|
2022-02-22 02:19:17 -05:00 |
|