Slick 3.0.0

April 29 2015
by Stefan Zeiger

We have just released Slick 3.0.0, a.k.a. “Reactive Slick”. You can find the source code here: https://github.com/slick/slick/tree/3.0.0. Builds for Scala 2.10 (2.10.4+ recommended) and 2.11 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.

The commercial Slick Extensions package with closed-source drivers for Oracle, DB/2 and SQL Server has been published to the Typesafe repository. See the manual for details on adding it to your build.

Here is a complete list of changes since 2.1.0:
  • c22cfdf Bump version numbers
  • e9ab330 Set version to 3.0.0-RC3
  • 1d77b9d Upgrade to Reactive Streams 1.0.0.RC4:
  • c86e36b Some small documentation fixes
  • 7b79d6d Deprecate the JdbcDriver object
  • 0e2c0d4 Add dependency information for slick-codegen to manual
  • e8e0871 More efficient implementation of DBIO.sequence:
  • 8e329b0 Return correct name for default drivers in BasicDriver.toString:
  • 4707487 Update Testkit chapter in the manual from the Activator template
  • e03f16d Remove unnecessary restriction to Pure RHS of Bind in expandSums
  • 1398565 Update dependencies and version number for 3.0.0-RC2
  • 59917d7 Improve documentation after internal review
  • 4183591 Bring back Database.close (via java.io.Closeable)
  • a9f95ab Replace Database.close with Database.shutdown for asynchronous closing:
  • 9e11f07 Distinguish between high- and low-priority jobs in AsyncExecutor:
  • 5acc8fc Handle Exceptions from runInContext correctly:
  • df1e346 Deprecate Database.withSession and remove usages of this method
  • 8bf0152 Correctly propagate the AsyncExecutor in Database.forDataSource
  • a6ff0d3 Lazily instantiate the ExecutionContext in AsyncExecutor:
  • 73ad13d Change all DBIO subtypes to put Effect type parameters last.
  • 1b37a85 Return a single Int instead of a Vector[Int] from the sqlu interpolator.
  • a633204 Export scala.slick packages through OSGi
  • bd0c9c4 Try to prevent some spurious failures on Travis CI
  • 58a1db9 Proper treatment of CHAR(1) columns in JdbcModelBuilder:
  • 7f0f62f Make code generator tests usable from other slick-extensions:
  • 25370cb Fix bugs detected by Slick Extensions upgrade:
  • 13bf805 - fix typo in list of code generating tests
  • 12faf5d Upgrade to Reactive Streams 1.0.0.RC3
  • 648184c Package structure and project layout refactoring:
  • 9c730c0 Upgrade to Reactive Streams 1.0.0.RC2:
  • 24770de Add DatabaseConfig as a higher-level configuration abstraction:
  • 759cbc2 Restore #$ support in the macro-based Plain SQL interpolation:
  • 62ddadc Macro-based PlainSQL API Implemented TypedStaticQuery as tsql
  • d63a018 UUID regression testkit:
  • 0a44b74 Update LiftedEmbedding.scala
  • 5af0d9b Distinguish between BLOB and BYTEA in PostgreSQL model builder
  • ec7f2aa Use TestDB for code generator tests:
  • cc8d3f0 Proper support for string lengths:
  • 41c717a Support fetch size in statement parameters.
  • 965604c Use force-insert semantics for inserting from queries and expressions.
  • 0e58e7d Deprecate the Direct Embedding
  • 0ba0dd5 Remove the blocking API that was introduced in 3.0.0-M1
  • 2f64c79 Rename Action to DBIO:
  • 86974bd Simplify SQLBuilder and formatting/indenting:
  • 20378ec Quote SqlType argument in code generator.
  • b1dca21 Make ColumnOptions more modular:
  • 7272180 Use unconstrained text type as default on PostgreSQL
  • 6cec3f7 Prefer prepareStatement(sql) instead of prepareStatement(sql, Int, Int)
  • a3eec4f Support transaction isolation levels
  • 6ea7fdb Generic fusion implementation for FlatMapAction and CleanupAction:
  • 706f2b1 Allow the SQL statements to be overridden in SqlActions.
  • a325f5e Run a user-defined init function on all created JDBC Statements
  • 3315a3b Refactoring of ActionContext:
  • dc687de Avoid long nested sequences of SchemaDescription.++ in generated code:
  • 62d5e92 Quote illegal identifiers in generated Scala sources.
  • 58c4ed5 Make ‘desiredColumnOrder’ in code generator non-final.
  • a645205 Support statement parameters in the new Action-based API.
  • b1c5b66 Switch JDBC metadata API and code generator to the new API.
  • c92a615 Fix typo in orm-to-slick.rst
  • d4f019f Move profile-level Action definitions outside of profiles.
  • 5cd423f Deprecate Invoker convenience methods and iteratees
  • 7d576c8 Properly deprecate .Implicit and .simple in all profile levels
  • 30c135e Upgrade to sbt 0.13.7
  • e9274ec Improve build system for documentation:
  • a6e3b9b Further modularization of Slick:
  • 4ab4a6b Switch Direct Embedding over to the new Action-based API.
  • ac37f1c Update documentation for 3.0:
  • e6562c7 Simplify Action Effect handling:
  • 06d1ca0 Increase timeout for Reactive Streams TCK tests.
  • efbe6f6 Bump version numbers:
  • 4d42528 Add concurrency stress test for streaming API:
  • 80929a6 Documentation plus minor improvements and fixes:
  • 273b957 Update to Reactive Streams 1.0.0.M3 and fix remaining PR review issues:
  • 688d7f2 Convert more test cases and add missing features:
  • d862e0f Optimize the streaming engine and fix some bugs:
  • 9ad62a9 Implement streaming via Reactive Streams API:
  • 6a85767 Convert several test cases to the new API.
  • 8ef6cde Add basic transaction support for database actions.
  • 09590fd Implement session pinning for database Actions:
  • 66a9b41 Basic implementation of action monad and asynchronous execution engine:
  • bf17772 Use HikariCP by default (instead of no connection pooling):
  • 4569c52 Simplify connection pool configuration
  • cc92c26 Simplify thread pool configuration:
  • 423e78c Remove the option to disable auto-commit for new connections.
  • e4dddcd Remove BoneCP support and drop configuration compatibility with Play.
  • 812100e Add HikariCP support in addition to BoneCP.
  • bb58103 Add primitives and configuration for async execution of blocking I/O
  • 0ea777a Fix broken build due to merging nested options support
  • 8d4a02f Ensure generated file ends with a newline character.
  • 9cdf7ec Make comment format match others in file.
  • ef5f9a8 Avoid indenting blank lines, to avoid trailing whitespace.
  • 8225a8f Add Option-extended joins:
  • 75583dc Lifted Embedding encoding of nested and multi-column Option types:
  • de389a4 Remove the Column type.
  • 5da96b4 Update orm-to-slick.rst
  • 7a1d119 modified to use GlobalConfig.
  • 777dbeb Add SimpleLiteral factory (and fix one unrelated unchecked warning)
  • 82b258f Use Unicode symbols in tree and table dumps for better readability.
  • f54d272 Add BoneCP support to Database.forConfig.
  • 369ad73 Use application.conf for Slick settings.
  • 61d032b Corrected docs to use “inSet” instead of “inSeq”
  • b0b0252 Fix forceInsertAll for single argument
  • 770d0a1 Update build for 2.2.0-SNAPSHOT
  • cb8183d Added support for string function repeat.
  • 57aa9e7 Workaround to pass Travis CI.
  • 7a58f7f Try for SQL String Indentation.

