Skip to content

Releases: SchoolyB/EZ

v3.2.1

05 May 05:01
dbbb92b

Choose a tag to compare

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

04 May 16:46
49ecaa1

Choose a tag to compare

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

02 May 05:50
e9c70d9

Choose a tag to compare

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

01 May 16:57
4cf541f

Choose a tag to compare

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

29 Apr 22:48
5cd0dba

Choose a tag to compare

3.1.0 (2026-04-29)

Features

  • cli: add -o/--output flag to ez doc (3f590e8)
  • cli: add -o/--output flag to ez doc (0916278)

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

28 Apr 06:23

Choose a tag to compare

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 - .ez to C to binary. Real native code.
  • Scope-based memory management - arena allocators per scope, automatic cleanup, no garbage collector.
  • Pointers - ^Type syntax, new() returns pointers, addr(), auto-deref on struct fields.
  • Functions as first-class types - func(int, int) -> int signatures, store them, pass them, return them.
  • C interop - import c"stdio.h", call C functions with c.func().
  • Wide integers - i256/u256 new, i128/u128 reimplemented 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 ez binary ships everything.
  • 1,200+ tests - unit, e2e, integration, sanitizer builds.

Breaking changes

  • temp renamed to mut
  • @std removed - all functions are builtins now
  • new() returns ^Struct pointers
  • bare func removed - use full signatures: func(int) -> int
  • import & use replaced by import and use
  • nil is a value, not a type
  • ez run removed - use ez <file.ez>

See CHANGELOG.md for the full curated changelog.

Installation

curl -fsSL https://raw.githubusercontent.com/SchoolyB/EZ/main/install.sh | bash

Or build from source:

git clone https://github.com/SchoolyB/EZ.git && cd EZ
make build && make install

v3.0.0-beta.12

28 Apr 05:41

Choose a tag to compare

v3.0.0-beta.12 Pre-release
Pre-release

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

28 Apr 01:22
6fd4b73

Choose a tag to compare

v3.0.0-beta.11 Pre-release
Pre-release

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

27 Apr 18:32

Choose a tag to compare

v3.0.0-beta.9 Pre-release
Pre-release

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

27 Apr 04:10

Choose a tag to compare

v3.0.0-beta.8 Pre-release
Pre-release

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)