Skip to content

Release Notes

Siddhartha Kasivajhula edited this page Jan 13, 2024 · 5 revisions

Qi 4 (Jan 2024)

Racket version compatibility

Qi formerly was supported on Racket 8.3+. It now works on Racket 8.5+.

Backwards incompatibilities

  • Qi syntax matches patterns literally rather than as datums, so Qi forms must be explicitly required and in scope in order to be used. Additionally, identically-named identifiers from other languages would need to be disambiguated in the require form, for instance by using prefix-in.
  • Mixing pure functions and undeclared effects (e.g. a displayln somewhere inside a function) is no longer honored (use an explicit side effect instead)
  • Higher-order functions that return functions to be used as flows now require an explicit esc, where formerly we could omit esc in this special case.
  • Formerly, Qi unintentionally accepted keyword arguments as flow inputs (e.g. (~>> (#:key identity 2 1 3) (sort <))). Keyword arguments are always accepted in partial applications, fine and blanket templates, but they are no longer accepted as runtime inputs (e.g. (~>> (2 1 3) (sort #:key identity <)) is still OK).
Clone this wiki locally