Repository navigation
Releases: dasmig/dasmig-core
Releases · dasmig/dasmig-core
Release list
v1.2.0
v1.1.1
v1.1.0
v1.0.2
v1.0.1
Faster TSV parsing, identical output. Libraries keep DASMIG_CORE_REQUIRE(1, 0); pick it up with tools/sync-core.sh.
Changed
tsvparses 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 throughistringstreamand musl's softwarelong doublestrtod. 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
strtodbit 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.
v1.0.0
First stable release. The seven dasmig generator libraries now build on the core, so its output contract is fixed for major version 1: a seed gives the same bits on every supported compiler, standard library and CPU (GCC, Clang with libc++, Apple Clang, MSVC, Emscripten; x86-64 and ARM64), checked by known-answer tests in CI.
Output is identical to 0.3.4. Libraries require it with DASMIG_CORE_REQUIRE(1, 0).
Contents
rng: xoshiro256** seeded through SplitMix64, withsplit(label)/split(index)for independent streams.- Distributions with fully specified algorithms:
uniform_int(Lemire),uniform_real,bernoulli,normal(Marsaglia polar),lognormal,discrete,shuffle,sample_indices,pick; ownexp/logand FMA-proof arithmetic. tsvreader with typed columns andfile:line: columnerrors;layered_tablefor data layers (add / override / replace,disabledrows, all-or-nothing validation,data_hash()).weighted_table,json_writer,seed_signature,utf8,dataset,resources(resource probing and compiled-in data;scripts/embed.py).
Since 0.3.3
layered_tableindexes keys once, in a hash map: loading name-generator's 2.3 million rows went from 2.5 s to 0.67 s in the table, with the same rows, order, hashes and errors (0.3.4).