Releases: SchoolyB/EZ
Releases · SchoolyB/EZ
v3.2.1
3.2.1 (2026-05-05)
Bug Fixes
- codegen: drop extra stream arg in non-container char print (81bfbdf)
- codegen: heap-allocate mangled buffer in monomorphisation forward decl (01a1842)
- io: create copy_file destination with mode 0644 instead of 0666 (e444039)
Performance Improvements
- codegen: build func-field index once instead of nested struct scan (eced4b2)
- codegen: replace find_func linear scan with sorted bsearch index (2dbb8ff)
- error_codes: replace chained strcmp with sorted bsearch lookup (5d36216)
- typechecker: replace chained strcmp in type_from_name with bsearch table (e62f607)
v3.2.0
3.2.0 (2026-05-04)
Features
- pass --quiet and --no-color flags through ez watch (#1606) (e35016e), closes #1573
- stdlib: add base parameter to strconv.to_int/to_uint (#1603) (3fd62c8)
- stdlib: add strconv module (#1603) (fbc995e)
- stdlib: add strconv module for string/type conversions (#1603) (ae8a310)
Bug Fixes
- cli: remove duplicate --no-color flag on watchCmd (1935e83)
- parser: replace uppercase heuristic with struct name prescan (e72004b)
- parser: suppress struct literal parsing on RHS of comparisons (0db8b88)
- repo: enable blank issues in issue template config (3f8db8f)
- stdlib: complete strconv module wiring (Makefile, fallible tables) (#1603) (20e7ee0)
- typechecker: allow type names in size_of while rejecting bare builtin functions (b67ee7c)
- typechecker: enforce private access, reject nonexistent struct functions, catch struct type mismatches (#1599) (4151ca7)
- typechecker: reject bare builtin names used as values (3e48888)
- typechecker: suppress false W1002 warnings for sub-file imports (5df0121)
v3.1.2
3.1.2 (2026-05-02)
Bug Fixes
- parser,typechecker: parse complex multi-return types and hide internal name prefixes (88c5c3b)
- typechecker: handle multi-return and arg validation for module calls (5669924)
- typechecker: handle range exprs in import rewriting and in/!in type checks (6d2f8c1)
- typechecker: validate argument types for stdlib function calls (6f34119)
- wire arrays.remove() function (bfc8f03)
v3.1.1
3.1.1 (2026-05-01)
Bug Fixes
- codegen: remove two unused-variable warnings (121647d)
- codegen: remove two unused-variable warnings (#1597) (8cbc765)
- codegen: resolve struct function return types in resolve_print_suffix (#1595) (8b4647a)
- import system, cast system, and code quality improvements (542ecd0)
- imports: propagate stdlib imports from transitive files (#1596) (9bc943f)
- imports: resolve transitive paths, diamond deps, and directory imports (#1596) (377c170)
- imports: sibling cross-references, spurious W2013, and redundant file warning (#1596) (e9814a9)
- imports: sibling struct access, W2015 namespace hint, W2013 transitive suppression (#1596) (144bbc3)
- test: correct relative path in dir-transitive test (#1596) (6827f2b)
- typechecker: various bugs in the cast() system (#1598) (b6dfc20)
v3.1.0
3.1.0 (2026-04-29)
Features
Bug Fixes
- codegen: map HttpRequest/HttpResponse to correct C types (#1585) (2cc6dbd)
- codegen: resolve wildcard type in string interpolation (#1584) (646f1cb)
- codegen: revert string/char quote encapsulation in print functions (#1580) (f0cdb28)
- stdlib: wire 7 partially implemented stdlib functions end-to-end (#1580) (8d6b8bd)
- typechecker hardening, stdlib wiring, and code scanning fixes (dd5fe8b)
- typechecker,codegen: validate 'in' operator types and wire string containment (#1589, #1590) (ddbd4f5)
- typechecker: allow enum values in 'in' operator for matching collections (#1589) (c85bb8c)
- typechecker: exempt built-in Error type from E4016 and fix missed e2e expectations (#1585) (014a814)
- typechecker: format array/map types in error messages (#1589) (bdb6570)
- typechecker: register HttpRequest type and scope HTTP types to imports (#1585) (58b3bbe)
- typechecker: reject return statements with too many values (#1588) (7397aee)
- typechecker: reject type names passed to type_of() (#1586) (f573e12)
- typechecker: reject undefined/unimported struct types (#1585) (da55c33)
- typechecker: scope HttpRequest to server module only (#1585) (7095990)
- typechecker: validate argument count for struct function calls (#1587) (fd0695e)
- typechecker: validate argument types for range, assert, exit, panic builtins (#1591) (ef21472)
v3.0.0
EZ 3.0 is a ground-up rewrite. The Go interpreter is gone. In its place: a full C compiler backend that takes .ez source, emits C, and produces native binaries.
Highlights
- Native compilation -
.ezto C to binary. Real native code. - Scope-based memory management - arena allocators per scope, automatic cleanup, no garbage collector.
- Pointers -
^Typesyntax,new()returns pointers,addr(), auto-deref on struct fields. - Functions as first-class types -
func(int, int) -> intsignatures, store them, pass them, return them. - C interop -
import c"stdio.h", call C functions withc.func(). - Wide integers -
i256/u256new,i128/u128reimplemented as portable structs. - 27 stdlib modules on native code - plus new modules:
@net,@atomic,@mem,@fmt,@sync,@channels. - Wildcard types -
?for generic-style functions, monomorphised per call site. - Single embedded binary - one
ezbinary ships everything. - 1,200+ tests - unit, e2e, integration, sanitizer builds.
Breaking changes
temprenamed tomut@stdremoved - all functions are builtins nownew()returns^Structpointersbare funcremoved - use full signatures:func(int) -> intimport & usereplaced byimport and usenilis a value, not a typeez runremoved - useez <file.ez>
See CHANGELOG.md for the full curated changelog.
Installation
curl -fsSL https://raw.githubusercontent.com/SchoolyB/EZ/main/install.sh | bashOr build from source:
git clone https://github.com/SchoolyB/EZ.git && cd EZ
make build && make installv3.0.0-beta.12
EZ v3.0.0 Beta
This is a pre-release. Not recommended for production use.
Changes since last release
- test: add E3083 c_string() non-pointer tests (#1575)
- fix(typechecker): validate c_string() argument is a pointer type (#1575)
- test(unit): add 28 unit tests for untested error codes (#1565)
- chore: add test targets to root Makefile (#1565)
- fix(tests): update named return e2e test to use explicit mut declarations (#1560)
- Update README
- test(integration): add when/is branch scope test (#1560)
- test(integration): add E4001 named return hint tests (#1559)
- fix(typechecker): give each when/is branch its own scope (#1560)
- fix(typechecker): add named return hint to E4001 undefined variable (#1559)
- test(integration): enable W2011 warning test for unused named returns (#1556)
- fix(typechecker): emit W2011 for unused named return values (#1556)
- refactor(stdlib): rename time.to_time() to time.to_clock() (#1456)
- test(integration): update wildcard_named_return for E3082 and add fail test (#1557)
- fix(typechecker): resolve return type from typed [func] array element type (#1558)
- fix(codegen): emit void* for func refs in arrays.append and insert_at (#1558)
- fix(typechecker): suppress cascading E3060 when E3082 covers named wildcard returns (#1557)
- fix(typechecker): reject wildcard type '?' in named return positions (#1557)
- test(integration): fix named_return_mismatch_warn to match E3080 semantics (#1552)
- test(integration): fix named return tests to use explicit variable declarations (#1552)
- fix(stdlib): validate URL scheme in http module before making requests (#1555)
- Update STANDARD
- fix(typechecker): reject func-typed variables in string interpolation (#1554)
- fix(typechecker): track func_array_refs for typed [func] arrays (#1553)
- fix(ci): run make stubs before staging embedded assets in release workflows
v3.0.0-beta.11
EZ v3.0.0 Beta
This is a pre-release. Not recommended for production use.
Changes since last release
- Merge pull request #1551 from SchoolyB/v3.0.0-ci-test
- fix(ci): remove pz template type-check step
- fix(ci): allow test steps to continue on failure and update e2e expectations
- chore: disable unimplemented W2011 warning test (#1552)
- fix(ci): add error_codes to test link deps in ezc Makefile
v3.0.0-beta.9
EZ v3.0.0 Beta
This is a pre-release. Not recommended for production use.
Changes since last release
- fix(embed): include runtime/stdlib source files in embedded binary
- fix(ci): update beta-release workflow for single-binary build
v3.0.0-beta.8
EZ v3.0.0 Beta
This is a pre-release. Not recommended for production use.
Changes since last release
- test(integration): add tests for extensionless and directory imports
- chore: regenerate ERRORS.md
- docs: update STANDARD.md module system sections for directory imports
- fix(tests): dereference new() pointer in module-prefix-type test
- fix(codegen): fmt.sprintf was treating first arg as arena instead of format string
- feat(imports): support extensionless file and directory imports
- fix(codegen): snapshot array length in for_each to prevent infinite loops
- fix(codegen): value semantics for map and struct assignment
- Update README & STANDARD
- fix(parser,codegen): remove E2077 whitespace restriction on struct literals; support json.parse() into arrays of #json structs
- fix(codegen,runtime): appending to zero-initialized struct array fields
- fix(codegen): arrays module functions on pointer struct fields
- fix(typechecker): detect bare function names used as statements (E3081)