2024-01-02 06:08:56 +03:00
This CHANGELOG describes the merged but unreleased changes. Please see [CHANGELOG ](./CHANGELOG.md ) for changes to all previously released versions of Idris2. All new PRs should target this file (`CHANGELOG_NEXT`).
# Changelog
## [Next version]
2024-01-06 00:59:11 +03:00
### Building/Packaging changes
* The Nix flake's `buildIdris` function now returns a set with `executable` and
`library` attributes. These supersede the now-deprecated `build` and
`installLibrary` attributes. `executable` is the same as `build` and `library`
is a function that takes an argument determining whether the library should be
installed with sourcecode files or not; other than that, `library`
functionally replaces `installLibrary` .
2024-01-09 08:58:17 +03:00
* The Nix flake's `buildIdris` `executable` property (previously `build` ) has
been fixed in a few ways. It used to output a non-executable file for NodeJS
builds (now the file has the executable bit set). It used to output the
default Idris2 wrapper for Scheme builds which relies on utilities not
guaranteed at runtime by the Nix derivation; now it rewraps the output to only
depend on the directory containing Idris2's runtime support library.
2024-01-22 08:05:26 +03:00
* The Nix flake now exposes the Idris2 API package as `idris2Api` and Idris2's
2024-01-06 00:59:11 +03:00
C support library as `support` .
2024-01-02 06:08:56 +03:00
### Language changes
2024-01-02 06:47:36 +03:00
* Autobind and Typebind modifier on operators allow the user to
customise the syntax of operator to look more like a binder.
See [#3113 ](https://github.com/idris-lang/Idris2/issues/3113 ).
2024-02-12 09:43:17 +03:00
### Backend changes
#### RefC
* 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.
2024-01-02 06:08:56 +03:00
### Compiler changes
2024-01-22 16:25:22 +03:00
#### RefC Backend
* Fix invalid memory read onf strSubStr.
* Fix memory leaks of IORef. Now that IORef holds values by itself,
global_IORef_Storage is no longer needed.
2024-01-23 15:59:23 +03:00
* Pattern matching generates simpler code. This reduces malloc/free and memory
consumption. It also makes debugging easier.
2024-02-20 17:01:06 +03:00
* Stopped useless string copying in the constructor to save memory. Also, name
generation was stopped for constructors that have tags.
* Special constructors such as Nil and Nothing were eliminated and assigned to
NULL.
2024-01-06 23:11:33 +03:00
#### NodeJS Backend
* 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.
2024-01-02 06:08:56 +03:00
### Library changes
#### Prelude
#### Base
* `Data.List.Lazy` was moved from `contrib` to `base` .
* Added an `Interpolation` implementation for primitive decimal numeric types and `Nat` .
* Added append `(++)` for `List` version of `All` .
2024-01-14 20:26:51 +03:00
* Deprecate `bufferData` in favor of `bufferData'` . These functions are the same
with the exception of the latter dealing in `Bits8` which is more correct than
`Int` .
2024-01-15 16:01:25 +03:00
* Added an alternative `TTImp` traversal function `mapATTImp'` taking the original
`TTImp` at the input along with already traversed one. Existing `mapATTImp` is
implemented through the newly added one. The similar alternative for `mapMTTImp`
is added too.
2024-01-02 06:08:56 +03:00
#### Contrib
* `Data.List.Lazy` was moved from `contrib` to `base` .
* Existing `System.Console.GetOpt` was extended to support errors during options
parsing in a backward-compatible way.
2024-02-12 20:35:52 +03:00
#### Network
* Add a missing function parameter (the flag) in the C implementation of idrnet_recv_bytes