Skip to content

v1.0.1

Choose a tag to compare

@dasmig dasmig released this 16 Oct 02:57
· 13 commits to main since this release
bc0fe8f

Faster TSV parsing, identical output. Libraries keep DASMIG_CORE_REQUIRE(1, 0); pick it up with tools/sync-core.sh.

Changed

  • tsv parses plain decimals through an exact fast path (Clinger's): when the significant digits form an integer up to 2^53 and the power of ten is within ±22, one IEEE multiply or divide gives the correctly rounded double. Anything else, and platforms with excess precision (FLT_EVAL_METHOD != 0), use the general parser as before.
  • Why: Emscripten's libc++ has no floating-point from_chars, so every cell went through istringstream and musl's software long double strtod. That was about 45% of the persona WebAssembly module's startup, which drops from 1.4 s to 0.35 s in Node 22.

Output is identical

  • A new test compares the parser with strtod bit for bit on edge cases and 50,000 random decimals.
  • All 4.94 million numeric cells in the nine libraries' data (both tiers) parse to the same bits; 99.99% take the fast path.
  • The persona module built with this core gives the same 850 personas and data hash.