Bend/CHANGELOG.md

446 lines
14 KiB
Markdown
Raw Permalink Normal View History

2024-06-05 17:03:29 +03:00
# Changelog
2024-06-06 00:51:36 +03:00
All notable changes to this project will be documented in this file.
2024-06-06 17:35:47 +03:00
2024-06-06 00:51:36 +03:00
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
2024-06-07 22:14:53 +03:00
and this project does not currently adhere to a particular versioning scheme.
2024-06-06 00:15:56 +03:00
## [Unreleased]
### Added
- Emit a warning when a rule in a pattern matching function is unreachable. ([#736][gh-736])
### Fixed
- Fix type checker not properly unifying all the arms of a match expression. ([#734][gh-734])
2024-10-18 14:22:07 +03:00
## [0.2.37] - 2024-10-18
2024-07-05 16:14:53 +03:00
### Fixed
- Fix variable binding in pattern matching when the irrefutable pattern optimization occurs. ([#618][gh-618])
2024-07-24 19:13:04 +03:00
- Don't warn on unused generated definitions. ([#514][gh-514])
- Fix local definitions not being desugared properly. ([#623][gh-623])
- Expand references to functions generated by the `float_combinators` pass inside the main function. ([#642][gh-642])
- Expand references inside constructors in the main function. ([#643][gh-643])
- Fix readback when hvm net has `a{n}` or `x{n}` vars. ([#659][gh-659])
2024-08-16 20:25:43 +03:00
- Fix imported constructors not being updated to Constructor expression. ([#674][gh-674])
- Fix parse error on parenthesized eraser. ([#675][gh-675])
2024-08-29 16:57:47 +03:00
- Fix IO/FS/read_line when the line ends with a EOF. ([#638][gh-638])
2024-09-05 16:17:47 +03:00
- Fix lambda body being parsed as tuple in imp syntax. ([#706][gh-706])
2024-07-05 16:14:53 +03:00
### Added
- Add type system for Bend. ([#615][gh-615], [#679][gh-679], see [Type Checking](docs/type-checking.md))
- Add import system. ([#544][gh-544])
- Add multi line comment `#{ ... #}` syntax. ([#595][gh-595])
- Add error message when input file is not found. ([#513][gh-513])
2024-07-12 18:39:05 +03:00
- Add `List/filter` and `String/{equals, filter}` builtins.
- Add IO functions for loading dynamically linked libraries (`IO/DyLib/open`, `IO/DyLib/call`, `IO/DyLib/close`). ([#621][gh-621])
2024-07-22 15:55:48 +03:00
### Changed
- Change tuple syntax to not require parentheses in some cases. ([#554][gh-554])
2024-07-25 16:26:31 +03:00
- Improve error messages in branching statements. ([#464][gh-464])
2024-08-02 17:33:56 +03:00
- Change branches to support ending with ask statements. ([#629][gh-629])
2024-08-05 17:06:31 +03:00
- Improve hexadecimal and binary floating numbers. ([#648][gh-648])
2024-08-07 16:52:03 +03:00
- Change IO functions to return Result. ([#657][gh-657])
2024-08-19 15:08:33 +03:00
- Revamp the diagnostics system and parser to show more error and warning messages ([#673][gh-673])
2024-07-22 15:55:48 +03:00
2024-07-04 15:24:20 +03:00
## [0.2.36] - 2024-07-04
2024-06-06 22:44:04 +03:00
2024-06-10 16:10:29 +03:00
### Changed
2024-06-10 18:19:05 +03:00
- Improve error messages for redefinition of types and objects. ([#485][gh-485])
- Don't allow tabs to be used for indentation or spacing. ([#463][gh-463])
2024-06-18 19:58:34 +03:00
- Rename builtin function `sleep` to `IO/nanosleep`. ([#581][gh-581])
2024-06-24 18:45:15 +03:00
- Equational number pattern compilation to use the predecessor variable when possible. ([#470][gh-470])
- Rename `Bytes/decode_utf8` to `String/decode_utf8` and `Bytes/decode_ascii` to `String/decode_ascii`.
- Rename `log` to `Math/log` and `atan2` to `Math/atan2`.
2024-06-10 16:10:29 +03:00
2024-06-06 22:44:04 +03:00
### Fixed
2024-06-15 17:07:51 +03:00
- Fix readback of numeric operations. ([#467][gh-467])
- Propagate the "builtin" attribute of definitions when extracting functions from `bend` and `fold` syntax.
2024-06-25 23:50:13 +03:00
- Panic while using unscoped variables on definition patterns. ([#468][gh-468])
2024-06-06 22:44:04 +03:00
2024-06-13 15:11:14 +03:00
### Added
2024-06-15 17:07:51 +03:00
- Create new type of top-level definition for writing native HVM definitions. ([#586][gh-586])
2024-06-15 21:51:11 +03:00
- Add `log` and `atan2` builtin functions. ([#583][gh-583])
- Add `to_f24`, `to_u24` and `to_i24` number casting builtin functions. ([#582][gh-582])
2024-06-18 19:58:34 +03:00
- Add `IO/sleep` builtin function to sleep for a given amount of seconds as a float. ([#581][gh-581])
2024-06-12 18:35:30 +03:00
- Add primitive file IO functions `IO/FS/{read, write, seek, open, close}`. ([#573][gh-573])
2024-06-19 15:52:55 +03:00
- Add encoding/decoding builtin functions `Bytes/{decode_utf8, decode_ascii} String/{encode_ascii, decode_ascii} Utf8/{decode_character, REPLACEMENT_CHARACTER}`. ([#580][gh-580])
2024-06-21 21:16:10 +03:00
- Add `IO/print` function to print to stdout. ([#579][gh-579])
- Add `IO/input` function to read a line of input from stdin. ([#579][gh-579])
- Add file IO utilities `IO/FS/{read_file, write_file, read_line, read_to_end}`. ([#578][gh-578])
2024-06-24 17:15:28 +03:00
- Add list utilities `List/{length, reverse, flatten, concat}`.
2024-06-20 22:12:49 +03:00
- Add `elif` chains to functional syntax. ([#596][gh-596])
2024-06-28 15:54:15 +03:00
- Add local definitions to imperative syntax. ([#562][gh-562])
- Add local definitions to functional syntax.
2024-07-03 20:13:27 +03:00
- Add repeated field name error message.
2024-07-05 15:16:42 +03:00
- Add `Math` builtin functions. ([#570][gh-570])
2024-07-05 02:28:08 +03:00
- Add primitive file IO function `IO/FS/flush`. ([#598][gh-598])
2024-07-12 03:33:11 +03:00
- Changed `bend run` to `bend run-rs` and `bend run` defaults to the C implementation. ([#620][gh-620])
2024-06-13 15:11:14 +03:00
2024-06-06 00:51:36 +03:00
## [0.2.35] - 2024-06-06
2024-06-05 17:03:29 +03:00
2024-06-06 00:51:36 +03:00
### Changed
- Make lambda `Term` with bind patterns display as `let` terms. ([#466][gh-466])
## [0.2.34] - 2024-06-05
### Added
2024-06-15 17:07:51 +03:00
- Add syntax for "less than or equal" `<=` and "greater than or equal" `>=` numeric operators. ([#451][gh-451])
2024-06-06 00:51:36 +03:00
## [0.2.33] - 2024-06-05
### Added
- Implement `expand_main`, a compilation pass that expands references in the entry point function. ([#424][gh-424])
### Changed
- Make the `float_combinators` pass no longer extract in the entry point function. ([#424][gh-424])
## [0.2.32] - 2024-06-05
### Added
- Implement the built-in `Tree` datatype. ([#528][gh-528])
- Implement `![]` and `!` syntax for `Tree` literals. ([#528][gh-528])
- Create a changelog.
### Changed
- Move the builtins documentation to `/docs`.
## [0.2.30] - 2024-06-04
### Changed
- No longer expand generated recursive definitions. ([#502][gh-502])
## [0.2.29] - 2024-06-04
### Added
- Support custom HVM binaries. ([#479][gh-479])
### Changed
- Make monadic blocks lazy by deferring execution of continuations with free vars. ([#526][gh-526])
## [0.2.28] - 2024-05-30
### Added
- Support mapper statements. ([#465][gh-465])
## [0.2.27] - 2024-05-29
### Changed
2024-06-12 19:50:55 +03:00
- Make `with` clauses take a bind and an argument. ([#516][gh-516])
2024-06-06 00:51:36 +03:00
2024-06-12 16:54:16 +03:00
## [0.2.26] - 2024-05-28
### Changed
2024-06-12 19:50:55 +03:00
- `do` keyword to `with`. ([#494][gh-494])
2024-06-12 16:54:16 +03:00
### Added
2024-06-12 19:50:55 +03:00
- `wrap` alias inside `with` blocks. ([#494][gh-494])
2024-06-12 16:54:16 +03:00
## [0.2.25] - 2024-05-28
### Added
2024-06-12 19:50:55 +03:00
- Generated constructor tags. ([#512][gh-512])
2024-06-12 16:54:16 +03:00
## [0.2.24] - 2024-05-27
### Added
2024-06-12 19:50:55 +03:00
- `elif` chains. ([#427][gh-427])
2024-06-12 16:54:16 +03:00
## [0.2.23] - 2024-05-27
### Fixed
- `gen-cu` and `gen-c` commands after move to HVM syntax tree.
## [0.2.22] - 2024-05-26
### Changed
2024-06-12 19:50:55 +03:00
- Rust channel from `nightly` to `stable`. ([#486][gh-486])
2024-06-12 16:54:16 +03:00
## [0.2.21] - 2024-05-25
### Changed
2024-06-12 19:50:55 +03:00
- HVM syntax tree for representing inets inside the compiler. ([#475][gh-475])
2024-06-12 16:54:16 +03:00
## [0.2.20] - 2024-05-24
### Fixed
2024-06-12 19:50:55 +03:00
- Map getters generation inside map setters. ([#489][gh-489])
2024-06-12 16:54:16 +03:00
## [0.2.19] - 2024-05-24
### Changed
2024-06-12 19:50:55 +03:00
- Variable names to not allow `__`. ([#478][gh-478])
2024-06-12 16:54:16 +03:00
## [0.2.18] - 2024-05-24
### Fixed
2024-06-12 19:50:55 +03:00
- Nested map getters generation. ([#483][gh-483])
2024-06-12 16:54:16 +03:00
## [0.2.17] - 2024-05-23
### Changed
2024-06-12 19:50:55 +03:00
- Top-level names to not start with `//`. ([#443][gh-443])
2024-06-12 16:54:16 +03:00
## [0.2.16] - 2024-05-23
### Added
- New `IO` builtins.
### Fixed
- Definition pruning transformation.
## [0.2.15] - 2024-05-22
### Fixed
2024-06-12 19:50:55 +03:00
- Exponentiation miscompilation. ([#444][gh-444])
2024-06-12 16:54:16 +03:00
## [0.2.14] - 2024-05-22
### Changed
- Inet level eta-reduction pass to not reduce number nodes.
## [0.2.13] - 2024-05-22
### Fixed
- Scope of `fork`.
## [0.2.12] - 2024-05-22
### Changed
- Functional syntax `data` keyword to `type`.
## [0.2.11] - 2024-05-22
### Added
- List comprehension.
- Bit shift left and Bit shift right.
## [0.2.10] - 2024-05-21
### Changed
- Numbers to new HVM number operation format.
- Rules definition to be in a single block.
- Disabled `net-size` check by default.
2024-06-12 19:50:55 +03:00
## [0.2.9] - 2024-05-19
### Changed
- Readback error messages.
2024-06-12 16:54:16 +03:00
## [0.2.8] - 2024-05-19
### Changed
- Increase max net size.
- `check-net-size` to be optional.
## [0.2.7] - 2024-05-17
### Added
- Apache-2.0 License.
2024-06-12 16:54:16 +03:00
## [0.2.6] - 2024-05-17
2024-06-12 19:50:55 +03:00
### Added
- Simple readback of tuples.
2024-06-12 16:54:16 +03:00
### Changed
- Imperative syntax to require `,` in list-like builtins.
2024-06-12 19:50:55 +03:00
### Fixed
- Empty map parsing.
## [0.2.5] - 2024-05-16
### Added
- Exponentiation `**` operator.
### Changed
- `go` to `fork` inside `bend` statement.
2024-06-12 19:54:07 +03:00
## [0.2.4] - 2024-05-15
2024-06-12 19:50:55 +03:00
### Changed
- New version for hvm-core compatibility.
2024-06-12 19:54:07 +03:00
## [0.2.3] - 2024-05-15
2024-06-12 19:50:55 +03:00
### Changed
- Rename to `bend-lang`.
- Use crates.io HVM.
### Added
- List readback.
## [0.2.2] - 2024-05-15
### Changed
- Comments from `//` to `#`.
- Lambda syntax and built-in constructor names.
- Fold to require explicit state passing.
### Added
- Record types and destructuring.
- String readback.
## [0.2.1] - 2024-05-15
### Fixed
- Number parsing in imperative syntax.
### Changed
- Require `\n` after return.
2024-06-06 00:51:36 +03:00
## [0.2.0] - 2024-05-14
2024-06-05 17:03:29 +03:00
2024-06-06 00:15:56 +03:00
- Initial public release of Bend.
2024-06-06 00:51:36 +03:00
[0.2.0]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.0
[0.2.1]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.1
[0.2.2]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.2
2024-06-12 19:50:55 +03:00
[0.2.3]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.3
[0.2.4]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.4
[0.2.5]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.5
2024-06-12 16:54:16 +03:00
[0.2.6]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.6
[0.2.7]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.7
2024-06-12 16:54:16 +03:00
[0.2.8]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.8
[0.2.9]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.9
2024-06-12 16:54:16 +03:00
[0.2.10]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.10
[0.2.11]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.11
[0.2.12]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.12
[0.2.13]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.13
[0.2.14]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.14
[0.2.15]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.15
[0.2.16]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.16
[0.2.17]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.17
[0.2.18]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.18
[0.2.19]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.19
[0.2.20]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.20
[0.2.21]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.21
[0.2.22]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.22
[0.2.23]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.23
[0.2.24]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.24
[0.2.25]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.25
[0.2.26]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.26
2024-06-06 00:51:36 +03:00
[0.2.27]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.27
[0.2.28]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.28
[0.2.29]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.29
[0.2.30]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.30
[0.2.32]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.32
[0.2.33]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.33
[0.2.34]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.34
[0.2.35]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.35
2024-07-04 15:24:20 +03:00
[0.2.36]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.36
2024-10-18 14:22:07 +03:00
[0.2.37]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.37
[Unreleased]: https://github.com/HigherOrderCO/Bend/compare/0.2.37...HEAD
2024-06-06 00:51:36 +03:00
[gh-424]: https://github.com/HigherOrderCO/Bend/issues/424
2024-06-12 19:50:55 +03:00
[gh-427]: https://github.com/HigherOrderCO/Bend/issues/427
[gh-443]: https://github.com/HigherOrderCO/Bend/issues/443
[gh-444]: https://github.com/HigherOrderCO/Bend/issues/444
2024-06-06 00:51:36 +03:00
[gh-451]: https://github.com/HigherOrderCO/Bend/issues/451
2024-06-10 18:19:05 +03:00
[gh-463]: https://github.com/HigherOrderCO/Bend/issues/463
2024-07-25 16:26:31 +03:00
[gh-464]: https://github.com/HigherOrderCO/Bend/issues/464
2024-06-06 00:51:36 +03:00
[gh-465]: https://github.com/HigherOrderCO/Bend/issues/465
[gh-466]: https://github.com/HigherOrderCO/Bend/issues/466
2024-06-06 22:44:04 +03:00
[gh-467]: https://github.com/HigherOrderCO/Bend/issues/467
2024-06-25 23:50:13 +03:00
[gh-468]: https://github.com/HigherOrderCO/Bend/issues/468
2024-06-24 18:45:15 +03:00
[gh-470]: https://github.com/HigherOrderCO/Bend/issues/470
2024-06-12 19:50:55 +03:00
[gh-475]: https://github.com/HigherOrderCO/Bend/issues/475
[gh-478]: https://github.com/HigherOrderCO/Bend/issues/478
2024-06-06 00:51:36 +03:00
[gh-479]: https://github.com/HigherOrderCO/Bend/issues/479
2024-06-12 19:50:55 +03:00
[gh-483]: https://github.com/HigherOrderCO/Bend/issues/483
2024-06-10 16:10:29 +03:00
[gh-485]: https://github.com/HigherOrderCO/Bend/issues/485
2024-06-12 19:50:55 +03:00
[gh-486]: https://github.com/HigherOrderCO/Bend/issues/486
[gh-489]: https://github.com/HigherOrderCO/Bend/issues/489
[gh-494]: https://github.com/HigherOrderCO/Bend/issues/494
2024-06-06 00:51:36 +03:00
[gh-502]: https://github.com/HigherOrderCO/Bend/issues/502
2024-06-12 19:50:55 +03:00
[gh-512]: https://github.com/HigherOrderCO/Bend/issues/512
[gh-513]: https://github.com/HigherOrderCO/Bend/issues/513
[gh-514]: https://github.com/HigherOrderCO/Bend/issues/514
2024-06-12 19:50:55 +03:00
[gh-516]: https://github.com/HigherOrderCO/Bend/issues/516
2024-06-06 00:51:36 +03:00
[gh-526]: https://github.com/HigherOrderCO/Bend/issues/526
[gh-528]: https://github.com/HigherOrderCO/Bend/issues/528
[gh-544]: https://github.com/HigherOrderCO/Bend/pull/544
2024-07-22 15:55:48 +03:00
[gh-554]: https://github.com/HigherOrderCO/Bend/issues/554
2024-06-28 15:54:15 +03:00
[gh-562]: https://github.com/HigherOrderCO/Bend/issues/562
2024-07-05 15:16:42 +03:00
[gh-570]: https://github.com/HigherOrderCO/Bend/issues/570
2024-06-12 18:35:30 +03:00
[gh-573]: https://github.com/HigherOrderCO/Bend/issues/573
2024-06-21 21:16:10 +03:00
[gh-578]: https://github.com/HigherOrderCO/Bend/issues/578
[gh-579]: https://github.com/HigherOrderCO/Bend/issues/579
2024-06-19 01:11:07 +03:00
[gh-580]: https://github.com/HigherOrderCO/Bend/issues/580
2024-07-05 15:16:42 +03:00
[gh-581]: https://github.com/HigherOrderCO/Bend/issues/581
2024-06-15 21:51:11 +03:00
[gh-582]: https://github.com/HigherOrderCO/Bend/issues/582
2024-06-13 15:11:14 +03:00
[gh-583]: https://github.com/HigherOrderCO/Bend/issues/583
2024-06-15 17:07:51 +03:00
[gh-586]: https://github.com/HigherOrderCO/Bend/issues/586
[gh-595]: https://github.com/HigherOrderCO/Bend/issues/595
2024-06-20 22:12:49 +03:00
[gh-596]: https://github.com/HigherOrderCO/Bend/issues/596
[gh-598]: https://github.com/HigherOrderCO/Bend/issues/598
2024-07-05 16:14:53 +03:00
[gh-618]: https://github.com/HigherOrderCO/Bend/issues/618
2024-07-12 03:33:11 +03:00
[gh-620]: https://github.com/HigherOrderCO/Bend/issues/620
2024-07-12 18:39:05 +03:00
[gh-621]: https://github.com/HigherOrderCO/Bend/issues/621
[gh-623]: https://github.com/HigherOrderCO/Bend/issues/623
2024-08-02 17:33:56 +03:00
[gh-629]: https://github.com/HigherOrderCO/Bend/issues/629
2024-09-05 16:17:47 +03:00
[gh-638]: https://github.com/HigherOrderCO/Bend/issues/638
[gh-642]: https://github.com/HigherOrderCO/Bend/issues/642
[gh-643]: https://github.com/HigherOrderCO/Bend/issues/643
2024-08-05 17:06:31 +03:00
[gh-648]: https://github.com/HigherOrderCO/Bend/issues/648
2024-08-07 16:52:03 +03:00
[gh-657]: https://github.com/HigherOrderCO/Bend/issues/657
[gh-659]: https://github.com/HigherOrderCO/Bend/pull/659
2024-08-19 15:08:33 +03:00
[gh-673]: https://github.com/HigherOrderCO/Bend/pull/673
2024-08-16 20:25:43 +03:00
[gh-674]: https://github.com/HigherOrderCO/Bend/issues/674
[gh-675]: https://github.com/HigherOrderCO/Bend/issues/675
2024-09-05 16:17:47 +03:00
[gh-706]: https://github.com/HigherOrderCO/Bend/issues/706
[gh-734]: https://github.com/HigherOrderCO/Bend/issues/734
[gh-736]: https://github.com/HigherOrderCO/Bend/issues/736