Releases: lenskit/lkpy
First 2026 release
I'm pleased to announce the first 2026 release, 2026.1.0! This mostly follows in the changes of the 2025 release series, with a few cleanups of old or deprecated APIs and an improvement to the training interface.
Users implementing their own components should pay attention to the Trainable changes, although components implementing UsesTrainer are unchanged. The old IterativeTraining interface is gone in favor of UsesTrainer.
The metric interfaces are also simplified; this will mostly affect users implementing their own metrics. The metric aggregation support is overhauled, which will affect all users; RunAnalysis still exists, but is deprecated, in favor of MeasurementCollector.
See the release notes and documentation for full details: https://lenskit.github.io/lenskit-docs/stable/releases/2026.html
As always, feedback is very welcome in the form of discussions, bug reports, pull requests, or even e-mails.
Pre-release for LensKit 2026.1
LensKit 2026.1 is coming very quickly! This is an initial pre-release to get things moving.
Add SLIM
This adds SLIM (and fsSLIM) to lenskit.knn.
Add EASE + LightGCN
Backport release to add EASE and the FlexMF LightGCN to the 2025 release series.
What's Changed
- Backport progress bar threads to 2025.x series by @mdekstrand in #1009
- Backport co-occurrance speedups to 2025. by @mdekstrand in #1010
- Backport EASE to 2025 release series by @mdekstrand in #1015
- Backport LightGCN to the 2025 release series by @mdekstrand in #1046
Full Changelog: v2025.6.3...v2025.7.0
Adding EASE
Beta release with the EASE scorer.
Small fix - NumPy compat and LightGCN eval mode
This is a small bugfix / cleanup / compat fix for LensKit 2025.6.
What's Changed
- Remove tests that break with NumPy 2.4 ArrayLike changes by @mdekstrand in #977
- Put LightGCN in eval mode after training (2025) by @mdekstrand in #975
- Drop failing x86 wheel builds (2025) by @mdekstrand in #979
Full Changelog: v2025.6.2...v2025.6.3
NDCG bugfix with missing data
Fixes a bug where NDCG would divide by zero when there are no test items for the user.
What's Changed
- Resolves #956: Fix NDCG ZeroDivisionError by @samiravaez in #957
- Add E-R diagram to illustrate the data model by @mdekstrand in #962
Full Changelog: v2025.6.1...v2025.6.2
Bug + missing feature update for 2025.6
This is a quick bug-fix and missing-feature release for 2025.6.
6th 2025 Improvement
Another feature release for 2025, with some bug fixes as well.
See the release notes for user-friendly details.
What's Changed
- Update PyArrow to 22.x by @mdekstrand in #914
- Build Conda packages on MacOS Intel by @mdekstrand in #913
- Update locked dependencies and support Python 3.14 by @mdekstrand in #915
- CI build and test coverage updates by @mdekstrand in #919
- FA*IR: bug fixes and test updates by @samiravaez in #918
- ItemKNN: return neighbor counts + disable scoring parallelism by @mdekstrand in #922
- Add
rank_biased_precisionfunction that takes explicit weights by @sushobhan2024 in #923 - Add unified object representation function and more str/repr implementations by @mdekstrand in #924
- De-flake the stochastic tests by @mdekstrand in #925
- Add Bash-based CLI tests by @mdekstrand in #926
- Add concat and merge operations to ItemList by @mdekstrand in #927
- Reduce test burden for PyTorch-optimized components by @mdekstrand in #928
- Add initial support for session-based recommendation by @mdekstrand in #929
- Add
cat_matrixtoAttributeSetby @sushobhan2024 in #912 - FAIR: select protected items when they are ranked before unprotected items by @samiravaez in #939
- Add additional support and tests for generating session recommendations by @mdekstrand in #945
- Add co_occurrence method to relationships by @mdekstrand in #950
Full Changelog: v2025.5.0...v2025.6.0
Fifth improvement release
Some small renames and updates, along with entropy functions. Finalized a couple weeks ago but not released.
What's Changed
- Rename rank metric
karguments tonby @mdekstrand in #902 - Rename MetricAccumulator to MeasurementCollector by @mdekstrand in #906
- Add entropy and rank biased entropy by @sushobhan2024 in #890
- Add Rust test coverage support and clean up test CI by @mdekstrand in #909
Full Changelog: v2025.4.0...v2025.5.0