Skip to main content

MEP-54 implementation tracking

Per-phase tracking for the MEP-54 Mochi-to-Go transpiler under transpiler3/go/. Status values: NOT STARTED, IN PROGRESS, BLOCKED, LANDED, DEFERRED. Commit is the merge commit short SHA on main (or, for staged sub-phases, the in-branch commit on worktree-mep54-impl).

The pipeline is parser.Parse -> types.Check -> transpiler3/c/lower.Lower (shared aotir) -> transpiler3/go/lower.Lower -> transpiler3/go/gotree -> go/format -> go build. The aotir layer is shared with MEP-45/46/47/48/49/50/51/52/53/55/56, so each Go phase typically lights up the corresponding aotir.* node in the Go lowerer rather than re-deriving the typed IR.

A phase is LANDED only when its gate is green on go test ./transpiler3/go/... against every supported Go toolchain listed in the runtime matrix below. Missing target tuples become N.1, N.2, ... sub-phases per the umbrella-phase coverage rule.

Phase status

PhaseTitleStatusCommitTracking page
0Skeleton: gotree / lower / emit / build / runtimeLANDEDb836c348fbphase-00
1Hello world end-to-endLANDEDb836c348fbphase-01
2Scalars and arithmeticLANDED20727c019ephase-02
3.1list<T> for scalar TLANDED8bb154ea8fphase-03-1
3.2map<K, V> for scalar K and VLANDEDc86fd6a412phase-03-2
3.3set<T> for scalar TLANDED87eed650a6phase-03-3
3.4list<record> + record declarationsLANDED6e189d3819phase-03-4
4Record equalityLANDED17ccd7e15cphase-04
5Sum types + pattern matchingLANDED52e07d4998phase-05
6Top-level user functionsLANDED9f8c04e82ephase-06
6.1Closures (FunLit + Captures)LANDEDdcb6d58867phase-06-1
7.1Query DSL: filter + mapLANDEDf9270a397bphase-07-1
7.2Query order_by + skip/takeLANDED5e2e396f95phase-07-2
7.3Query string ops (contains, len)LANDED3510d3295dphase-07-3
7.4Query joins (inner / cross / left)LANDED2ec49d122fphase-07-4
7.5List aggregations + arena_queryLANDEDcb2410a13dphase-07-5
7.6String builtins (substring/index/reverse/split/join/str)LANDED9e73065a33phase-07-6
7.7Math builtins (abs/floor/ceil)LANDED28fe55f223phase-07-7
7.8File I/O (writeFile/appendFile/readFile/lines)LANDED492a45a1c9phase-07-8
7.9CSV I/O (loadCSV / saveCSV)LANDED6e1f8dca4aphase-07-9
7.10Error model (try / catch / panic)LANDED04ea3ca645phase-07-10
7.11omap (OMapLiteral / Get / Set / Has / Len / Put)LANDEDaf82c4243cphase-07-11
7.12List HOFs (map / filter / reduce)LANDED24b8ac0274phase-07-12
8Datalog (compile-time semi-naive eval)NOT STARTED--
9.1Channels (chan<T>, send, recv)LANDED (staging)6c8caa8f52phase-09-1
9.2Streams + subscribersNOT STARTED--
10AgentsNOT STARTED--
11async / awaitNOT STARTED--
12FFI (extern Go)NOT STARTED--
13LLM driverNOT STARTED--
14fetch (HTTP client)NOT STARTED--
15TargetGoModuleNOT STARTED--
16Reproducibility (-trimpath, -buildvcs=false)NOT STARTED--
17TargetGoWasmJS / TargetGoWasiP1NOT STARTED--
18Publish (pkg.go.dev metadata)NOT STARTED--

Runtime matrix

A phase is fully LANDED only after its gate passes on every required Go toolchain. Phases not yet exercised on a toolchain become N.1, N.2, ... sub-phases.

ToolchainPhases 0-7.x (language)Phases 8-18 (concurrency + packaging)Source
Go 1.22 (ubuntu CI)LANDEDIN PROGRESSgo test ./transpiler3/go/...
Go 1.22 (macos local)LANDEDIN PROGRESSgo test ./transpiler3/go/...
Go 1.23LANDED (forward-compat)IN PROGRESSlocal
Go 1.24+NOT EXERCISEDNOT EXERCISEDfuture audit sub-phase
GOOS=windowsDEFERRED to Phase 16DEFERRED to Phase 16phase01_test.go skips on Windows
GOOS=js, GOOS=wasip1NOT STARTED (Phase 17)NOT STARTED (Phase 17)wasm targets land at the end

The Phase 1 fixture runner currently skips on Windows because the driver hard-codes a POSIX go invocation; the cross-tuple sweep moves under Phase 16 once the host build is fully reproducible. WASM targets (go-wasm-js, go-wasip1) are reserved for Phase 17.