Releases: PRQL/prql
0.2.3
A couple of weeks since the 0.2.2 release: we've squashed a few bugs, added some mid-sized features to the language, and made a bunch of internal improvements.
The 0.2.3 release includes:
- Allow for escaping otherwise-invalid identifiers (@aljazerzen & @max-sixty )
- Fix a bug around operator precedence (@max-sixty )
- Add a section the book on the language bindings (@charlie-sanders )
- Add tests for our
Display
representation while fixing some existing bugs. This is gradually becoming our code formatter (@arrizalamin ) - Add a "copy to clipboard" button in the Playground (@mklopets )
- Add lots of guidance to our
CONTRIBUTING.md
around our tests and process for merging (@max-sixty ) - Add a
prql!
macro for parsing a prql query at compile time (@aljazerzen ) - Add tests for
prql-js
(@charlie-sanders ) - Add a
from_json
method for transforming json to a PRQL string (@arrizalamin ) - Add a workflow to release
prql-java
to Maven (@doki23 ) - Enable running all tests from a PR by adding a
pr-run-all-tests
label (@max-sixty ) - Have
cargo-release
to bump all crate & npm versions (@max-sixty ) - Update
prql-js
to use the bundler build ofprql-js
(@mklopets )
As well as those contribution changes, thanks to those who've reported issues, such as @mklopets @huw @mm444 @ajfriend.
From here, we're planning to continue squashing bugs (albeit more minor than those in this release), adding some features like union
, while working on bigger issues such as type-inference.
We're also going to document and modularize the compiler further. It's important that we give more people an opportunity to contribute to the guts of PRQL, especially given the number and enthusiasm of contributions to project in general — and it's not that easy to do so at the moment. While this is ongoing if anyone has something they'd like to work on in the more difficult parts of the compiler, let us know on GitHub or Discord, and we'd be happy to work together on it.
Thank you!
0.2.2
We're a couple of weeks since our 0.2.0 release. Thanks for the surge in interest and contributions! 0.2.21 has some fixes & some internal improvements:
- We now test against SQLite & DuckDB on every commit, to ensure we're producing correct SQL. (@aljazerzen )
- We have the beginning of Java bindings! (@doki23 )
- Idents surrounded by backticks are passed through to SQL (@max-sixty )
- More examples on homepage; e.g.
join
&window
, lots of small docs improvements - Automated releases to homebrew (@roG0d )
- prql-js is now a single package for node, browsers & webpack (@charlie-sanders )
- Parsing has some fixes, including
>=
and leading underscores in idents (@mklopets ) - Ranges receive correct syntax highlighting (@max-sixty )
Thanks to Aljaž Mur Eržen @aljazerzen , George Roldugin @roldugin , Jasper McCulloch @Jaspooky , Jie Han @doki23 , Marko Klopets @mklopets , Maximilian Roos @max-sixty , Rodrigo Garcia @roG0d , Ryan Russell @ryanrussell , Steven Maude @StevenMaude , Charlie Sanders @charlie-sanders .
We're planning to continue collecting bugs & feature requests from users, as well as working on some of the bigger features, like type-inference.
For those interesting in joining, we also have a new Contributing page.
-
Think of 0.2.1 like C+ :) ↩
0.2.0
🎉 🎉 After several months of building, PRQL is ready to use! 🎉 🎉
How we got here:
At the end of January, we published a proposal of a better language for data transformation: PRQL. The reception was better than I could have hoped for — we were no. 2 on HackerNews for a day, and gained 2.5K GitHub stars over the next few days.
But man cannot live on GitHub Stars alone — we had to do the work to build it. So over the next several months, during many evenings & weekends, a growing group of us gradually built the compiler, evolved the language, and wrote some integrations.
We want to double-down on the community and its roots in open source — it's incredible that a few of us from all over the globe have collaborated on a project without ever having met. We decided early-on that PRQL would always be open-source and would never have a commercial product (despite lots of outside interest to fund a seed round!). Because languages are so deep in the stack, and the data stack has so many players, the best chance of building a great language is to build an open language.
We still have a long way to go. While PRQL is usable, it has lots of missing features, and an incredible amount of unfulfilled potential, including a language server, cohesion with databases, and type inference. Over the coming weeks, we'd like to grow the number of intrepid users experimenting PRQL in their projects, prioritize features that will unblock them, and then start fulfilling PRQL's potential by working through our roadmap.
The best way to experience PRQL is to try it. Check out our website and the Playground. Start using PRQL for your own projects in dbt, Jupyter notebooks, and Prefect workflows.
Keep in touch with PRQL by following the project on Twitter, joining us on Discord, starring the repo.
Contribute to the project — we're a really friendly community, whether you're a recent SQL user or an advanced rust programmer. We need bug reports, documentation tweaks & feature requests — just as much as we need compiler improvements written in rust.
I especially want to give Aljaž Mur Eržen (@aljazerzen) the credit he deserves, who has contributed the majority of the difficult work of building out the compiler. Much credit also goes to Charlie Sanders (@charlie-sanders), one of PRQL's earliest supporters and the author of PyPrql, and Ryan Patterson-Cross (@rbpatt2019), who built the Jupyter integration among other Python contributions.
Other contributors who deserve a special mention include: @roG0d, @snth, @kwigley
Thank you, and we look forward to your feedback!
0.1.1
0.1.1 contains big improvements to the compiler
Thank you to the contributors to this release, in particular @aljazerzen, who is responsible for an internal rewrite of much of the compiler:
Aljaž Mur Eržen (@aljazerzen), Maximilian Roos (@max-sixty), shota kizawa (@kiibo382).
The internal rewrite fixes bugs in more complicated queries — such as variables that span multiple CTEs in the generated SQL — and introduces a more coherent & extensible approach to the compilation. It also adds options to prql compile --format
to understand how variables and functions are being compiled.
It radically improves many error messages:
$ echo '
from employees
join side:[left] managers [id]
' | prql compile
Error:
╭─[-:2:11]
│
2 │ join side:[left] managers [id]
· ───┬───
· ╰───── expected ident, but found List
We have the beginning of a language reference. Improving its content is a priority over the coming days.
Install with cargo install prql
. If you're interesting in joining, check out the Contributing section in the Readme.
0.1.0
PRQL just hit 0.1!
A huge thank you to the contributors to this release:
Aljaž Mur Eržen (@aljazerzen), Andrey Popp (@andreypopp), Daniel Gasienica (@gasi), Daniel Jones (@danjones1618), Ian Fisher (@iafisher), Kyle Wigley (@kwigley), Maximilian Roos (@max-sixty), Peder Bergebakken Sundt (@pbsds), charlie sando (@qorrect), and shota kizawa (@kiibo382).
0.1 means:
- It works™, for basic transformations such as
filter
,select
,aggregate
,take
,sort
, &join
. Variables (derive
), functions (func
) and CTEs (table
) work.- More advanced language features are forthcoming, like better inline pipelines, window clauses, and arrays.
- It's not friendly at the moment:
- It runs from a CLI only, taking input from a file or stdin and writing to a file or stdout.
- Error messages are bad.
- For an interactive experience, combine with a tool like Up.
- The documentation is lacking.
- Our current top priority is to have some decent documentation #233.
- It doesn't support changing the dialect.
- It has bugs. Please report them!
- It has sharp corners. Please report grazes!
- We'll release backward-incompatible changes. The versioning system for the language is not yet implemented.
Give it a try and let us know your feedback — cargo install prql
.
There's much more on the Readme, including examples, how to contribute, and a Roadmap.