Slick 3.0.0-RC1
We have just released Slick 3.0.0-RC1, the first release candidate for “Reactive Slick”. You can find the source code here: https://github.com/slick/slick/tree/3.0.0-RC1. Builds for Scala 2.10 (2.10.4 recommended) and 2.11 (2.11.4 recommended) are available from Maven Central, as usual.
These are the major new features in Slick 3.0:
- A new API for composing and executing database actions.
- Support for the Reactive Streams API for streaming results from the database.
- Improved configuration of database connections via Typesafe Config, including built-in support for HikariCP.
- Support for nested Option types and non-primtive Option types in the Lifted Embedding.
- Properly typed outer join operators based on the improved Option support.
- A new macro-based implementation of the Plain SQL API with optional compile-time checking and type inference for embedded SQL statements.
- Many small improvements and bug fixes in the schema code generator.
- Optional multi-line formatting and indenting of generated SQL code for more readable debug output.
Most of the manual has been updated. The “Slick Testkit” and “Plain SQL Queries” chapters will follow soon. None of the standard Activator templates are available at the moment. They will be ported to 3.0 before the final release. There is a new section in the Migration Guide for upgrading from Slick 2.1. The commercial Slick Extensions package with additional database drivers is also available for this RC. See the manual for details on adding it to your build.
Please provide feedback on the stability of this RC if you encounter any problems. We are planning to publish the final 3.0.0 release if no blockers are discovered in the next two weeks.
Here is a complete list of changes since 2.1.0:
bd0c9c4Try to prevent some spurious failures on Travis CI58a1db9Proper treatment of CHAR(1) columns in JdbcModelBuilder:7f0f62fMake code generator tests usable from other slick-extensions:25370cbFix bugs detected by Slick Extensions upgrade:12faf5dUpgrade to Reactive Streams 1.0.0.RC3648184cPackage structure and project layout refactoring:9c730c0Upgrade to Reactive Streams 1.0.0.RC2:24770deAddDatabaseConfigas a higher-level configuration abstraction:759cbc2Restore#$support in the macro-based Plain SQL interpolation:62ddadcMacro-based PlainSQL API Implemented TypedStaticQuery as tsqld63a018UUID regression testkit:0a44b74Update LiftedEmbedding.scala5af0d9bDistinguish between BLOB and BYTEA in PostgreSQL model builderec7f2aaUse TestDB for code generator tests:cc8d3f0Proper support for string lengths:41c717aSupport fetch size in statement parameters.965604cUse force-insert semantics for inserting from queries and expressions.0e58e7dDeprecate the Direct Embedding0ba0dd5Remove the blocking API that was introduced in 3.0.0-M12f64c79Rename Action to DBIO:86974bdSimplify SQLBuilder and formatting/indenting:20378ecQuoteSqlTypeargument in code generator.b1dca21Make ColumnOptions more modular:7272180Use unconstrained text type as default on PostgreSQL6cec3f7Prefer prepareStatement(sql) instead of prepareStatement(sql, Int, Int)a3eec4fSupport transaction isolation levels6ea7fdbGeneric fusion implementation for FlatMapAction and CleanupAction:706f2b1Allow the SQL statements to be overridden in SqlActions.a325f5eRun a user-defined init function on all created JDBC Statements3315a3bRefactoring of ActionContext:dc687deAvoid long nested sequences of SchemaDescription.++ in generated code:62d5e92Quote illegal identifiers in generated Scala sources.58c4ed5Make ‘desiredColumnOrder’ in code generator non-final.a645205Support statement parameters in the new Action-based API.b1c5b66Switch JDBC metadata API and code generator to the new API.c92a615Fix typo in orm-to-slick.rstd4f019fMove profile-level Action definitions outside of profiles.5cd423fDeprecate Invoker convenience methods and iteratees7d576c8Properly deprecate .Implicit and .simple in all profile levels30c135eUpgrade to sbt 0.13.7e9274ecImprove build system for documentation:a6e3b9bFurther modularization of Slick:4ab4a6bSwitch Direct Embedding over to the new Action-based API.ac37f1cUpdate documentation for 3.0:e6562c7Simplify Action Effect handling:06d1ca0Increase timeout for Reactive Streams TCK tests.efbe6f6Bump version numbers:4d42528Add concurrency stress test for streaming API:80929a6Documentation plus minor improvements and fixes:273b957Update to Reactive Streams 1.0.0.M3 and fix remaining PR review issues:688d7f2Convert more test cases and add missing features:d862e0fOptimize the streaming engine and fix some bugs:9ad62a9Implement streaming via Reactive Streams API:6a85767Convert several test cases to the new API.8ef6cdeAdd basic transaction support for database actions.09590fdImplement session pinning for database Actions:66a9b41Basic implementation of action monad and asynchronous execution engine:bf17772Use HikariCP by default (instead of no connection pooling):4569c52Simplify connection pool configurationcc92c26Simplify thread pool configuration:423e78cRemove the option to disable auto-commit for new connections.e4dddcdRemove BoneCP support and drop configuration compatibility with Play.812100eAdd HikariCP support in addition to BoneCP.bb58103Add primitives and configuration for async execution of blocking I/O0ea777aFix broken build due to merging nested options support8d4a02fEnsure generated file ends with a newline character.9cdf7ecMake comment format match others in file.ef5f9a8Avoid indenting blank lines, to avoid trailing whitespace.8225a8fAdd Option-extended joins:75583dcLifted Embedding encoding of nested and multi-column Option types:de389a4Remove the Column type.5da96b4Update orm-to-slick.rst7a1d119modified to use GlobalConfig.777dbebAdd SimpleLiteral factory (and fix one unrelated unchecked warning)82b258fUse Unicode symbols in tree and table dumps for better readability.f54d272Add BoneCP support to Database.forConfig.369ad73Use application.conf for Slick settings.61d032bCorrected docs to use “inSet” instead of “inSeq”b0b0252Fix forceInsertAll for single argument770d0a1Update build for 2.2.0-SNAPSHOTcb8183dAdded support for string function repeat.57aa9e7Workaround to pass Travis CI.7a58f7fTry for SQL String Indentation.
