# Changelog
## [0.4.1](https://github.com/terror/val/releases/tag/0.4.1) - 2026-07-31
### Fixed
- Package x86 macOS release archive ([#124](https://github.com/terror/val/pull/124) by [terror](https://github.com/terror))
- Build current WASM for web deployment ([#125](https://github.com/terror/val/pull/125) by [terror](https://github.com/terror))
- Prevent invalid evaluations from panicking ([#126](https://github.com/terror/val/pull/126) by [terror](https://github.com/terror))
- Use UTF-16 offsets for browser ranges ([#128](https://github.com/terror/val/pull/128) by [terror](https://github.com/terror))
- Disable incompatible WASM optimization ([#129](https://github.com/terror/val/pull/129) by [terror](https://github.com/terror))
- Fix mixed exact and approximate comparisons ([#130](https://github.com/terror/val/pull/130) by [terror](https://github.com/terror))
- Fix unicode diagnostic offsets ([#131](https://github.com/terror/val/pull/131) by [terror](https://github.com/terror))
- Count string length in unicode characters ([#132](https://github.com/terror/val/pull/132) by [terror](https://github.com/terror))
- Reject reserved words as identifiers ([#133](https://github.com/terror/val/pull/133) by [terror](https://github.com/terror))
### Misc
- Bump clap from 4.6.1 to 4.6.2 ([#119](https://github.com/terror/val/pull/119) by [app/dependabot](https://github.com/app/dependabot))
- Bump regex from 1.13.0 to 1.13.1 ([#120](https://github.com/terror/val/pull/120) by [app/dependabot](https://github.com/app/dependabot))
- Bump anyhow from 1.0.103 to 1.0.104 ([#121](https://github.com/terror/val/pull/121) by [app/dependabot](https://github.com/app/dependabot))
- Bump clap from 4.6.2 to 4.6.4 ([#122](https://github.com/terror/val/pull/122) by [app/dependabot](https://github.com/app/dependabot))
- Bump serde from 1.0.228 to 1.0.229 ([#123](https://github.com/terror/val/pull/123) by [app/dependabot](https://github.com/app/dependabot))
## [0.4.0](https://github.com/terror/val/releases/tag/0.4.0) - 2026-07-16
### Added
- Add for loop support and `range` builtin ([#64](https://github.com/terror/val/pull/64) by [terror](https://github.com/terror))
- Port numeric handling to exact rationals with `rug` ([#76](https://github.com/terror/val/pull/76) by [terror](https://github.com/terror))
- Add support for line comments ([#102](https://github.com/terror/val/pull/102) by [terror](https://github.com/terror))
- Add first-class function literals and postfix calls ([#103](https://github.com/terror/val/pull/103) by [terror](https://github.com/terror))
- Add `-d` shorthand for `--digits` ([#104](https://github.com/terror/val/pull/104) by [terror](https://github.com/terror))
- Allow implicit returns from function bodies ([#107](https://github.com/terror/val/pull/107) by [terror](https://github.com/terror))
### Fixed
- Resolve callees before evaluating function call arguments ([#109](https://github.com/terror/val/pull/109) by [terror](https://github.com/terror))
### Misc
- Sort integration tests alphabetically ([#63](https://github.com/terror/val/pull/63) by [terror](https://github.com/terror))
- Refactor builtins into typed registry ([#65](https://github.com/terror/val/pull/65) by [terror](https://github.com/terror))
- Unify builtin and user-defined function values ([#66](https://github.com/terror/val/pull/66) by [terror](https://github.com/terror))
- Enforce stricter set of clippy lints ([#67](https://github.com/terror/val/pull/67) by [terror](https://github.com/terror))
- Replace evaluator state booleans with `Context` counters ([#68](https://github.com/terror/val/pull/68) by [terror](https://github.com/terror))
- Extract assignment targets into dedicated syntax nodes ([#69](https://github.com/terror/val/pull/69) by [terror](https://github.com/terror))
- Refactor parser grammar and expression precedence handling ([#70](https://github.com/terror/val/pull/70) by [terror](https://github.com/terror))
- Split binary imports from library ([#71](https://github.com/terror/val/pull/71) by [terror](https://github.com/terror))
- Move `Symbol` into its own module ([#72](https://github.com/terror/val/pull/72) by [terror](https://github.com/terror))
- Reduce nested environment resolver branching ([#73](https://github.com/terror/val/pull/73) by [terror](https://github.com/terror))
- Sort methods for clippy item ordering ([#74](https://github.com/terror/val/pull/74) by [terror](https://github.com/terror))
- Add `val-changelog` crate ([#75](https://github.com/terror/val/pull/75) by [terror](https://github.com/terror))
- Add dependabot workflow ([#77](https://github.com/terror/val/pull/77) by [terror](https://github.com/terror))
- Bump executable-path from 1.0.0 to 1.0.1 ([#78](https://github.com/terror/val/pull/78) by [app/dependabot](https://github.com/app/dependabot))
- Bump chumsky from 0.10.1 to 0.13.0 ([#79](https://github.com/terror/val/pull/79) by [app/dependabot](https://github.com/app/dependabot))
- Bump clap from 4.5.51 to 4.5.60 ([#80](https://github.com/terror/val/pull/80) by [app/dependabot](https://github.com/app/dependabot))
- Bump rustyline from 15.0.0 to 18.0.0 ([#81](https://github.com/terror/val/pull/81) by [app/dependabot](https://github.com/app/dependabot))
- Remove generated web example assets ([#82](https://github.com/terror/val/pull/82) by [terror](https://github.com/terror))
- Bump tempfile from 3.23.0 to 3.27.0 ([#83](https://github.com/terror/val/pull/83) by [app/dependabot](https://github.com/app/dependabot))
- Bump criterion from 0.5.1 to 0.8.2 ([#84](https://github.com/terror/val/pull/84) by [app/dependabot](https://github.com/app/dependabot))
- Bump ariadne from 0.5.1 to 0.6.0 ([#85](https://github.com/terror/val/pull/85) by [app/dependabot](https://github.com/app/dependabot))
- Bump anyhow from 1.0.100 to 1.0.102 ([#86](https://github.com/terror/val/pull/86) by [app/dependabot](https://github.com/app/dependabot))
- Reorganize cargo manifest sections ([#87](https://github.com/terror/val/pull/87) by [terror](https://github.com/terror))
- Move prompt helper out of highlighter module ([#88](https://github.com/terror/val/pull/88) by [terror](https://github.com/terror))
- Refactor highlighter to use explicit highlight spans ([#89](https://github.com/terror/val/pull/89) by [terror](https://github.com/terror))
- Move inherent impls before trait impls ([#90](https://github.com/terror/val/pull/90) by [terror](https://github.com/terror))
- Use owned runtime strings without leaking generated values ([#91](https://github.com/terror/val/pull/91) by [terror](https://github.com/terror))
- Use shared frames for live closure environments ([#92](https://github.com/terror/val/pull/92) by [terror](https://github.com/terror))
- Add tests for logical operator short-circuiting ([#93](https://github.com/terror/val/pull/93) by [terror](https://github.com/terror))
- Deduplicate sequential statement evaluation ([#94](https://github.com/terror/val/pull/94) by [terror](https://github.com/terror))
- Avoid cloning lists in evaluator read paths ([#95](https://github.com/terror/val/pull/95) by [terror](https://github.com/terror))
- Extract publish workflow into standalone script ([#96](https://github.com/terror/val/pull/96) by [terror](https://github.com/terror))
- Remove nightly setup from install-dev-deps ([#97](https://github.com/terror/val/pull/97) by [terror](https://github.com/terror))
- Stop opening benchmark report automatically ([#98](https://github.com/terror/val/pull/98) by [terror](https://github.com/terror))
- Move `RoundingMode` conversion before parsing ([#99](https://github.com/terror/val/pull/99) by [terror](https://github.com/terror))
- Enable rug-backed wasm builds ([#100](https://github.com/terror/val/pull/100) by [terror](https://github.com/terror))
- Refactor playground architecture ([#101](https://github.com/terror/val/pull/101) by [terror](https://github.com/terror))
- Clean up stale readme output examples ([#105](https://github.com/terror/val/pull/105) by [terror](https://github.com/terror))
- Centralize builtin arity metadata ([#106](https://github.com/terror/val/pull/106) by [terror](https://github.com/terror))
- Remove verbose decimal doc comments ([#108](https://github.com/terror/val/pull/108) by [terror](https://github.com/terror))
- Bump regex from 1.12.3 to 1.12.4 ([#110](https://github.com/terror/val/pull/110) by [app/dependabot](https://github.com/app/dependabot))
- Bump clap from 4.5.60 to 4.6.1 ([#111](https://github.com/terror/val/pull/111) by [app/dependabot](https://github.com/app/dependabot))
- Bump rustyline from 18.0.0 to 18.0.1 ([#112](https://github.com/terror/val/pull/112) by [app/dependabot](https://github.com/app/dependabot))
- Bump anyhow from 1.0.102 to 1.0.103 ([#113](https://github.com/terror/val/pull/113) by [app/dependabot](https://github.com/app/dependabot))
- Bump regex from 1.12.4 to 1.13.0 ([#114](https://github.com/terror/val/pull/114) by [app/dependabot](https://github.com/app/dependabot))
## [0.3.6](https://github.com/terror/val/releases/tag/0.3.6) - 2025-04-19
### Added
- Re-introduce `serde` in wasm library ([#37](https://github.com/terror/val/pull/37) by [terror](https://github.com/terror))
- Add web deployment workflow ([#39](https://github.com/terror/val/pull/39) by [terror](https://github.com/terror))
### Fixed
- Don't highlight trailing whitespace for ast nodes ([#41](https://github.com/terror/val/pull/41) by [terror](https://github.com/terror))
- Fix incorrect example output in readme ([#42](https://github.com/terror/val/pull/42) by [terror](https://github.com/terror))
### Misc
- Rename `hoc` example to `hof` ([#43](https://github.com/terror/val/pull/43) by [terror](https://github.com/terror))
- Add math example ([#44](https://github.com/terror/val/pull/44) by [terror](https://github.com/terror))
- Push left-hand side of assignments in wasm ast node ([#46](https://github.com/terror/val/pull/46) by [terror](https://github.com/terror))
- Add benchmark for precise value increments ([#47](https://github.com/terror/val/pull/47) by [terror](https://github.com/terror))
## [0.3.5](https://github.com/terror/val/releases/tag/0.3.5) - 2025-04-18
### Added
- Alias import `BigFloat` to `Float` ([#32](https://github.com/terror/val/pull/32) by [terror](https://github.com/terror))
### Misc
- Parse power binary operations as right associative ([#30](https://github.com/terror/val/pull/30) by [terror](https://github.com/terror))
- Add additional float display tests ([#33](https://github.com/terror/val/pull/33) by [terror](https://github.com/terror))
## [0.3.4](https://github.com/terror/val/releases/tag/0.3.4) - 2025-04-18
### Added
- Export `eval` function to wasm ([#25](https://github.com/terror/val/pull/25) by [terror](https://github.com/terror))
## [0.3.3](https://github.com/terror/val/releases/tag/0.3.3) - 2025-04-18
### Added
- Allow users to configure the stack size ([#20](https://github.com/terror/val/pull/20) by [terror](https://github.com/terror))
- Use `astro-float` defined constants for `e` and `pi` ([#22](https://github.com/terror/val/pull/22) by [terror](https://github.com/terror))
- Use `pi` constant to compute `tau` ([#23](https://github.com/terror/val/pull/23) by [terror](https://github.com/terror))
### Fixed
- Use lowercase equivalents for hardcoded float output ([#17](https://github.com/terror/val/pull/17) by [terror](https://github.com/terror))
- Fix `e` built-in constant computation ([#21](https://github.com/terror/val/pull/21) by [terror](https://github.com/terror))
## [0.3.2](https://github.com/terror/val/releases/tag/0.3.2) - 2025-04-17
### Added
- Add built-in `append` function for lists ([#12](https://github.com/terror/val/pull/12) by [terror](https://github.com/terror))
- Add built-in `gcd` and `lcm` functions ([#13](https://github.com/terror/val/pull/13) by [terror](https://github.com/terror))
### Misc
- Don't re-create evaluator each iteration ([#14](https://github.com/terror/val/pull/14) by [terror](https://github.com/terror))
## [0.3.1](https://github.com/terror/val/releases/tag/0.3.1) - 2025-04-17
### Added
- Parse and evaluate `null` expressions ([#4](https://github.com/terror/val/pull/4) by [terror](https://github.com/terror))
- Add built-in constants for `phi` and `tau` ([#7](https://github.com/terror/val/pull/7) by [terror](https://github.com/terror))
### Misc
- Update readme image ([#3](https://github.com/terror/val/pull/3) by [terror](https://github.com/terror))
- Add `null` section under values in readme ([#6](https://github.com/terror/val/pull/6) by [terror](https://github.com/terror))
- Add help template to arguments ([#8](https://github.com/terror/val/pull/8) by [terror](https://github.com/terror))
- Remove parts conversion in float display ([#9](https://github.com/terror/val/pull/9) by [terror](https://github.com/terror))
- Explicitly set features for `astro-float` dependency ([#10](https://github.com/terror/val/pull/10) by [terror](https://github.com/terror))
## [0.3.0](https://github.com/terror/val/releases/tag/0.3.0) - 2025-04-17
### Added
- Use `astro-float` as the base for numbers ([#1](https://github.com/terror/val/pull/1) by [terror](https://github.com/terror))
## [0.2.0](https://github.com/terror/val/releases/tag/0.2.0) - 2025-04-17
### Added
- Add initial language, evaluator, and web playground support
## [0.1.1](https://github.com/terror/val/releases/tag/0.1.1) - 2025-04-15
### Added
- Add initial command-line interface and function support
## [0.1.0](https://github.com/terror/val/releases/tag/0.1.0) - 2025-04-13
### Added
- Initial release