Mon, 02 Mar 2020

RcppAnnoy 0.0.15

annoy image

A few days ago, a new release 0.0.15 of RcppAnnoy got onto CRAN while I was traveling / attending the wonderful celebRtion 2020 for the 20th anniversary of the R 1.0.0 release.

RcppAnnoy is the Rcpp-based R integration of the nifty Annoy library by Erik Bernhardsson. Annoy is a small and lightweight C++ template header library for very fast approximate nearest neighbours—originally developed to drive the famous Spotify music discovery algorithm.

This releases makes great strides towards avoiding long-standing SAN/UBSAN issues. Upstream author Erik has been most helpful, as has been the feedback and input from two downstream users of RcppAnnoy, namely Aaron and James. This 0.0.15 release addresses one key, and longstanding, SAN/UBSAN issue. It is actually rather tricky as the code, for efficiency reason, bounces at the edge of what can be done. But a small rearrangement suppresses one such message which is good. We also got a hint from CRAN (thanks for that as always) to re-read one section of Writing R Extensions to make alloca more portable so that Solaris does not have to cry, and Bill Venables kindly helped with a small correction to the docs.

The other important issue is that there will be another 0.0.16 release real soon to incorporate three more small upstream PRs driven by these discussions which kept going on post-release while I was conferencing (or traveling), and which should fix things for good, or so we hope. This should go out probably by the end of the week to not exceed a weekly upload cadence; if you want to see more, or get earlier access, see the git repo which is in fine shape. If you want to see a pre-release on the ghrr drat drop me a line.

Detailed changes follow below.

Changes in version 0.0.15 (2020-02-25)

  • RcppAnnoy synchronized with upstream PR 455 (Dirk in #55).

  • The help page has a small correction thanks to Bill1 Venables.

  • The alloca() function is now declared portably thanks to a working example in Writing R Extensions.

Courtesy of CRANberries, there is also a diffstat report for this release.

If you like this or other open-source work I do, you can now sponsor me at GitHub. For the first year, GitHub will match your contributions.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.

/code/rcpp | permanent link