MEP-48 research notes
These twelve notes are the deep research that fed MEP 48 (Mochi-to-.NET/CLR 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 .NET lowering obligations |
| 02 | Design philosophy | Why .NET, why .NET 8 LTS floor + .NET 10 LTS ceiling, why Roslyn as IR |
| 03 | Prior-art transpilers | C#, F#, VB.NET, Roslyn, Reflection.Emit, ILGenerator, Mono, IL2CPP, NativeAOT, ReadyToRun, Bridge.NET, Blazor, MAUI, Unity, Godot |
| 04 | Runtime building blocks | .NET 8 / 10 LTS, Channels, IAsyncEnumerable, BCL, System.Text.Json, ImmutableCollections, FrozenDictionary |
| 05 | Codegen design | C# source via Roslyn SyntaxFactory + Reflection.Emit PersistedAssemblyBuilder fallback |
| 06 | Type-system lowering | Type-by-type mapping to CLR reified generics, value types, sealed-record unions, Span/Memory |
| 07 | .NET target and portability | TFM matrix, RID matrix, Mono/Unity/IL2CPP positions, MAUI/Blazor/Unity/Godot |
| 08 | Dataset pipeline | Query DSL lowering via LINQ + PLINQ, hash-join, value-type specialisation |
| 09 | Agents and streams | Channels for mailboxes, async/await colouring, IAsyncEnumerable for streams |
| 10 | Build system | dotnet CLI, NuGet, MSBuild, packages.lock.json, NativeAOT publish, single-file |
| 11 | Testing gates | Per-phase Go test gates, TFM matrix (net8.0/net10.0), Roslyn-clean gate, NativeAOT gate |
| 12 | Risks and alternatives | Risk register, F# / VB.NET / Bridge.NET / direct IL emit 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-0048.