diff --git a/STATUS.md b/STATUS.md index edca901..329d0dc 100644 --- a/STATUS.md +++ b/STATUS.md @@ -8,7 +8,8 @@ As of 2026-10-31. "Released" means a tagged version; "merged" means on main with | 2 | sparse containers, orderings, iterative solvers | [go-sparse/sparse](https://github.com/go-sparse/sparse) ([docs](https://go-sparse.github.io/docs/latest/sparse/)) | v0.1.0 released; every measured case at or below SciPy ([docs/perf.md](https://github.com/go-sparse/sparse/blob/main/docs/perf.md)) | iteration counts equal to SciPy's for CG, GMRES, MINRES and LSQR | | 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 (SLSQP slice) | constrained NLP: SLSQP (`Minimize(…, SLSQP, …)` with `Constraint`, `NonlinearConstraint`, `LinearConstraint`) | [go-numerics/optimize](https://github.com/go-numerics/optimize) ([docs](https://go-numerics.github.io/docs/latest/optimize/)) | v0.3.0 released; Hock–Schittkowski cases 20–94× faster than SciPy, n = 50 with 100 bounds 1.4× ([docs/perf.md](https://github.com/go-numerics/optimize/blob/main/docs/perf.md)); interior point, QP (active set, ADMM) and global methods still planned | 100/100 statuses and 88/100 runs on SciPy 1.18.1's exact path (nit/nfev/njev, multipliers) over 36 Hock–Schittkowski problems and 10 stress cases; the other 12 are runs where SciPy's own arm64 and x86_64 wheels disagree; 100% statement coverage, fuzzed | +| 5 (SLSQP slice) | constrained NLP: SLSQP (`Minimize(…, SLSQP, …)` with `Constraint`, `NonlinearConstraint`, `LinearConstraint`) | [go-numerics/optimize](https://github.com/go-numerics/optimize) ([docs](https://go-numerics.github.io/docs/latest/optimize/)) | v0.3.0 released; Hock–Schittkowski cases 20–94× faster than SciPy, n = 50 with 100 bounds 1.4× ([docs/perf.md](https://github.com/go-numerics/optimize/blob/main/docs/perf.md)); v0.3.1: oracle and benchmark harnesses tested in CI | 100/100 statuses and 88/100 runs on SciPy 1.18.1's exact path (nit/nfev/njev, multipliers) over 36 Hock–Schittkowski problems and 10 stress cases; the other 12 are runs where SciPy's own arm64 and x86_64 wheels disagree; 100% statement coverage, fuzzed | +| 5 (interior-point slice) | constrained NLP: trust-region interior point (`Minimize(…, TrustConstr, …)`, SciPy `trust-constr`, fmincon `'interior-point'`), same constraint types | [go-numerics/optimize](https://github.com/go-numerics/optimize) ([docs](https://go-numerics.github.io/docs/latest/optimize/)) | v0.4.0 released; Hock–Schittkowski cases 65–130× faster than SciPy, n = 50 with 100 bounds 2.7× ([docs/perf.md](https://github.com/go-numerics/optimize/blob/main/docs/perf.md)); QP (active set, ADMM) and global methods still planned | on the same 100 runs: success/failure as SciPy 1.18.1 on 100/100, same status 95/100, objective within 1e-5 of SciPy or 1e-4 of the optimum; 59–68 runs on SciPy's exact path where SciPy's own two wheels disagree on 35; 100% statement coverage, fuzzed | | 5 (rest)–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`), 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 | — |