Past News Items

Dec 05 2016
We have just released Slick 3.2.0-M2, the second milestone for Slick 3.2. It should show up on Maven Central within the next few hours. You can find the source code...
Jul 04 2016
We have just released Slick 3.2.0-M1, the first milestone for Slick 3.2. It should show up on Maven Central within the next few hours. You can find the source code...
Mar 18 2016
I'd like to draw your attention to the new [community process](/community/process.html) and [code of conduct](/community/conduct.html) for Slick, both of which are based on [Play Framework's](https://playframework.com/community-process). Back in 2008 [I](https://github.com/szeiger) started...
Feb 01 2016
Because nearly every application is driven by some sort of data source, we invested in building Slick, a Functional Relational Mapping (FRM) library for Scala that makes it easy to...
Dec 15 2015
We are happy to announce the release of [Slick](http://slick.typesafe.com/) 3.1.1. The artifacts are available on Maven Central, as usual. You can find the source code here: . Please see for...
Oct 09 2015
We are happy to announce the release of [Slick](http://slick.typesafe.com/) 3.1.0. These are the major new features compared to Slick 3.0.0: * New query compiler back-end. The main goal is to...
Oct 02 2015
We have just released Slick 3.1.0-RC3, the third release candidate for Slick 3.1.0. You can find the source code here: . Builds for Scala 2.10 and 2.11 are available from...
Sep 25 2015
We have just released Slick 3.1.0-RC2, the second release candidate for Slick 3.1.0. You can find the source code here: . Builds for Scala 2.10 and 2.11 are available from...