Skip to content

Releases: lift/framework

Lift Framework 3.5.0

08 Oct 15:12
Compare
Choose a tag to compare

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 Schedule helper. Thanks to @andreak. (#1993)

Bug Fixes

  • Fixed FutureWithSession not appearing in the 2.13 builds. (#1992)

Lift Framework 3.5.0-RC1

23 Aug 17:13
Compare
Choose a tag to compare
Pre-release

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 Schedule helper. Thanks to @andreak. (#1993)

Bug Fixes

  • Fixed FutureWithSession not appearing in the 2.13 builds. (#1992)

Lift Framework 3.4.3

28 Nov 18:22
3.4.3-release
Compare
Choose a tag to compare

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

30 Aug 17:49
3.4.2-release
Compare
Choose a tag to compare

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

18 Jan 13:47
release-3.4.1
Compare
Choose a tag to compare

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

23 Oct 00:31
3.4.0-release
Compare
Choose a tag to compare

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 tryo that 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!

Lift Framework 3.3.0

11 Jul 12:41
3.3.0-release
Compare
Choose a tag to compare

The Lift Committers are pleased to announce the release of Lift 3.3.0 on July 11th, 2018. This release continues our release cadence. This release has no code changes from the 3.3.0-RC1 release.

This year has been a busy one in the personal lives of the Lift Committers so far, and sometimes it's hard to find the time to contribute to open source or... you know... do the final release on time. (cough sorry folks cough.) We hope you'll enjoy this release all the same, though!

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.

Changes

This release of Lift is composed of the following component releases:

Below is a list of changes since Lift 3.2 organized by the type of change and sorted by the PR number.

BREAKING CHANGES

It is rare for Lift to decide to ship what amounts to a breaking change in a minor point release. However, during this release cycle we discovered a bug in the implementation of LAFuture that resulted in the aborted_? check method not working as users expect. Unbeknownst to us, the aborted_? check method was looking at the satisfied internal state setting instead of the aborted internal state setting. This meant that satisfied_? and aborted_? always returned the same result even though they were not the same internal state.

With a lot of consideration, we decided to correct the behavior in Lift 3.3.0 in Pull Request #1940, because it never worked as advertised and the expected impact to user code is that it starts working as the user intended. We are not going to backport this change to avoid user code behavior changing on a patch release.

New Features

(#1933) Configurable asset path for Lift-specific assets

By default, Lift will attempt to load an AJAX Spinner gif when doing certain server-to-client operations. Some folks turn this off, but it remains one of the niceties that folks can lean on when waiting on the server and the client to finish talking to each other. Historically, Lift has insisted that for this feature to work the ajax gif must be located at /images/ajax-loader.gif, however not everyone wants to lay out their application in that fashion.

There is a new lift rule located at LiftRules.assetRootPath that makes the location of your assets configurable. Its default value is /, which preserves the existing behavior. You can, however, make it whatever you like.

You could put your AJAX loader at /assets/images/ajax-loader.gif. You could put it between two slices of bread. You could put it on Amazon S3, instead. You'll be amazed at the places you can put this gif, if you only use your head.

Many thanks to @heharkon!

(#1939) Customizable Service Timers

Many folks using Lift are familiar with the classic timer log messages that appear by default to tell you how long each request in Lift is taking. By default they tend to look like this:

INFO net.liftweb.util.TimeHelpers - Service request (GET) / returned 200, took 455 Milliseconds

Lift now provides the ability to implement custom timing methods through the implementation of the ServiceRequestTimer trait. Using a ServiceRequestTimer you can:

  • Control how messages are timed.
  • Control where that timing information gets reported.

You could, for example, report all request timings to a metrics aggregator and graph the various percentiles of response times as a part of your monitoring. You could only time a subset of requests (those testing newer functionality, for example).

These changes provide a new LiftRules.installServiceRequestTimer function to install the timer of your choice. net.liftweb.http.StandardServiceTimer implements the current behavior. Further, the LiftRules.logServiceRequestTiming is now deprecated and will be removed in Lift 4 in favor of installServiceRequestTimer.

Many thanks to @andreak!

Improvements

  • (#1846) @Shadowfiend's much anticipated in-repo getting started tutorial is now in master! Check it out
  • (#1931) Some readme improvements courtesy of @kohrVid
  • (#1935, #1936) Various performance improvements to lift-json courtesy of @chriswebster
  • (#1938) Fixed issues with building the project in IntelliJ courtesy of @andreak
  • (#1940) Correction to LAFuture.isAborted_? and a variable allocation cleanup. Thank you to @zhongsigang
  • (#1942, #1945) Deprecated our internal BCrypt implementation in lift-util in favor of using the publicly-available jBCrypt library. net.liftweb.util.BCrypt was just a copy/paste of version 0.3 of jBCrypt. It is now officially deprecated and is now simply a proxy class to org.mindrot.jbcrypt.BCrypt. net.liftweb.util.BCrypt will be removed in Lift 4.0. (h/t @eltimn)
  • (#1943) Upgraded the Mongo driver to 3.6.3 (h/t @eltimn)
  • (#1944) Some code gardening courtesy of @eltimn!
  • (#1950) Dependency and build version bumps. Including:
    • Scala 2.12.4 -> 2.12.6
    • commons-codec 1.10 -> 1.11
    • commons-fileupload 1.3.1 -> 1.3.3
    • joda-time 2.9.2 -> 2.10
    • joda-convert 1.8.1 -> 2.1
    • mongodb-driver 3.6.3 -> 3.7.1
    • mongodb-driver-async 3.6.3 -> 3.7.1
    • scalaz_core 7.2.7 -> 7.2.24
    • scala-xml 1.0.5 -> 1.0.6
    • rhino 1.7.7.1 -> 1.7.10

Bug Fixes

  • (#1949) Fixed a bug where in certain cases attempting to evaluate a Loc could result in surprise NPEs. In particular this could happen if you tried to evaluate the currentValue of a Loc that was not the Loc for the current URL your end-user was on.

Final Notes

This release represents six months of hard work on behalf of the contributors. Most of the contributions made to Lift are made on the contributor's own time without any kind of payment. If you use Lift, please take the time to thank a contributor the next time you see them. They'll appreciate knowing their work is valued.

Now, we look forward to Lift 3.4.0 around the beginning of next year. Lift 3.4.0-M1 is currently scheduled to be released August 1, 2018. How the time flies. If you're interested in our progress, you can follow along from the Milestones page.

As always, please reach out to us with any questions or concerns on the mailing list. We hope you enjoy Lift 3.3.0!

Lift Framework 3.3.0-RC1

17 Jun 15:22
3.3.0-RC1-release
Compare
Choose a tag to compare
Pre-release

The Lift Committers are pleased to announce the release of Lift 3.3.0-RC1 on June 17th, 2017. This release is the first (and hopefully last) release candidate for Lift 3.3.0. We encourage all Lift Framework users to bump their applications to this version as quickly as possible. We'd like to collect feedback on how it works and spot any show-stopping bugs before we declare this release final.

Per our release schedule, we'll have a two week testing period for this release. If we don't get bug reports in that time frame, we'll be releasing the final build of Lift 3.3.0 sometime after July 1st.

Please read below for the changes in this milestone since Lift 3.3.0-M3.

Changes

Improvements

  • (#1950) Dependency and build version bumps. Including:
    • Scala 2.12.4 -> 2.12.6
    • commons-codec 1.10 -> 1.11
    • commons-fileupload 1.3.1 -> 1.3.3
    • joda-time 2.9.2 -> 2.10
    • joda-convert 1.8.1 -> 2.1
    • mongodb-driver 3.6.3 -> 3.7.1
    • mongodb-driver-async 3.6.3 -> 3.7.1
    • scalaz_core 7.2.7 -> 7.2.24
    • scala-xml 1.0.5 -> 1.0.6
    • rhino 1.7.7.1 -> 1.7.10

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.

Lift Framework 3.3.0-M3

02 Jun 14:02
3.3.0-M3-release
Compare
Choose a tag to compare
Pre-release

The Lift Committers are pleased to announce the release of Lift 3.3.0-M3 on June 2nd, 2018. This release is the third of three milestone releases for Lift 3.3.0. The first release candidate is tentatively scheduled for June 15th, 2018. As always, you can follow along with our progress in the GitHub Milestone View.

Please read below for the changes in this milestone.

Changes

Bug Fixes

  • (#1949) Fixed a bug where in certain cases attempting to evaluate a Loc could result in surprise NPEs. In particular this could happen if you tried to evaluate the currentValue of a Loc that was not the Loc for the current URL your end-user was on.

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.

Lift Framework 3.3.0-M2

14 Apr 14:39
3.3.0-M2-release
Compare
Choose a tag to compare
Pre-release

The Lift Committers are pleased to announce the release of Lift 3.3.0-M2 on April 14th, 2018. This release is the second of three milestone releases for Lift 3.3.0. The next milestone release is tentatively scheduled for June 1st, 2018. As always, you can follow along with our progress in the GitHub Milestone View.

Please read below for the changes in this milestone.

Changes

BREAKING CHANGES

It is rare for Lift to decide to ship what amounts to a breaking change in a minor point release. However, during this release cycle we discovered a bug in the implementation of LAFuture that resulted in the aborted_? check method not working as users expect. Unbeknownst to us, the aborted_? check method was looking at the satisfied internal state setting instead of the aborted internal state setting. This meant that satisfied_? and aborted_? always returned the same result even though they were not the same internal state.

With a lot of consideration, we decided to correct the behavior in Lift 3.3.0 in Pull Request #1940, because it never worked as advertised and the expected impact to user code is that it starts working as the user intended. We are not going to backport this change to avoid user code behavior changing on a patch release.

New Features

(#1933) Configurable asset path for Lift-specific assets

By default, Lift will attempt to load an AJAX Spinner gif when doing certain server-to-client operations. Some folks turn this off, but it remains one of the niceties that folks can lean on when waiting on the server and the client to finish talking to each other. Historically, Lift has insisted that for this feature to work the ajax gif must be located at /images/ajax-loader.gif, however not everyone wants to lay out their application in that fashion.

There is a new lift rule located at LiftRules.assetRootPath that makes the location of your assets configurable. Its default value is /, which preserves the existing behavior. You can, however, make it whatever you like.

You could put your AJAX loader at /assets/images/ajax-loader.gif. You could put it between two slices of bread. You could put it on Amazon S3, instead. You'll be amazed at the places you can put this gif, if you only use your head.

Many thanks to @heharkon!

(#1939) Customizable Service Timers

Many folks using Lift are familiar with the classic timer log messages that appear by default to tell you how long each request in Lift is taking. By default they tend to look like this:

INFO net.liftweb.util.TimeHelpers - Service request (GET) / returned 200, took 455 Milliseconds

Lift now provides the ability to implement custom timing methods through the implementation of the ServiceRequestTimer trait. Using a ServiceRequestTimer you can:

  • Control how messages are timed.
  • Control where that timing information gets reported.

You could, for example, report all request timings to a metrics aggregator and graph the various percentiles of response times as a part of your monitoring. You could only time a subset of requests (those testing newer functionality, for example).

These changes provide a new LiftRules.installServiceRequestTimer function to install the timer of your choice. net.liftweb.http.StandardServiceTimer implements the current behavior. Further, the LiftRules.logServiceRequestTiming is now deprecated and will be removed in Lift 4 in favor of installServiceRequestTimer.

Many thanks to @andreak!

Improvements

  • (#1846) @Shadowfiend's much anticipated in-repo getting started tutorial is now in master! Check it out
  • (#1940) Correction to LAFuture.isAborted_? and a variable allocation cleanup. Thank you to @zhongsigang
  • (#1942, #1945) Deprecated our internal BCrypt implementation in lift-util in favor of using the publicly-available jBCrypt library. net.liftweb.util.BCrypt was just a copy/paste of version 0.3 of jBCrypt. It is now officially deprecated and is now simply a proxy class to org.mindrot.jbcrypt.BCrypt. net.liftweb.util.BCrypt will be removed in Lift 4.0. (h/t @eltimn)
  • (#1943) Upgraded the Mongo driver to 3.6.3 (h/t @eltimn)
  • (#1944) Some code gardening courtesy of @eltimn!

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.