digest creates hash digests of arbitrary R objects (using the
spookyhash algorithms) permitting easy comparison of R language objects. It is a fairly widely-used package (currently listed at 889k monthly downloads with 255 direct reverse dependencies and 7340 indirect reverse dependencies) as many tasks may involve caching of objects for which it provides convenient general-purpose hash key generation.
This release is a one issue fix. Aaron Lun noticed some issues when
spookyhash is used in streaming mode. Kendon Bell, who also contributed
spookyhash quickly found the issue which is a simple oversight. This was worth addressing in new release, so I pushed 0.6.25.
RcppSimdJson wraps the fantastic simdjson library by Daniel Lemire which truly impressive. Via some very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in persing gigabytes of JSON parsed per second which is quite mindboggling. I highly recommend the video of the recent talk by Daniel Lemire at QCon (which was also voted best talk). The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle use per byte parsed.
This release syncs the simdjson headers with upstream, and polishes the build a little by conditioning on actually having a C++17 compiler rather than just suggesting it. The NEWS entry follows.
Changes in version 0.0.2 (2020-02-21)
The R side of
validateJSONnow globs the file argument, expanding symbols like
C++ code in
validateJSONnow conditional on C++17 allowing (incomplete) compilation on lesser systems.
New helper function returning value of
__cplusplusmacro, used in package startup to warn if insufficient compiler used.