diff --git a/README.md b/README.md index 1e59f5e..e56b942 100644 --- a/README.md +++ b/README.md @@ -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. +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: 1. Integers are 32-bit only 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 -5. Most operators are missing -6. Integers and floats are always separate table keys (unlike real Lua where e.g. `5` and `5.0` are considered identical) -7. The GC isn't real and everything leaks +5. Most operators are still missing +6. The user API is completely different from that of PoC Lua + +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.