Skip to content

Releases: c-blake/adix

Fix bugs & add tests/wf-alike util/lfreq, util/cstats

14 Jan 21:22
Compare
Choose a tag to compare

Fix div by zero bugs, sequint.add from empty bug, in stat try to document why of SIMD-vectorized routines better and ease actually getting that boost, add stat.range for both min & max in 1-pass.

Track cligen pm=" +- " to just "+-" change in cstats and add it to the nimble install. Also add lfreq to the nimble install. Add cligen dependency for the two utilities.

Signature edits, warning clean-up, utility tweaks, add lfreq

23 Dec 18:50
Compare
Choose a tag to compare

The big patch is a change from z:static[int] to z:static int in signatures. Also a warning clean-up and a couple of tweaks to utilities tests/wf and util/cstats as well as adding util/lfreq which is what mostly motivates the timing of this release.

Cross Nim Portability, cstats, scope fix

08 Dec 19:27
Compare
Choose a tag to compare

Various cross Nim portability work (previewSlimSystem, BadIndex, tcc wf, etc.), Add ad hoc contextual statistics filter cstats, and a minor scope fix in adix/lptabz.nim.

Bug fixes & doc clean ups

14 Oct 12:26
Compare
Choose a tag to compare

Bug fixes are mostly Nim portability Re IndexDefect and lghisto quantiles.

Doc clean-ups are a lot & varied. git log has details.

Bug fixes & minor define-controls

17 Jun 16:05
Compare
Choose a tag to compare

Fix a bad bug of histogramming x instead of unshifted x0 and make
MovingStat work with OrderStats

Guard cligen usage with defined(useCligen) {to make .nimble not lie} and
also introduce -d:portablensort to deactivate Intel-specific PEXT32/64 nsort
optimizations. { Yes, yes..should just auto-detect/cpuid/etc. }

Make a couple test programs nicer.

`del` BREAKING CHANGE + new modules

15 Dec 16:20
Compare
Choose a tag to compare

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.

Rename adix/wstats -> adix/stat

31 Aug 17:06
Compare
Choose a tag to compare

Rename a module to a more general purpose name before much time passes (I already switched from windowed stats terminology to moving stats and the "w" no longer matches); Probably no users yet. ;-)

Also, use the new cligen/strUt.fmtUncertainMerged format. In some strict, technical sense this makes the adix package depend upon cligen, but it is only this one module. So, I am not yet encoding that dep in the nimble file.

Better punch a release for people

27 Aug 13:05
Compare
Choose a tag to compare

Really too many to enumerate; Nevertheless, a short list is:

  • get sequint working.
  • Get B-tree working.
  • Simplify available table choices (bundling many into lptabz.nim, including compact ordered|not, sentinel key|not, etc.).
  • Add several alternative hash functions.
  • Add a bltab robinHood bit-linear probing table (mostly as a cache-friendly alternative to Bloom filters demo/assessment).
  • Fix quite a few bugs.