Folks,
I am pleased to announce lift version 0.5.
lift is an expressive and elegant framework for writing web applications. lift stresses the importance of security, maintainability, scalability and performance, while allowing for high levels of developer productivity.
Demo: http://demo.liftweb.net
New in version 0.5:
- jlift JavaScript utilities and associated binder helpers
- Blueprint CSS built in (version 0.6 of Blueprint CSS) so it can be served via /classpath
- XML -> JavaScript bindings so that JSON -> XHTML rendering can be defined using Scala XML literals, but the resulting JavaScript code can be sent to the browser to do mass rendering of JSON objects
- JSON support including: - S.buildJSONFunc - JSONHandler class - Lots of fancy JavaScript expression building
- Parser Combinator Helper routines
- ByList query term
- Support for serving certain common files (e.g., jQuery, Blueprint CSS) right from the JAR/WAR file
- MappedText and MapperFakeClob classes for storing very long text fields in the database
Changes include:
- Revised the example site to use Blueprint CSS for style
- When lift is running in test mode, the default form generators will insert lift:field_name attribute into the form fields to aid in testing
- Added json2.js (and minified version) Enhanced the resource serving stuff so that: - The path is defined in LiftServlet and changable (defaults to "classpath") - Moved the resource location from the root to "toserve" (can be changed) to avoid any possible way of serving up classes - The white list is a Partial Function for more flexibility - The white list by default contains jquery.js and json.js - There's a re-writer to re-write the request into an actual file (so jquery.js gets re-written to jquery-1.2.2-min.js)
- MappedField.toForm now returns a Can[NodeSeq ] so a field can be omitted from a form
- Added LocInfo and LocInfoVal to SiteMap for storing CSS and other tidbits about each menu item
- Fixed the 'Welcome to the your project' type-o
- Further abstracted the whole logging thing. There's a default log4j setup that can be override The LiftLogger trait is made concrete in Log4JLogger, but the generic LiftLogger creation is done by function that can be modified in LogBoot: var loggerByName: String => LiftLogger = _logger var loggerByClass: Class => LiftLogger = _loggerCls One can insert a new logging system into lift by replacing the loggerByName and loggerByClass functions with appropriate functions that return a LiftLogger.
- Extensive updates to the <lift:xxx /> tag mechanism that uses tag labels as snippets and support for adding arbitrary tag handling to lift.
The lift community has grown to over 400 people. There are a number of lift-based project in development including http://much4.us which makes use of lift's Comet, AJAX, and JSON support.
Thanks to the excellent, talented team of lift committers including Jorge Ortiz who was build-master for this release, Steve Jenson who keeps adding practical things to lift, and the rest of the lift team.
Please take a look at lift 0.5, join the lift community, and give us some feedback!
Thanks,
David