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