After a year and a half of effort, ProtoQuill (a.k.a. Dotty-Quill) Beta-1.0 is out. This represents a complete re-architecture of all Quill Metaprogramming components based on the new Dotty/Scala 3
Here is a short list of what is available and what is not:
- Basic Quotation, Querying, Lifting, and Composition (Compile-Time and Dynamic)
- Inner/Outer, Left/Right joins
- Query.map/flatMap/concatMap/filter other query constructs.
- Insert, Update, Delete Actions (Compile-Time and Dynamic)
- Batch Insert, Batch Update, and Batch Delete Actions (currently only Compile-Time)
- ZIO, Synchronous JDBC, and Jasync Postgres contexts.
Currently Not Supported:
- SQL OnConflict Clauses (Coming Soon!)
- Prepare Query (i.e.
- Dynamic Query API (i.e. this)
- Implicit Query
- IO Monad
- Cassandra Contexts (Coming Soon!)
- Monix JDBC (and Cassandra) Contexts (Coming Soon!)
- Lagom Contexts
- OrientDB Contexts
- Spark Context (still waiting on Spark for Scala 2.13)
In addition to the above ProtoQuill supports many new capabilities some of which are:
- Scala Methods and Typeclasses Transforming ProtoQuill queries (see Shareable Code and Advanced Example).
- Custom Parsing (Early API, still subject to change)
- Co-Product Rows (Highly experimental, use with caution!)
Also please keep in mind that although many parts of this release are fully operational, it is very much in a beta state and cannot be considered production-ready. Please be extremely cautious if attempt to use it with production codebases.
Please have a look at the documentation for more information:
Special thanks to @biboudis and @liufengyun for creating the initial prototype on top of which this library is written, back in Dotty 0.22! Thanks to Parkhar Saxena and the ScQuilL group for participating in the building of the parser as well as @kubukoz for
report.info upstream changes to Dotty.
Finally, I want to offer an immense, heartfelt thanks to @nicolasstucki! Thank you so much Nicolas for helping me bring my codebase through nearly a dozen Dotty betas!
A Note on Versions
ProtoQuill Betas are semantically versioned, the current version is 1.0. Non-Breaking changes will have minor version increments, breaking changes will have major version increments.