GEN3NativeAOT 版本 · v3.0.79

用 现代 C# 编写操作系统。
提前编译。
运行在任何硬件上。

Cosmos 是一个开源的 C# 操作系统框架。用 C# 14 编写你的内核,用 NativeAOT 编译,在 x64 或 ARM64 上启动:没有 JIT,没有托管运行时。

// 内含什么

在裸机上启动 C# 所需的一切。

Gen3 用官方的 .NET 工具链取代了 IL2CPU。它之上的一切(GC、调度器、驱动程序、网络、文件系统)都是你可以阅读、plug 或替换的 C# 代码。

C# 14.NET 10NativeAOTLimine
  • Cosmos 构建流水线依次运行 NativeAOT 代码生成、汇编、链接,并为 Limine 引导加载程序打包出可启动的 ISO。

  • Cosmos.Patcher 在 NativeAOT 编译之前,在 IL 层面替换运行时方法。

  • 目标由 RuntimeIdentifier 选择:x64 上用 APIC 中断,ARM64 上用 GIC,两者都用 GAS 汇编,没有端口 I/O 的地方用 MMIO。

  • 字符串、集合、泛型、线程、Console:全部由 NativeAOT 编译,没有 JIT,没有托管运行时。

  • 带精确栈扫描的标记-清除 GC,支持锁的抢占式优先级步幅(stride)调度器,以及带栈展开的异常处理。

  • 基于 Cosmos 自己的网络栈的 TCP 和 UDP 套接字:ARP、IPv4、DHCP 和 DNS。HTTPS/TLS 已在路线图上。

  • AHCI/SATA 和 NVMe 驱动程序,MBR/GPT/EBR 分区,Unix 风格 VFS 上的 FAT12/16/32。

  • 基于 UEFI GOP 帧缓冲区(经由 Limine)的双缓冲 Canvas API,以及键盘和鼠标输入。

  • 通过 LAI 库支持 ACPI,并提供 UART 串口用于内核日志和调试。

// 三代

十八年,C# 直面硬件。

Cosmos 经历了三次生命。Gen3 是项目诞生以来最大的一次重建。

  1. (tag: gen1)
    Date: 2007

    证明。

    最初的 Cosmos。它证明了可以把 C# 编译成能在裸机上启动的东西。一个小项目,一个大想法。

  2. (tag: gen2)
    Date: 2010 年代至 2024 年

    IL2CPU 时代。

    一个自制的 IL 到 x86 编译器,由社区构建和维护了十多年。IL2CPU 把 .NET 字节码直接翻译成汇编,多年来驱动着众多业余操作系统。

  3. (HEAD -> gen3)
    Date: 今天

    NativeAOT。

    我们放下了 15 年的自制编译器,站到了 NativeAOT 的肩膀上。Cosmos 现在在 IL 层面修补 .NET 官方的 AOT 流水线:现代语言特性,更快的构建,更少需要维护的代码。

// 这些人

由社区建成。

Cosmos 历史上的每一位作者:横跨两代共 190 人,从 2007 年的概念验证到 Gen3。