什么是 LeanCLR
概述
LeanCLR 是一个面向生产发布的 CLR(Common Language Runtime)实现。它的核心目标是:在保持高 ECMA-335 兼容度的前提下,提供低集成复杂度、强跨平台能力与精简的运行时体积,让开发者真正实现 Write C#, Run Anywhere。
LeanCLR 采用 AOT + 解释器 混合执行架构,不支持 JIT。运行时使用标准 C++ 实现,可嵌入到游戏引擎、App、嵌入式设备、车机平台等各类宿主环境中。
定位说明
LeanCLR 不是桌面开发期使用的运行时。它适合在构建与发布阶段将 C# 逻辑编译并嵌入最终产物,而不适合替代本机安装的 .NET SDK / CoreCLR 进行日常开发与调试。
当前对外提供的版本实质上是 Standard 版(单线程)。在 Unity WebGL、小游戏等资源受限平台上已可稳定用于生产发布。
设计目标
- 高 ECMA-335 兼容:覆盖泛型、异常、反射、委托等核心能力,并兼容 Mono / Unity 及 CoreCLR 的主要扩展。
- 易于嵌入:集成复杂度接近 Lua,以静态库形式链接到 C++ 宿主工程。
- 精简高效:运行时体积小、内存占用低,适合 WebAssembly 与小游戏等场景。
- 面向发布:工具链与运行时围绕「把 C# 打进最终包体」设计,而非提供完整的桌面 CLR 体验。
适用场景
适合:
- Unity / 团结引擎发布到 WebGL、小游戏平台,替换 IL2CPP 以缩减 wasm 体积与内存占用
- 将 C# 游戏逻辑或业务脚本嵌入原生 / WASM 宿主
- 资源受限硬件上的托管代码执行
不适合:
- 作为 PC 端日常 C# 开发、调试用的运行时
- 依赖多线程并发、且无法在发布管线中规避多线程调用的场景(当前版本为单线程)
- 需要完整 .NET 8+ 桌面 BCL 与 JIT 动态编译的场景(规划中,尚未提供)