Skip to content

v0.3.0

Choose a tag to compare

@tannevaled tannevaled released this 28 Oct 21:14
· 15 commits to main since this release
de4d2b4

v0.3.0 — M2: lowering identical to julia 1.12.6

lower ports julia 1.12.6's femtolisp front end (julia-syntax.scm,
macroexpand.scm, ast.scm, match.scm): lower.NewState().Lower(ex) is
Meta.lower of a macro-expanded top-level form, compared with julia field by
field, modulo gensym numbering.

measured on forms identical to julia
corpus (share/julia: base, Compiler, stdlib, test), 1191 files 53 997 53 997 (1191/1191 files)
lowering snippets 124 124
macro-made toplevels still in hygienic scopes 48 48
built expressions (error paths, rare heads) 477 477
deparse vs julia --lisp 119 119
front-end functions vs julia --lisp 151 151
  • Hygiene (resolve-expansion-vars, rename-symbolic-labels) ported.
  • Lower refuses trees deeper than lower.MaxDepth (lower.ErrLimit);
    FuzzLower runs on every pull request.
  • 100% statement coverage, every lowering expectation coming from julia.
  • Known gap: a Float64 inside a lowering error message returns
    lower.ErrUnsupported.

core (#9) — Julia's type objects, apply_type, and subtyping (a port of
jltypes.c and subtype.c of 1.12.6, without intersection): identical to julia
on 20 000 random pairs and 4 902 cases from test/subtype.jl. FuzzSubtype
runs on every pull request.

Pull requests: #9 (core), #10 (M2 lowering).