From f0b5c346dbeb35e94fe6d2d8fc74d5caa661cc61 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Wed, 28 Oct 2026 22:32:29 +0100 Subject: [PATCH 1/2] Document M3 progress: core types, subtyping and specificity (v0.4.0) Co-Authored-By: Claude Opus 5.5 --- STATUS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS.md b/STATUS.md index 51b5c56..4995ab2 100644 --- a/STATUS.md +++ b/STATUS.md @@ -9,5 +9,5 @@ As of 2026-10-28. "Released" means a tagged version; "merged" means on main with | 3 | interpolation, splines, polynomials | [go-approx/interp](https://github.com/go-approx/interp), [go-approx/poly](https://github.com/go-approx/poly) ([docs](https://go-approx.github.io/docs/latest/)) | interp v0.2.1 and poly v0.1.0 released, every measured case at or below NumPy/SciPy ([interp docs/perf.md](https://github.com/go-approx/interp/blob/main/docs/perf.md), [poly docs/perf.md](https://github.com/go-approx/poly/blob/main/docs/perf.md)) | numpy.interp, interp1d, PCHIP, Akima and poly1d bit-identical to NumPy/SciPy; splines within 1e-15–1e-10 | | 4 | filter design, filtering, spectral estimation | [go-dsp/signal](https://github.com/go-dsp/signal) ([docs](https://go-dsp.github.io/docs/latest/signal/)) | v0.1.0 released; all 28 measured cases at or below SciPy ([docs/perf.md](https://github.com/go-dsp/signal/blob/main/docs/perf.md)) | 40 Remez designs within 3e-8 of SciPy; accuracy table over 225 groups in [docs/accuracy.md](https://github.com/go-dsp/signal/blob/main/docs/accuracy.md) | | 5–22 | see [PLAN.md](PLAN.md) | | planned | | -| — | embeddable Julia: oracle harness (M0), parser (M1) and lowering (M2), see [bib/julia.md](bib/julia.md); runtime design (M3) in [bib/julia-runtime.md](bib/julia-runtime.md) | [go-embedded-julia/julia](https://github.com/go-embedded-julia/julia) | v0.1.0 (oracle + lexer), v0.2.0 (complete JuliaSyntax port) and v0.3.0 (M2 lowering: the femtolisp front end of julia 1.12.6, `lower.NewState().Lower(ex)` = `Meta.lower`) released; corpus parsed in 0.70× julia's `Meta.parseall` time on one core; M3 (Core runtime) in progress | parser: tokens, green trees and `Expr` identical to julia 1.12.6 on 1191 / 1191 files of its `share/julia` tree and 976 / 976 snippets, error messages included; where JuliaSyntax itself throws and julia falls back to flisp (3 fuzz-found inputs) an error is returned. Lowering (v0.3.0), identical to `Meta.lower` modulo gensym numbering: 53 997 / 53 997 corpus forms (1191 / 1191 files), 124 / 124 snippets, 48 / 48 hygienic-scope forms, 477 / 477 built expressions, `deparse` 119 / 119 and front-end functions 151 / 151 against `julia --lisp`; 100% statement coverage; known gap: a `Float64` in a lowering error message returns `lower.ErrUnsupported` | +| — | embeddable Julia: oracle harness (M0), parser (M1) and lowering (M2), see [bib/julia.md](bib/julia.md); runtime design (M3) in [bib/julia-runtime.md](bib/julia-runtime.md) | [go-embedded-julia/julia](https://github.com/go-embedded-julia/julia) | v0.1.0 (oracle + lexer), v0.2.0 (complete JuliaSyntax port), v0.3.0 (M2 lowering: the femtolisp front end of julia 1.12.6, `lower.NewState().Lower(ex)` = `Meta.lower`) and v0.4.0 (package `core`: types, `apply_type`, subtyping and method specificity) released; corpus parsed in 0.70× julia's `Meta.parseall` time on one core; M3 (Core runtime) in progress: types, subtyping and specificity done, dispatch next | parser: tokens, green trees and `Expr` identical to julia 1.12.6 on 1191 / 1191 files of its `share/julia` tree and 976 / 976 snippets, error messages included; where JuliaSyntax itself throws and julia falls back to flisp (3 fuzz-found inputs) an error is returned. Lowering (v0.3.0), identical to `Meta.lower` modulo gensym numbering: 53 997 / 53 997 corpus forms (1191 / 1191 files), 124 / 124 snippets, 48 / 48 hygienic-scope forms, 477 / 477 built expressions, `deparse` 119 / 119 and front-end functions 151 / 151 against `julia --lisp`; 100% statement coverage; known gap: a `Float64` in a lowering error message returns `lower.ErrUnsupported`. `core` (v0.4.0), a port of jltypes.c and subtype.c of 1.12.6 without intersection: subtyping identical to julia on 20 000 random pairs and 4 902 cases from `test/subtype.jl`; specificity (`jl_type_morespecific`) identical to `Base.morespecific` on the same corpus; speed against `jl_subtype` not measured yet (machine load too high) | | — | vector-update kernels `Axpy`, `Xpby`, `AxpyDot`, `Scale` (shared by the solvers) | [go-simd/floats](https://github.com/go-simd/floats) | v0.4.0 released: SIMD on amd64 and arm64, FMA loop elsewhere | — | From 14922cf4caaf9d6933943638f42167a7fc81b44a Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sat, 31 Oct 2026 20:59:30 +0100 Subject: [PATCH 2/2] STATUS: go-embedded-julia v0.5.0 (dispatch) and the measured subtype speed v0.5.0 adds core/dispatch, checked against julia's `which` and jl_type_intersection_with_env on 9 000 calls. Subtyping speed is now measured: 1.49x slower than jl_subtype on one core, recorded as an open defect. Co-Authored-By: Claude Opus 5.5 --- STATUS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STATUS.md b/STATUS.md index 4995ab2..9e34da3 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,6 +1,6 @@ # Status -As of 2026-10-28. "Released" means a tagged version; "merged" means on main without a tag yet. Every child organisation has a landing, a documentation site, a brand and a profile; [go-scikit/docs](https://go-scikit.github.io/docs/latest/) links them all. +As of 2026-10-31. "Released" means a tagged version; "merged" means on main without a tag yet. Every child organisation has a landing, a documentation site, a brand and a profile; [go-scikit/docs](https://go-scikit.github.io/docs/latest/) links them all. | # | item | home | state | evidence | |---|---|---|---|---| @@ -9,5 +9,5 @@ As of 2026-10-28. "Released" means a tagged version; "merged" means on main with | 3 | interpolation, splines, polynomials | [go-approx/interp](https://github.com/go-approx/interp), [go-approx/poly](https://github.com/go-approx/poly) ([docs](https://go-approx.github.io/docs/latest/)) | interp v0.2.1 and poly v0.1.0 released, every measured case at or below NumPy/SciPy ([interp docs/perf.md](https://github.com/go-approx/interp/blob/main/docs/perf.md), [poly docs/perf.md](https://github.com/go-approx/poly/blob/main/docs/perf.md)) | numpy.interp, interp1d, PCHIP, Akima and poly1d bit-identical to NumPy/SciPy; splines within 1e-15–1e-10 | | 4 | filter design, filtering, spectral estimation | [go-dsp/signal](https://github.com/go-dsp/signal) ([docs](https://go-dsp.github.io/docs/latest/signal/)) | v0.1.0 released; all 28 measured cases at or below SciPy ([docs/perf.md](https://github.com/go-dsp/signal/blob/main/docs/perf.md)) | 40 Remez designs within 3e-8 of SciPy; accuracy table over 225 groups in [docs/accuracy.md](https://github.com/go-dsp/signal/blob/main/docs/accuracy.md) | | 5–22 | see [PLAN.md](PLAN.md) | | planned | | -| — | embeddable Julia: oracle harness (M0), parser (M1) and lowering (M2), see [bib/julia.md](bib/julia.md); runtime design (M3) in [bib/julia-runtime.md](bib/julia-runtime.md) | [go-embedded-julia/julia](https://github.com/go-embedded-julia/julia) | v0.1.0 (oracle + lexer), v0.2.0 (complete JuliaSyntax port), v0.3.0 (M2 lowering: the femtolisp front end of julia 1.12.6, `lower.NewState().Lower(ex)` = `Meta.lower`) and v0.4.0 (package `core`: types, `apply_type`, subtyping and method specificity) released; corpus parsed in 0.70× julia's `Meta.parseall` time on one core; M3 (Core runtime) in progress: types, subtyping and specificity done, dispatch next | parser: tokens, green trees and `Expr` identical to julia 1.12.6 on 1191 / 1191 files of its `share/julia` tree and 976 / 976 snippets, error messages included; where JuliaSyntax itself throws and julia falls back to flisp (3 fuzz-found inputs) an error is returned. Lowering (v0.3.0), identical to `Meta.lower` modulo gensym numbering: 53 997 / 53 997 corpus forms (1191 / 1191 files), 124 / 124 snippets, 48 / 48 hygienic-scope forms, 477 / 477 built expressions, `deparse` 119 / 119 and front-end functions 151 / 151 against `julia --lisp`; 100% statement coverage; known gap: a `Float64` in a lowering error message returns `lower.ErrUnsupported`. `core` (v0.4.0), a port of jltypes.c and subtype.c of 1.12.6 without intersection: subtyping identical to julia on 20 000 random pairs and 4 902 cases from `test/subtype.jl`; specificity (`jl_type_morespecific`) identical to `Base.morespecific` on the same corpus; speed against `jl_subtype` not measured yet (machine load too high) | +| — | embeddable Julia: oracle harness (M0), parser (M1) and lowering (M2), see [bib/julia.md](bib/julia.md); runtime design (M3) in [bib/julia-runtime.md](bib/julia-runtime.md) | [go-embedded-julia/julia](https://github.com/go-embedded-julia/julia) | v0.1.0 (oracle + lexer), v0.2.0 (complete JuliaSyntax port), v0.3.0 (M2 lowering: the femtolisp front end of julia 1.12.6, `lower.NewState().Lower(ex)` = `Meta.lower`) v0.4.0 (package `core`: types, `apply_type`, subtyping and method specificity) and v0.5.0 (package `core/dispatch`: method tables, world ages, dispatch of concrete calls) released; corpus parsed in 0.70× julia's `Meta.parseall` time on one core; subtyping 1.49× **slower** than julia's `jl_subtype` on one core (3.63 ms vs 2.44 ms for the 20 000 pairs; open defect, allocation-bound, a pooling branch awaits a low-load A/B); M3 (Core runtime) in progress: types, subtyping, specificity and dispatch done; type intersection, builtins, intrinsics and the interpreter next | parser: tokens, green trees and `Expr` identical to julia 1.12.6 on 1191 / 1191 files of its `share/julia` tree and 976 / 976 snippets, error messages included; where JuliaSyntax itself throws and julia falls back to flisp (3 fuzz-found inputs) an error is returned. Lowering (v0.3.0), identical to `Meta.lower` modulo gensym numbering: 53 997 / 53 997 corpus forms (1191 / 1191 files), 124 / 124 snippets, 48 / 48 hygienic-scope forms, 477 / 477 built expressions, `deparse` 119 / 119 and front-end functions 151 / 151 against `julia --lisp`; 100% statement coverage; known gap: a `Float64` in a lowering error message returns `lower.ErrUnsupported`. `core` (v0.4.0), a port of jltypes.c and subtype.c of 1.12.6 without intersection: subtyping identical to julia on 20 000 random pairs and 4 902 cases from `test/subtype.jl`; specificity (`jl_type_morespecific`) identical to `Base.morespecific` on the same corpus. `core/dispatch` (v0.5.0): the selected method, ambiguity and no-method answers and the static parameters identical to julia's `which` and `jl_type_intersection_with_env` on 9 000 calls over 1 500 random method tables; 100% statement coverage, mutation-tested | | — | vector-update kernels `Axpy`, `Xpby`, `AxpyDot`, `Scale` (shared by the solvers) | [go-simd/floats](https://github.com/go-simd/floats) | v0.4.0 released: SIMD on amd64 and arm64, FMA loop elsewhere | — |