Update README.md

This commit is contained in:
Mid 2025-09-03 01:03:52 +03:00
parent 0165980111
commit 8afa09cbf0

View File

@ -2,12 +2,21 @@
This is an attempt to create a Lua virtual machine capable of true multithreading. Once the nctref compiler matures enough, I intend to plug it into Impotent as a JIT. This is an attempt to create a Lua virtual machine capable of true multithreading. Once the nctref compiler matures enough, I intend to plug it into Impotent as a JIT.
Completed features:
1. Per-thread heap /w special heap for exited threads called the "dead heap"
2. Naive mark & sweep GC
3. Thread-safe user interface (but barely tested)
Impotent is still work-in-progress: Impotent is still work-in-progress:
1. Integers are 32-bit only 1. Integers are 32-bit only
2. No error handling, meaning any mistake will either crash the VM or make it silently fail 2. No error handling, meaning any mistake will either crash the VM or make it silently fail
3. No standard library other than `print` 3. The only standard library is `print` and it doesn't work correctly
4. Tables cannot be resized 4. Tables cannot be resized
5. Most operators are missing 5. Most operators are still missing
6. Integers and floats are always separate table keys (unlike real Lua where e.g. `5` and `5.0` are considered identical) 6. The user API is completely different from that of PoC Lua
7. The GC isn't real and everything leaks
Impotent requires C11 and an architecture with 8-byte atomic operations, but otherwise it is completely cross-platform.
Performance-wise, it's surprisingly competitive with PoC Lua, considering how quickly it was made up to the point of writing this README (~2 weeks). By far the worst bottleneck is the GC, since it requires all threads and their heaps to synchronize.