v1.0.0-rc.2
Pre-release
Pre-release
The third release candidate for 1.0.0. Builds on rc.1 with a major table-storage performance win, two non-standard os epoch helpers, and a batch of protected-call / error-value correctness fixes that align pcall / xpcall and Lua.call_function/3 with Lua 5.3 §6.1. The public API is unchanged from rc.1.
Performance
- Split-storage tables (Erlang
:array+ map) — dense1..ninteger keys route to an:arrayfor O(1) functional read/write; other key types stay in the hash map. Table-heavy workloads improve 28–37% at n=1000 (Build −36%, Iterate/Sum −36%, Map+Reduce −37%, Sort −28%) and now beat Luerl on Build/Iterate/Map+Reduce (#328).
Added
os.time_ms()/os.time_us()— non-standard epoch helpers for sub-second precision (os.time()unchanged). Theos.clock()origin is now seeded ininstall/1rather than lazily, so elapsed time measures from a stable startup point (#340).
Fixed
deflua/2guarded heads registered under:wheninstead of their real name, making them uncallable from Lua (#344).Lua.call_function/3returns the terse Lua error value, not the terminal render (#336).pcall/xpcallpass the raised value through verbatim and add the §6.1source:line:prefix (#334).- Protected calls no longer roll back heap effects on error (#331).
Known issues
- Deep recursion remains ~25% slower than rc.0 (carried forward from rc.1; per-call depth bookkeeping). To be addressed before
1.0.0final.
Full changelog: https://github.com/tv-labs/lua/blob/v1.0.0-rc.2/CHANGELOG.md