跳到主要内容

兼容性说明

ECMA-335 支持范围

LeanCLR 在设计上以 ECMA-335 为主要兼容基准。当前已完成的核心模块包括:

模块状态
元数据解析(PE/COFF、CLI 表)
类型系统(类、接口、泛型、数组、值类型)
IR 解释器
异常处理
反射
委托
内部调用(icall)
P/Invoke
垃圾回收
AOT 编译器(LeanAOT)
多线程📋 规划中

Standard 版与 BCL 分支

Standard 版按 BCL 基线分为 monounitycoreclr 三个分支(见 Core 与 Standard)。当前三个分支均仅支持单线程,且许多平台相关 icall 尚未实现

分支验证与生产状态(摘要)
unity与 Unity 2019.4.x – 6000.3.x LTS IL2CPP BCL 高度兼容,数千测试用例;WebGL / 小游戏较稳定
mono与 Mono 4.8 BCL 99.95% 兼容(历史数据);WebGL / 小游戏较稳定
coreclr🚧 开发中,勿按生产就绪假设

平台

Standard 版支持 Windows、Linux、macOS、Android、iOS、鸿蒙(HarmonyOS / OpenHarmony)、WebAssembly 等主流目标(依 BCL 分支与集成方式验证)。

  • WebAssembly / 小游戏:mono、unity 分支较稳定
  • 原生桌面与移动:可构建运行;大量平台相关 icall 仍在完善,发布前请充分测试

验证过的 BCL 范围(unity / mono 分支为主)

已验证的类库主要为:

  • .NET Framework 4.x 核心库(mscorlib、System、System.Core 等)
  • Unity IL2CPP 裁剪 BCL(unity 分支)
  • .NET Standard 2.x 范围内的核心类型

使用 coreclr 分支、其他版本 BCL 或大量第三方 NuGet 包时,请自行验证。

已知限制

限制说明
单线程Standard 三分支与 Core 版当前均仅单线程
平台 icallStandard 版大量平台相关 icall 未实现或仍在完善
coreclr 分支仍在开发,不适合作为默认生产选型
非开发期运行时不适合替代桌面 .NET 进行日常开发调试
社区版 LeanAOT不支持泛型方法、含异常处理区域的方法、extern 方法的 AOT(见 社区版与商业版
嵌入 APIC++ 嵌入接口尚在演进(见 嵌入 LeanCLR
Core 版 GC须手动禁用 / 触发 GC,见 Core 与 Standard