Commit Graph

92 Commits (11fd5b6cbc19189cef115b03ecec632b7067f68a)

Author SHA1 Message Date
_ 11fd5b6cbc 🚧 wip: always keep at least one stack frame handy
This removes a bunch of unwraps but doesn't make it any faster
2023-10-02 18:20:03 -05:00
_ 66fe54adef remove unused things 2023-10-02 17:55:17 -05:00
_ e11026a553 📈 performance: down to 800 ms / 3.3x by changing PC handling 2023-10-02 17:39:33 -05:00
_ 130330b688 down to 4.2x slower than PUC Lua, but the code became ugly to behold 2023-10-02 16:14:34 -05:00
_ eb32a53d18 🚧 wip: add string interning, but a few things broke 2023-10-02 14:52:38 -05:00
_ 08bbb53900 add StringInterner 2023-10-02 12:27:25 -05:00
_ b9865b7174 🚧 wip 2023-10-02 12:13:54 -05:00
_ 247d6b7a24 test: proving to myself that string interning is a good idea 2023-10-02 11:57:57 -05:00
_ bba98043c7 test: this script revealed the recent bug in call/return 2023-10-02 11:06:08 -05:00
_ 543cf58b1e 📦 build: this isn't needed in the code
There's an env var that's better for flamegraph, and this was in the wrong
place anyway.
2023-10-02 01:03:09 -05:00
_ b88735a61b 🐛 bug: fix a bug in OP_CALL when b or c is 0 2023-10-02 00:59:30 -05:00
_ 8baea40e82 ♻️ refactor: extract `State::eval` for testing bugs the REPL finds 2023-10-01 23:07:52 -05:00
_ f9e8f26ac3 star: add a primitive REPL
This turned out a few new bugs in the VM
2023-10-01 22:50:06 -05:00
_ b8dd59cd7c ♻️ refactor: match the Lua CLI API more closely 2023-10-01 21:26:47 -05:00
_ db84365c27 ♻️ refactor: State owns its Chunk now 2023-10-01 20:31:30 -05:00
_ 700b273a11 test: fix up some bugs to support an embedding example 2023-10-01 19:50:50 -05:00
_ ffb1950f80 ♻️ refactor: split up the VM from the CLI program 2023-10-01 17:56:06 -05:00
_ 51b04be1ab 🐛 bug: PUC Lua says divides always make floats, even int / int 2023-10-01 15:03:37 -05:00
_ eb024eed3e 🚧 wip: only 5.8x slower than PUC, but brittle 2023-10-01 02:46:10 -05:00
_ 5331b5a4d2 ♻️ refactor: mark where we can optimize tables for int keys
n-body actually doesn't need this, it's bottlenecked on string key
reads and writes.
2023-10-01 02:12:17 -05:00
_ 4e9f9a74c5 📝 doc: benchmark results 2023-10-01 02:00:23 -05:00
_ c50c16b9db 🐛 bug: fix io.write and take off the `max_iters` restriction
The math is lining up with PUC Lua and LuaJIT. Now I can actually check
the speed.
2023-10-01 01:36:40 -05:00
_ fb46ede3ca 🐛 bug: fix OP_TEST ignoring `k`
I didn't know what `k` was a few days ago.
2023-10-01 01:33:47 -05:00
_ a9820677e9 🐛 bug: fix some stuff in calling native functions 2023-10-01 01:06:15 -05:00
_ 06638574f7 🔊 improve error message for this error with the missing math lib 2023-09-30 23:41:12 -05:00
_ bccd5fc3a7 Merge remote-tracking branch 'gitea/main' 2023-09-30 10:13:03 -05:00
_ be9cd1e5ac 📝 doc: improve error message 2023-09-30 10:12:31 -05:00
_ d0f9014f03 📝 doc: improve error message 2023-09-30 10:09:37 -05:00
_ ae858ebe70 🐛 bug: patch loader 2023-09-30 10:08:13 -05:00
_ 46cf5837bc 🐛 bug: impl opcodes 2023-09-30 10:05:07 -05:00
_ e59dd85246 🐛 bug: impl opcodes 2023-09-30 10:01:30 -05:00
_ 1943f0a40b 🐛 bug: impl OP_ADDI 2023-09-30 09:57:51 -05:00
_ 81743108c3 🐛 bug: implement OP_MULK 2023-09-30 09:52:42 -05:00
_ 64384e7ca5 🐛 bug: fix loader using the old broken `parse_int` for instruction count 2023-09-30 09:49:36 -05:00
_ 9bfd3c64c3 tests: add failing benchmark
It doesn't even want to load the bytecode lol
2023-09-30 09:48:02 -05:00
_ 15e4832623 remove unused artifacts 2023-09-29 17:46:46 -05:00
_ 57486f7a65 🐛 bug: fma test passes with a hack
So closures are kinda working, but I'm probably missing some edge cases.
2023-09-29 17:44:54 -05:00
_ 2a0e02aec4 test: closure passing again, fma still not 2023-09-29 17:25:54 -05:00
_ 24d576879b make Debug print easier to read 2023-09-29 17:17:53 -05:00
_ 35e62027e6 🐛 bug 2023-09-29 16:58:40 -05:00
_ e499d27dfc 🚧 wip: improving debugging 2023-09-29 16:55:02 -05:00
_ a460b5a932 ♻️ refactor: hoist breakpoints out of State 2023-09-29 16:32:29 -05:00
_ a9e14d0f47 ♻️ refactor: extract a single step method for State 2023-09-29 16:27:50 -05:00
_ f0d4f25cec implement a couple more opcodes fighting the closure issue 2023-09-29 16:15:00 -05:00
_ 4da634a2aa 🚧 wip: working on closures / upvalues 2023-09-28 01:31:23 -05:00
_ 05b1d6e1f7 loading upvalue metadata 2023-09-28 00:55:16 -05:00
_ b639d02027 remove unused file 2023-09-28 00:28:33 -05:00
_ 96c82c27c8 🐛 bug: fix long string loading and int adding
Long strings didn't work before because I hadn't implemented Lua's varint
decoding. It's an easy translation from the original C.

Int adding previously created a float because I always coerced to float.
Also an easy fix.
2023-09-28 00:27:05 -05:00
_ 5649f38698 add OP_LEN and allow telling luac a file name
This make debugging easier, since the bytecodes will match between
a terminal and lunar_wave
2023-09-28 00:11:25 -05:00
_ 565fd19e66 📝 doc: links 2023-09-27 14:13:56 -05:00