MEP-49 research notes
These twelve notes are the deep research that fed MEP 49 (Mochi-to-Swift transpiler). They are informative; the MEP body, once landed, will be normative. Each note is self-contained and can be read independently. Cross-references use [[note-slug]] markers.
| # | Title | Topic |
|---|---|---|
| 01 | Language surface | Mochi features mapped onto Swift 6.0 lowering obligations |
| 02 | Design philosophy | Why Swift, why Swift 6.0 floor, why all platforms, why actors + AsyncStream |
| 03 | Prior-art transpilers | Skip.tools, J2ObjC, Swiftify, Sourcery, Hylo, Mojo, Embedded Swift, SwiftWasm, IL2CPP analogues, Macros, Obj-C / C++ interop |
| 04 | Runtime building blocks | Swift stdlib, Foundation, Apple-only frameworks, swift-collections / -algorithms / -async-algorithms, AsyncStream / Task / actor surface |
| 05 | Codegen design | Swift source via SwiftSyntax IR, aotir reuse, swift-format integration, monomorphisation, closure ABI |
| 06 | Type-system lowering | Mochi types onto Int64 / Double / String / Array / Dictionary / OrderedDictionary / @frozen struct / enum with indirect cases |
| 07 | Swift target and portability | Swift 6.0 / 6.1 / 6.2 matrix, Apple deployment targets, Static Linux SDK, Windows MSVC, Embedded / SwiftWasm exclusions |
| 08 | Dataset pipeline | Query DSL via Sequence / AsyncSequence + swift-collections + swift-algorithms, hash / merge / nested-loop joins |
| 09 | Agents and streams | Swift actor + AsyncStream mailboxes, async colouring, AsyncSequence for streams |
| 10 | Build system | SwiftPM canonical driver, deterministic Package.swift, xcodebuild + codesign + notarytool, WiX MSI |
| 11 | Testing gates | Per-phase Go test gates, Swift version matrix, swiftc clean, swift-format fixed-point, App Store validation |
| 12 | Risks and alternatives | Risk register, Objective-C / Swift 5.10 / Apple-only / GCD / Macros / SwiftSyntax-required / Combine rejected and why |
Each note's filename uses the NN-slug.md convention; the leading NN- is stripped by Docusaurus for the URL path, so cross-links inside the notes use the unprefixed slug (e.g. [[language-surface]]).
The companion MEP body lives at /docs/mep/mep-0049.