Skip to content

Latest commit

 

History

History
256 lines (210 loc) · 12.3 KB

File metadata and controls

256 lines (210 loc) · 12.3 KB

2026 Releases

2026 builds on the foundation of :ref:`2025 <2025>` to improve the ergonomics of data access, querying, and metrics, and clean up some APIs that seemed good at the time, while making it even easier to use LensKit for recommendation scenarios besides ID-based personalized recommendation.

There are no new major paradigm shifts, though — pipelines, datasets, and components work as they do in the 2025 series, but with more features, some rough corners polished off the interfaces, and hopefully fewer bugs.

2026.3.0

Third release in 2026, with more feature updates and bug fixes. A full list of fixed issues and merged PRs is on milestone 2026.3.

Important

This release updates :meth:`lenskit.data.DatasetBuilder.filter_interactions` to explicitly and consistently handle time zones, independent of the local time zone. In some cases, such as filtering by a numeric timestamp, the previous code was (incorrectly) time-zone-dependent.

2026.2.1

Bug-fix release (with one very small feature).

2026.2.0

Second release in the 2026 series, bringing a few smaller feature updates:

PRs and issues are listed in milestone 2026.2.

2026.1.0

This is the first major feature and update release of the 2026 series! Key highlights:

  • The :class:`~lenskit.training.Trainable` protocol now has a method to query whether a model has been trained, instead of relying on every trainable to correctly implement skip-on-retrain logic.
  • Batch inference inputs are simplified and more explicit.
  • Cleanup of several deprecated interfaces, and simplifying the public module hierarchy.
  • Dependency updates with SPEC0.
  • FlexMF is nearing stability, and will be stabilized in an upcoming 2026.x point release. It also supports LightGCN.
  • Updated default embedding sizes to a power of 2 (64) throughout LensKit.
  • Improved metric interface to better support complex metric aggregations. Some automatic aggregation and analysis is no longer supported or will soon be removed (:class:`~lenskit.metrics.RunAnalysis` is deprecated), in favor of clear metric collection within a single run and letting the user aggregate and summarize in whatever tool they prefer.

Additional changes are described here. See the milestone GitHub release for further change-level details.

Breaking Changes

Major Breaking Changes

These are the major changes that will affect users who are writing code to generate recommendations with LensKit, or implementing recommendation components.

Other Breaking Changes

These changes are more minor, and won't directly affect most users who are using LensKit components and metrics as-is.

New Features

Performance Changes

Minor Changes

  • :func:`lenskit.metrics.call_metric` has been renamed to :func:`~lenskit.metrics.measure_list`, and the old name preserved as a deprecated alias.
  • Pipeline type-checking for ArrayLike component inputs no longer works, due to a breaking change in NumPy 2.4. No LensKit components used ArrayLike as an input or output data type.
  • Pipeline component inputs with default values can now have missing inputs (:issue:`1000`, :pr:`1001`).
  • Rust progress updates now use a background thread to simplify logic and keep locks out of the work path (:pr:`1008`).
  • Fixed a bug saving item list collections of emtpy item lists to Parquet files (:issue:`1051`, :pr:`1052`).