Acquis

Acquis are the accumulated changes and additions to the language. They are formally defined in advance and implemented incrementally, with dependency acquis implemented first so that other acquis can build upon them. Evolving the language through acquis allows for a delineated, documentable progression of the language across time. For those familiar with the term, acquis are functionally similar to RFCs, but there aren’t any actual requests for comments and it is more of a means of documenting and studying future changes to the language.

Not all changes necessarily go through an acquis. Bugfixes, test cases, commandline changes, and other minor alterations are often implemented directly. An acquis is mostly useful when drafting technically complex additions to the language that requires careful advance study, especially as it relates to preserving the minimalism of the language’s semantics or increasing the size of the runtime. Generally, when something requires the integration of an external library, an acquis is necessary.

Stable

Unstable

  • Acquis 28 - Flags : A readonly flags table populated from --flag/-F arguments and folded into conditionals at compile time.
  • Acquis 29 - Preinclusion : The --include flag parses modules at startup so require loads them without load or fs pledges.
  • Acquis 30 - Time : Immutable instant, duration, and zoned types with an embedded IANA tzdata database.
  • Acquis 33 - SQLite : File-backed and in-memory databases with prepared statements, transactions, and pledge-gated file access.
  • Acquis 34 - Queries : An in-syntax query language with lazy first-class query values and automatic provider push-down.