Two months went past this time, which just means there are more goodies to discuss. We gained a new committer, Joe Barnes, who has been working hard on Angular integration for Lift in lift-ng, a bunch of cleanups and exciting new work landed in the Lift 3 development branch, and Lift 2.6-M4 and RC1 both went out the door with several improvements. Let’s get right into it!

June

June saw a lot of the Lift 3 work go in that hadn’t quite wrapped up by the last monthly recap. The old binding strategy (based on the bind function) was completely removed from Lift 3 (#1568), making CSS selector transforms the only supported approach to binding. We also merged a change to make JField no longer be a subtype of JValue in Lift 3 (#1584); because this changes several behaviors in the API, it was a change that couldn’t go into Lift 2.6. Also, we renamed the updateListeners method that takes an Any parameter in Lift 3 to sendListenersMessage to distinguish from the one that takes a List[ActorTest] by more than just parameter type, given that it behaves significantly differently (#1574).

2.6 also saw a few changes, including a tweak to StackableMaker.doWith‘s documentation (#1576) to clarify its thread-local behavior, a variety of deprecation fixes related to the mongo Java driver (#1581), as well as the release of Lift 2.6-M4, with its litany of deprecations to prepare for Lift 3 and a variety of cool updates that were covered in the last monthly recap. This marked the first Lift release built for Scala 2.11, as well as the last milestone release for Lift 2.6.

July

With the groundwork of code cleanup out of the way (or most of it), some cool new features started showing up in Lift 3. With the release of 2.6-M4, Lift 3 became the master branch for the Lift repository, and two big changes landed there during the month of July. The first was support for Lift CometActors being added to a page via AJAX (#1585). This came with a restructuring of comet-related APIs in S and internal ones in LiftSession, making it trivial to create a CometActor by type, without needing to use a snippet, and to then make sure updates from that actor could be received on the client.

The second big change was a foundational one, an early version of documentation automation work that will hopefully be used more broadly in our documentation moving forward (#1586). The first document to use this approach is an draft document on CSS selector transforms. It describes CSS selector transforms with examples as well as a detailed breakdown of what they can do. That PR introduced dexy, a build tool for documentation. We’re going to be using dexy to compile long-form documentation, combine it with generated API docs, and also generates tests from the long-form documentation when appropriate to ensure that documentation examples actually do what they say they do. There’s a lot more work to be done in this department, including making the examples themselves more interactive in the future—needless to say, there are big changes on the horizon for Lift’s docs.

Lift 2.6 also had a lively month, with pbrant contributing various fixes for 2.6 that he’d been working on for a while, including setting a Date header on outbound emails and allowing for attributes for option elements in SHtml.multiSelect_* (#1595). We also made a small fix to the build process for Lift 2.6 on versions of Scala prior to 2.11 (#1590). Last but certainly not least, Lift 2.6-RC1 was released on July 29th. It is expected to be the last 2.6 pre-release before Lift 2.6 final, which is in turn expected to be the last release in the Lift 2.x series.

Future Times

August is shaping up to be both interesting but somewhat quiet—a lot of people will be taking vacations, so things will probably slow down. On the other hand, we’ve already got some code baking to move Lift’s data-lift handler to be based on Lift 3’s generalized data-* attribute support (see Lift Weekly Recap 6 for more on that). And, Lift 2.6 final should go out the door either in late August or early September.