Releases: lift/framework
Lift Framework 4.0.0-M4
We are pleased to announce the release of Lift 4.0.0-M4. This release is the first for which tests cross-compile and pass in Scala 2.13 and Scala 3. This release also includes an updated version of json4s that includes a number of bug fixes designed to improve parity between lift-json behaviors and json4s behaviors.
What's Changed
- doc: update support doc for 2025 by @farmdawgnation in #2035
- Improvements I think we should include in Lift-4.0 by @andreak in #2044
- Lift 4.0 by @farmdawgnation in #2043
- feat: Scala 3 test cross-compilation for lift-common/actor/util/testkit by @farmdawgnation in #2045
- Updated sbt and dependencies. by @andreak in #2046
- Updated json4s to latest version which contain relevant fixes. by @andreak in #2048
Full Changelog: 4.0.0-M3-release...4.0.0-M4-release
Lift 4.0.0-M3
We are pleased to announce the availability of Lift 4.0.0-M3. This is the first milestone build for Lift 4.0.0 that cross-builds for both Scala 2.13 and Scala 3 LTS with a fully passing test suite in Scala 2.13 across all supported JVM versions.
Breaking Changes
A number of breaking changes are included in this milestone in order to facilitate cross-building between Scala 2 and Scala 3. Particularly impactful changes are going to be called out in these release notes, but there may be smaller breaking changes that we didn't expect. Please report any issues using this build that occurred since using Lift 4.0.0-M2.
Removal of lift-json
This one is bittersweet. I cut my teeth on the Scala 2 type system heavily on contributing to Lift JSON. I'm still insanely proud of what we were able to accomplish with that library. When it was in active development I will still contend that, at the time, it was the best JSON library for Scala. However, as the Lift Committers have had busy lives other solutions continued marching forward and improving.
With Lift 4.0.0-M3 we've fully removed lift-json and replaced it with json4s. Json4s was originally forked from lift-json, so the work to migrate to it made a lot more sense than trying to get lift-json caught up on all the changes required to build under Scala 3. There are some small differences in how json4s handles fields in objects, but by and large the public API is the same.
Most of the time replacing your imports with the json4s equivalents will be enough:
import org.json4s._
import org.json4s.native._We went through the process of migrating all other Lift components to using json4s in the associated pull request, so you can take a look at that if you need to see how we fixed a particular part of the migration.
Structural Types Removed
Scala 3 doesn't support structural types. In order to support cross building we've removed them from the API across all modules that were using them. Where possible we replaced these with specific classes. Where that wasn't possible we do have some use of Any. We welcome any contributions to improve that further in these milestones.
Method Renames, removals
Some notable method renames and removals occurred:
- lift-markdown: The
inlinemethod was renamedinlineParserto avoid collision with theinlinekeyword - lift-util: Remove
SourceInfoas it was tightly coupled to Scala 2 reflection. - lift-util: Remove deprecated
TimeHelpersimplicit conversions
Status of Tests
- Test build and pass for all modules for Scala 2.13
- Lift WebKit tests additionally build and pass for Scala 2+3.
- Other modules do not build tests for Scala 3 yet.
Call for Help
Please please please take this out for a spin and let us know what you find. These changes certainly had unintended consequences and we would love to be able to enumerate or fix those for the final Lift 4.0 release.
Credit where due
My personal life is full. I want to note that getting this done and getting caught up on all the changes with Scala 3 since I've been inactive in the community wouldn't be possible without Claude Code.
What's Changed
- feat(lift-json)!: Prepare for scala 3 with type extractor by @farmdawgnation in #2030
- feat(lift-common)!: scala 3 support by @farmdawgnation in #2031
- Configurable LAPinger.service by @andreak in #2002
- feat(lift-actor)!: support scala 3 by @farmdawgnation in #2033
- feat(lift-markdown)!: cross compile for scala 3 by @farmdawgnation in #2034
- feat!: migrate from lift-json to json4s by @farmdawgnation in #2038
- feat(lift-util)!: add support for Scala 3 cross build by @farmdawgnation in #2039
- feat(lift-testkit): working Scala 3 build by @farmdawgnation in #2040
- Lift WebKit Building and Passing Tests in Scala 3 by @farmdawgnation in #2041
Full Changelog: 4.0.0-M2-release...4.0.0-M3-release
Lift 4.0.0-M2
The Lift Committers are pleased to announce the release of Lift 4.0.0-M2 on July 19th, 2025. This release does include breaking changes.
What's Changed
- Remove the persistence components by @farmdawgnation in #2020
- Remove squeryl and JSON scala combinators parser by @fanf in #2026
- Build and Readme Updates for Lift 4.x by @farmdawgnation in #2024
- Correct URL to Lift site in README by @aredridel in #2028
- Lift-4: remove simple warnings by @fanf in #2027
- Msf/cicdwork by @farmdawgnation in #2025
New Contributors
- @fanf made their first contribution in #2026
- @aredridel made their first contribution in #2028
Full Changelog: 4.0.0-M1-release...4.0.0-M2-release
Lift 4.0.0-M1
The Lift Committers are pleased to announce the release of Lift 4.0.0-M1 on September 2nd, 2024. This is the first release of the Lift 4.0 series, which will be a stepping-stone release to Lift 5.0 which will include a host of breaking changes. This release does include breaking changes.
Breaking Changes
Per ongoing conversations around slimming down the Lift Framework, the Lift Persistence framework will not be included in the Lift 4.0 release. Before upgrading to Lift 4, you should migrate to a persistence solution not based on the lift-persistence set of dependencies.
What's Changed
- bump sbt version by @lvitaly in #2000
- Signing contributors list by @pabloazul in #2018
- Lift jetty11 by @pabloazul in #2017
- Update docs, config for Java 11 minimum version by @farmdawgnation in #2019
New Contributors
- @pabloazul made their first contribution in #2018
Full Changelog: 3.5.0-release...4.0.0-M1-release
Lift Framework 3.5.0
The Lift Committers are pleased to announce the release of Lift 3.5.0 on October 8th, 2021. This is the first release since 2019 due to the lives of the maintainers being pretty busy what with a whole global pandemic and small children, but we're happy to announce it's here nonetheless.
Changes
Below is a list of changes since Lift 3.4.2 organized by the type of change and sorted by the PR number.
Deprecations
- As of this release squeryl-record is considered deprecated. This doesn't have a maintainer and has proven challenging to get up and running for 2.13. The preferred path moving forward is that folks use Mapper unless we get an active maintainer willing to upgrade squeryl-record.
New Features
- The documentation-helpers and json-scalaz7 are now built for 2.13. This means that the last remaining module in the framework not supporting 2.13 is squeryl-record. (#1988)
- Implementation of Same Site Cookie Support. Thanks to @csaltos. (#1989)
- Ability to provide a custom executor service to the
Schedulehelper. Thanks to @andreak. (#1993)
Bug Fixes
- Fixed FutureWithSession not appearing in the 2.13 builds. (#1992)
Lift Framework 3.5.0-RC1
The Lift Committers are pleased to announce the release of Lift 3.5.0-RC1 on August 23nd, 2021. This is the first release candidate since 2019 due to the lives of the maintainers being pretty busy what with a whole global pandemic and small children, but we're happy to announce it's here nonetheless.
Changes
Below is a list of changes since Lift 3.4.2 organized by the type of change and sorted by the PR number.
Deprecations
- As of this release squeryl-record is considered deprecated. This doesn't have a maintainer and has proven challenging to get up and running for 2.13. The preferred path moving forward is that folks use Mapper unless we get an active maintainer willing to upgrade squeryl-record.
New Features
- The documentation-helpers and json-scalaz7 are now built for 2.13. This means that the last remaining module in the framework not supporting 2.13 is squeryl-record. (#1988)
- Implementation of Same Site Cookie Support. Thanks to @csaltos. (#1989)
- Ability to provide a custom executor service to the
Schedulehelper. Thanks to @andreak. (#1993)
Bug Fixes
- Fixed FutureWithSession not appearing in the 2.13 builds. (#1992)
Lift Framework 3.4.3
The Lift Committers are pleased to announce the release of Lift 3.4.2 on November 28, 2020. This is a minor release.
Changes
Improvements
- Delegate equals comparison in Record to Field (#1976)
- Bump scala-xml to 1.3.0 (#1981)
- Lift-mapper with Scala 2.13 support (#1982)
- Lift-mongodb support for Scala 2.13 and various mongodb deprecation fixes (#1984, #1987)
About Lift
The Lift Framework is a mature, advanced framework for the modern software engineer. There are Seven Things that set Lift apart from the other frameworks out there today: it's secure-by-default, developer-centric, scalable, capable of rich interactive behavior, modular, and designer-friendly. The Lift Mailing List is also a good resource for anyone to ask questions or just meet other Lift users. The Lift README is a good resource for figuring out how to use Lift in your project.
Lift Framework 3.4.2
The Lift Committers are pleased to announce the release of Lift 3.4.2 on August 30th, 2020. This is a minor release.
Changes
Bug Fixes
- Recompiled with Scala 2.12.12 and Scala 2.13.2 to resolve bug for users of Metals.
About Lift
The Lift Framework is a mature, advanced framework for the modern software engineer. There are Seven Things that set Lift apart from the other frameworks out there today: it's secure-by-default, developer-centric, scalable, capable of rich interactive behavior, modular, and designer-friendly. The Lift Mailing List is also a good resource for anyone to ask questions or just meet other Lift users. The Lift README is a good resource for figuring out how to use Lift in your project.
Lift Framework 3.4.1
The Lift Committers are pleased to announce the release of Lift 3.4.1 on January 18th, 2020. This is a minor bugfix release.
Changes
Bug Fixes
- (#1978) Disable auto-rewrite of requests for lift.js, json.js, and json2.js. In Lift 3.4.0 we upgraded sbt, which caused some incompatibilities with a plugin we developed to minify our Javascript during release. Until we get the chance to further revisit how to minify Javascript as a part of our release build, we are disabling the automatic filename rewrite that happens in production so that these scripts start working again without the workaround described in the Lift 3.4.0 release notes.
About Lift
The Lift Framework is a mature, advanced framework for the modern software engineer. There are Seven Things that set Lift apart from the other frameworks out there today: it's secure-by-default, developer-centric, scalable, capable of rich interactive behavior, modular, and designer-friendly. The Lift Mailing List is also a good resource for anyone to ask questions or just meet other Lift users. The Lift README is a good resource for figuring out how to use Lift in your project.
Lift Framework 3.4.0
The Lift Committers are pleased to announce the release of Lift 3.4.0 on October 22nd, 2019. Given the importance of this release and it's Scala 2.13 support, we've decided to short-circuit our normal Milestone and RC process in favor of getting out a final build with full support from the committers.
About Lift
The Lift Framework is a mature, advanced framework for the modern software engineer. There are Seven Things that set Lift apart from the other frameworks out there today: it's secure-by-default, developer-centric, scalable, capable of rich interactive behavior, modular, and designer-friendly. If you're new to Lift or interested in checking out what these things mean, we recommend checking out Simply Lift and The Lift Cookbook.
The Lift Mailing List is also a good resource for anyone to ask questions or just meet other Lift users. The Lift README is a good resource for figuring out how to use Lift in your project.
Known Issues
This version of Lift shipped with a bug in the build process that resulted in minified javascript files not being included in the Lift Webkit JAR. A bugfix release is forthcoming, but in the interim you can use this release by adding the following to your Boot class:
ResourceServer.pathRewriter = {
case anything => anything
}Changes
Below is a list of changes since Lift 3.3 organized by the type of change and sorted by the PR number. The big headline here is that we now support building some, but not all, modules for 2.13. We expect to release patch versions shortly to add the additional modules. The various record, mapper, and webkit modules are the significant omissions from the 2.13 release.
New Features
No significant new features are added in this release.
Improvements
- (#1953) Add JDK11 and JDK12 support to CI build
- (#1954) SBT updates
- (#1958) Upgrade nu validator
- (#1960) Add tests for the Crudify trait
- (#1973) Scala 2.13 support for some modules
This release also includes various Scala and minor SBT version bumps.
Bug Fixes
- (#1952) Fix behavior in
tryothat could cause exceptions to be thrown when not expected - (#1959) Fix
Crudify.doCrudAll - (#1963) Fix confusing DontMergeAttributes modification
- (#1968) Fix snapshot builds
Final Notes
As always, please reach out to us with any questions or concerns on the mailing list. We hope you enjoy Lift 3.4.0!