Release 1.2

The Mercurial changelog and the list of closed tickets provide more information on what has happened, including bugs that have been fixed.

  • Added LenskitConfiguration class and deprecated LenskitRecommenderEngineFactory. Use LenskitRecommenderEngine.build() to build an engine from a configuration.
  • Added PreferenceDomainBuilder to build preference domains.
  • PreferenceDomain now uses a precision of 0 to represent continuous scales (#327); the value is still formally undefined behavior, but code which (incorrectly) depended on the precision when a domain does not have a precision may need to be corrected.
  • Implemented new lenskit-groovy module to load LensKit configurations from Groovy-based configuration files. See the config package JavaDoc for information on how to use this support.
  • SparseVector performance improvements, particularly for dot products.
    • Sparse vectors now expose Pointers over their entries directly, allowing pointer-based access more efficiently than with IteratorPointer.
    • Pairwise iteration in Vectors uses direct pointers.
    • Dot products now use pairs of pointers directly, rather than indirectly using pairwise iteration.