Skip to content

`del` BREAKING CHANGE + new modules

Compare
Choose a tag to compare
@c-blake c-blake released this 15 Dec 16:20
· 181 commits to master since this release

There is a breaking change here. To be more drop-in semantically for the std/(tables|sets) world, lptabz.del & ditab.del no longer raise on missing keys. (Use missingOrExcl not exceptions if you want to test for that.) Sorry for the breaking change but cross/drop-in compatibility seems more important than backward compatibility at this stage of (guessed) user base. I must have not looked carefully at std/tables.del. Apologies.

Other changes:

  • Speed-up adix/stat a bit. (backend C compilers need to at least ignore gcc __attribute__ ...).
  • btree.add parameter order change to default queue discipline
  • Rename bist -> Bist for general Nim convention consistency.
  • New Bist-based module lghisto that is an alternative to things like tDigest but supports efficient tunable approximations to moving quantiles (where data changes point-by-point).
  • New module cumsum for SIMD-optimized cumulative summation (sometimes called running sums or parallel prefix sum).
  • New module nsort which does a optimized radix sort. I think the "bit level digit plan" using Intel's parallel bit extraction instruction may be a novel optimization or at least application of PEXT. (Byte level analogues probably date to early IBM sorting card research, though.) Bit-level should be great for things like float32 keys with data sets of similar order of magnitude keys probably being 2-pass. There are other standard optimizations in there, too. Read the module top.