Skip to content

0.13.0

Compare
Choose a tag to compare
@max-sixty max-sixty released this 25 Jul 17:27
· 181 commits to main since this release
4c1ccb7

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: