Skip to content

v9.4.0 released

Choose a tag to compare

@funlang funlang released this 17 Oct 12:40
· 59 commits to main since this release
Fun 9.4.0

Performance and hot-path release.

Highlights since v9.3.4:

- Scalar values stay out of the Variant RTL: comparison and logical
  operators write varBoolean directly, scalar assignment fast-paths
  Boolean/Double as well as Integer, and CCtwo no longer builds a temporary
  CValue while keeping recursive re-entry safe.
- Integer div/mod gain guarded fast paths. Zero divisors and
  Low(Integer) div/mod -1 still fall through to the Variant RTL, preserving
  the existing exception behavior. On the shipped benchmark, 1>2 drops from
  about 193 to 130 ns/iteration, if 1>2 from about 166 to 130 ns, not 1>2
  from about 343 to 196 ns, and 7 div 3 roughly halves.
- Arithmetic fast paths are enabled on Linux x86_64; x/0 still raises on
  AArch64, and the CalcOpt fallback checks the divisor.
- More hot-path trimming for compare, assignment, and string concat.
- AArch64 assembler coverage: cmn, sp-relative access, imm12 boundary, and
  the bl label call.
- The HTTP server/client stack and the variadic getapi mark are included;
  funcmd reports the missing script by name.
- linux-arm64 snapshot and lib-asm-a64 test enabled; CI keeps the full diff
  in failure annotations.
- New calc-fastpath regression covers Boolean results, scalar copies, and
  integer div/mod edge cases.

Verified by the five-platform regression workflow:
https://github.com/funlang/fun/actions/runs/39031232338

Full list: CHANGELOG.md / CHANGELOG.zh.md.