It has been nearly 2 years since the previous release, so it was high time for a new one and here it is!
Highlights include:
- Autobind and Typebind modifier on operators allow the user to customise the syntax of operator to look more like a binder.
- Totality checking will now look under data constructors, so
Just xswill be considered smaller thanJust (x :: xs). - Typst files can be compiled as Literate Idris.
- Constructors with certain tags (
CONS,NIL,JUST,NOTHING) are replaced with_builtin.<TAG>(eg_builtin.CONS). This allows the identity optimisation to optimise conversions between list-shaped things. - Refactored
Uninhabitedimplementation forData.List.Elem,Data.List1.Elem,Data.SnocList.Elem, andData.Vect.Elemso it can be used for homogeneous (===) and heterogeneous (~=~) equality. - The
RefCbackend compiler can emit precise reference counting instructions where a reference is dropped as soon as possible. This allows you to reuse unique variables and optimize memory consumption. - Fix memory leaks of
IORefinRefCbackend. Now thatIORefholds values by itself,global_IORef_Storageis no longer needed. - The NodeJS executable output to
build/exec/now has its executable bit set. That file already had a NodeJS shebang at the top, so now it is fully ready to go after compilation.
For a detailed list of changes, please see the CHANGELOG.
As always, thanks to the many people who have contributed, both old and new, whether by adding features, fixing code, reporting issues, or anything else. You can find a list of names in CONTRIBUTORS.
Happy Hallowe'en! Have fun!