2025 Releases#

The 2025 release series is currently in development. No specific release date is set yet.

2025 will bring breaking changes to several LensKit APIs to improve ergonomics, correctness-by-default, and flexibility. It also adopts SPEC0, a standard for supported versions of scientific Python libraries, and changes the LensKit version number scheme to “SemCalVer”. See Migrating from LensKit 0.x for information on how to upgrade your code.

2025.1 (in progress)#

The first 2025 release is currently in-progress.

The changes in this release are too numerous and fundamental to fully document in traditional release notes. See the following for release update documentation:

  • Migrating from LensKit 0.x for conceptual changes and how to upgrade your code.

  • The notes below for behavior changes (e.g. new defaults, new metric capabilities), and small bits not covered in the migration guide.

  • The full changelog in the Git history and issue/PR milestone.

Breaking Changes#

LensKit 2025 has many breaking changes, with the migration guide (Migrating from LensKit 0.x) documenting the major ones. Below are some smaller ones not covered by that document:

  • Where Pandas data frames are still used, the standard user and item columns have been renamed to user_id and item_id respectively, with user_num and item_num for 0-based user and item numbers. This is to remove ambiguity about how users and items are being referenced.

  • LensKit no longer has top-level exports (and is now in fact a namespace package). Classes and functions must be imported from appropriate subpackages.

  • The Popular recommender has been removed in favor of PopScore.

  • The DCG metric has been removed, as it is basically never used and was not useful as a part of the NDCG implementation.

New Features (incremental)#

  • Many LensKit components (batch running, model training, etc.) now report progress the progress API in lenskit.logging.progress, and can be connected to TQDM or Rich.

  • Added RBP top-N metric (⛙ 334).

  • Added command-line tool to fetch datasets (⛙ 347).

Model Behavior Changes#

Most models will exhibit some changes, hopefully mostly in performance, due to moving to PyTorch. There are some deliberate behavior changes in this new version, however, documented here.

  • ALS models only use Cholesky decomposition (previously selected with the erroneously-named method="lu" option); conjugate gradient and coordinate descent are no longer available. Cholesky decomposition is faster on PyTorch than it was with Numba, and is easier to maintain.

  • The default minimum similarity for UserUser is now \(10^{-6}\).

  • k-NN algorithms no longer support negative similarities; min_sim is clamped to be at least the smallest normal in 32-bit floating point (\(1.75 \times 10^{-38}\)).

  • The implicit bridge algorithms no longer look at rating values when they are present.

  • Bias is no longer optional for BiasedMFScorer and FunkSVD; both are inherently biased models, and FunkSVD is not commonly used.

Bug Fixes#

Dependencies and Maintenance#

  • Bumped minimum supported dependencies as per SPEC0 (Python 3.11, NumPy 1.24, Pandas 2.0, SciPy 1.10).

  • Added support for Pandas 2 (⛙ 364) and Python 3.12.

  • Improved Apple testing to include vanilla Python and Apple Silicon (⛙ 366).

  • Updated build environment, dependency setup, taskrunning, and CI to more consistent and maintainable.

  • Removed legacy random code and SeedBank usage in favor of SPEC 7 (see Random Seeds).

  • Code is now auto-formatted with Ruff.