Skip to content

Releases: PRQL/prql

0.13.0

25 Jul 17:27
4c1ccb7
Compare
Choose a tag to compare

0.13.0 brings a new debug logging framework, a big refactor of the parser, a new highlighter, an ** operator for exponentiation, a few bug fixes, and lots of other changes. It has 153 commits from 11 contributors.

Our work continues on rewriting the resolver and completing prqlc fmt.

Selected changes:

Language:

  • Parentheses are always required around pipelines, even within tuples. For example:

    from artists
    # These parentheses are now required
    derive {a=(b | math.abs)}
    # No change — doesn't affect expressions or function calls without pipelines
    derive {x = 3 + 4}
    

    This is a small breaking change. The new behavior matches the existing documentation. (@max-sixty, #4775)

  • A new ** operator for exponentiation. (@aljazerzen & @max-sixty, #4125)

Features:

  • prqlc compile --debug-log=log.html will generate an HTML file with a detailed log of the compilation process. (@aljazerzen, #4646)
  • Added prqlc debug json-schema command to auto-generate JSON Schema representations of commonly exposed IR types such as PL and RQ. (@kgutwin, #4698)
  • Add documentation comments to the output of the documentation generator. (@vanillajonathan, #4729)
  • Add CLI syntax highlighting to prqlc. You can try it as prqlc experimental highlight example.prql. (@vanillajonathan, #4755)

Fixes:

  • Using in with an empty array pattern (e.g. expr | in []) will now output a constant false condition instead of an expr IN (), which is syntactically invalid in some SQL dialects (@Globidev, #4598)

Integrations:

  • The Snap package previously released on the edge channel is now released on the stable channel. (@vanillajonathan, #4784)

Internal changes:

  • Major reorganization of prqlc-parserprqlc-ast is merged into prqlc-parser, and prqlc-parser's files are rearranged, including its exports. This is part of an effort to modularize the compiler by stage, reducing the amount of context that's required to understand a single stage. There will likely be some further changes (more detail in the PR description). (@m-span, #4634)

    • This is a breaking change for any libraries that depend on prqlc-parser (which should be fairly rare).
  • Renamed prql-compiler-macros to prqlc-macros for consistency with other crates (@max-sixty, #4565)

  • prql-compiler, the old name for prqlc, is removed as a facade to prqlc. It had been deprecated for a few versions and will no longer be updated. (@max-sixty)

  • New benchmarks (@max-sixty, #4654)

New Contributors:

0.12.2

10 Jun 06:31
f283f9d
Compare
Choose a tag to compare

0.12.2 is a very small release which renames prql-js to prqlc-js to match our standard naming scheme. Within node the package is imported as prqlc.

It also fixes a mistake in the prqlc-python release pipeline.

0.12.1

09 Jun 01:03
f439a8f
Compare
Choose a tag to compare

0.12.1 is a tiny hotfix release which fixes how intra-prql crate dependencies were specified.

0.12.0

08 Jun 23:14
f718695
Compare
Choose a tag to compare

0.12.0 contains a few months of smaller features. Our focus has been on rewriting the resolver, an effort that is still ongoing. It has 239 commits from 12 contributors.

Selected changes (most are not listed here, possibly we should be more conscientious about adding them...):

Features:

  • Add prqlc lex command to the CLI (@max-sixty)
  • Add prqlc debug lineage command to the CLI, creating an expression lineage graph from a query (@kgutwin, #4533)
  • Initial implementation of an experimental documentation generator that generates Markdown documentation from .prql files. (@vanillajonathan, #4152).
  • Join's side parameter can take a reference that resolves to a literal (note: this is an experimental feature which may change in the future) (@kgutwin, #4499)

Fixes:

  • Support expressions on left hand side of std.in operator. (@kgutwin, #4498)
  • Prevent panic for from {} and std (@m-span, #4538)

Web:

  • The browser dist files are now built with wasm-pack's web target. As a result, they should be usable as ES Modules, through JS CDNs, and for example with Observable Framework (@srenatus, #4274).

Integrations:

New Contributors:

0.11.4

26 Feb 04:45
d94610e
Compare
Choose a tag to compare

0.11.4 is a hotfix release, fixing a CI issue that caused the CLI binaries to be built without the cli feature.

0.11.3

11 Feb 03:46
210107d
Compare
Choose a tag to compare

0.11.3 is a very small release, mostly a rename of the python bindings.

The release has 13 commits from 4 contributors.

0.11.2

08 Feb 00:36
db7165c
Compare
Choose a tag to compare

0.11.2 — 2023-02-07

0.11.2 contains lots of internal changes, lots of syntax highlighting, and the beginning of lutra, a query runner.

This release has 122 commits from 9 contributors. Selected changes include:

Features:

Fixes:

Integrations:

Internal changes:

  • prql-compiler has been renamed to prqlc, and we've established a more consistent naming scheme. The existing crate will still be published, re-exporting prqlc, so no dependencies will break. A future version will add a deprecation warning.
  • The prqlc-clib crate was renamed to prqlc-c, and associated artifacts were renamed. We're trying to make names consistent (ideally for the final time!), and have a plan to rename some other bindings. (@max-sixty, #4077)
  • Add lots of whitespace items to the lexer, in preparation for the completion of prqlc fmt (@max-sixty, #4109, #4105)
  • Table declarations (@aljazerzen, #4126)

New Contributors:

0.11.1

26 Dec 17:53
7500343
Compare
Choose a tag to compare

0.11.1 fixes a couple of small bugs; it comes a few days after 0.11.

This release has 16 commits from 6 contributors. Selected changes:

Features:

  • Infer the type of array literals to be the union of types of its items. (@aljazerzen, #3989)
  • prql module is added and the prql_version function is renamed to the prql.version function. The old prql_version function is deprecated and will be removed in the future release. (@eitsupi, #4006)

Fixes:

  • Do not compile to DISTINCT ON when take n is used with group for the targets clickhouse, duckdb and postgres. (@PrettyWood, #3988)
  • Fix take n rows for mssql dialect by switching from TOP to FETCH (@PrettyWood, #3994)

0.11.0

20 Dec 01:39
7f9b5df
Compare
Choose a tag to compare

0.11.0 introduces new date, text & math modules with lots of standard functions, including a new date.to_text function. It contains a few bugs fixes, and lots of internal improvements to the compiler.

This release has 119 commits from 9 contributors. Selected changes:

Language:

  • Breaking: group's by columns are now excluded from the partition. (#3490)
  • Breaking: round is now in the math module and needs to be called via math.round. (#3928)
  • Breaking: lower and upper are now in the text module and need to be called via text.lower and text.upper. (#3913, #3973)

Features:

  • The std.in function now supports a list of values (@PrettyWood, #3883)
  • Most standard mathematical functions are now supported: abs, floor, ceil, pi, exp, ln, log10, log, sqrt, degrees, radians, cos, acos, sin, asin, tan, atan, pow and round. Those functions are in the math module (@PrettyWood, #3909, #3916 & 3928)
  • Most standard string functions are now supported: ltrim, rtrim, trim, length, extract, replace. Utility functions starts_with, contains and ends_with are also available. Those functions are in the text module (@PrettyWood, #3913, #3973)
  • Formatting a date to a text is now available for Clickhouse, DuckDB, MySQL, MSSQL and Postgres. A new date module has been added with the to_text function (@PrettyWood, #3951, #3954 & #3955)

Fixes:

Web:

Internal changes:

New Contributors:

0.10.1

14 Nov 11:34
9e0f03b
Compare
Choose a tag to compare

0.10.1 is a small release containing some internal fixes of the compiler.

This release has 36 commits from 7 contributors. Selected changes:

Features:

  • The std.sql.read_csv function and the std.sql.read_parquet function supports the sql.glaredb target. (@eitsupi, #3749)

Fixes:

  • Fix the bug of compiling to DISTINCT ON when take 1 is used with group by for the targets sql.clickhouse, sql.duckdb and sql.postgres. (@aljazerzen, #3792)

Integrations: