Skip to content

v1.0.0-rc.2

Pre-release
Pre-release

Choose a tag to compare

@davydog187 davydog187 released this 10 Jun 20:28
· 15 commits to main since this release
32a9ef7

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) — dense 1..n integer keys route to an :array for 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). The os.clock() origin is now seeded in install/1 rather than lazily, so elapsed time measures from a stable startup point (#340).

Fixed

  • deflua/2 guarded heads registered under :when instead of their real name, making them uncallable from Lua (#344).
  • Lua.call_function/3 returns the terse Lua error value, not the terminal render (#336).
  • pcall / xpcall pass the raised value through verbatim and add the §6.1 source: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.0 final.

Full changelog: https://github.com/tv-labs/lua/blob/v1.0.0-rc.2/CHANGELOG.md