Skip to content

v1.0.0

Choose a tag to compare

@dasmig dasmig released this 12 Oct 16:12
· 15 commits to main since this release

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, with split(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; own exp/log and FMA-proof arithmetic.
  • tsv reader with typed columns and file:line: column errors; layered_table for data layers (add / override / replace, disabled rows, 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_table indexes 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).