2024 Releases

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

2024 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”.

2024.1 (in progress)

The first 2024 release is currently in-progress.

This document presents the highlights for this release. The full changelog for this release is available in the Git history and issue/PR milestone.

Significant Changes

2024.1 brings substantial changes to LensKit.

  • PyTorch. LensKit now uses PyTorch to implement most of its algorithms, instead of Numba-accelerated NumPy code. Algorithms using PyTorch are:

  • Many LensKit components (batch running, model training, etc.) now report progress with progress_api, and can be connected to TQDM or Enlighten.

New Features (incremental)

  • 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.

Bug Fixes

Dependencies and Maintenance

  • Bumped minimum supported dependencies as per SPEC0 (Python 3.10, NumPy 1.23, Pandas 1.5, SciPy 1.9).

  • 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 in favor of seedbank (⛙ 351).

  • Code is now auto-formatted with Ruff.