GEN3Version NativeAOT · v3.0.79

Écrivez un OS en C# moderne.
Compilé à l’avance.
Tourne sur tout matériel.

Cosmos est un framework open source pour écrire un système d’exploitation en C#. Écrivez votre noyau en C# 14, compilez-le avec NativeAOT et démarrez-le sur x64 ou ARM64 : pas de JIT, pas de runtime managé.

// ce qu’il y a dedans

Tout ce qu’il faut pour démarrer du C# sur du matériel nu.

Gen3 remplace IL2CPU par la chaîne d’outils .NET officielle. Tout ce qui est au-dessus (GC, ordonnanceur, pilotes, réseau, système de fichiers) est du C# que vous pouvez lire, plugger ou remplacer.

C# 14.NET 10NativeAOTLimine
  • Le pipeline de build Cosmos enchaîne la génération de code NativeAOT, l’assemblage et l’édition de liens, puis produit une ISO amorçable pour le chargeur Limine.

  • Cosmos.Patcher remplace des méthodes du runtime au niveau IL avant que NativeAOT ne les compile.

  • Cible choisie par le RuntimeIdentifier : interruptions APIC sur x64, GIC sur ARM64, assembleur GAS sur les deux, MMIO là où il n’y a pas d’E/S par port.

  • Chaînes, collections, génériques, threads, Console : compilés par NativeAOT, sans JIT ni runtime managé.

  • GC marquage-balayage avec analyse précise de la pile, ordonnanceur préemptif à priorités (stride scheduling) avec verrous, gestion des exceptions avec déroulement de la pile.

  • Sockets TCP et UDP sur la pile réseau de Cosmos : ARP, IPv4, DHCP et DNS. HTTPS/TLS est sur la feuille de route.

  • Pilotes AHCI/SATA et NVMe, partitionnement MBR/GPT/EBR, FAT12/16/32 sur un VFS de type Unix.

  • API Canvas à double tampon sur le framebuffer UEFI GOP (via Limine), entrées clavier et souris.

  • Prise en charge d’ACPI via la bibliothèque LAI, plus un port série UART pour journaliser et déboguer le noyau.

// trois générations

Dix-huit ans de C# sur le métal.

Cosmos a eu trois vies. Gen3 est la plus grande refondation depuis la naissance du projet.

  1. (tag: gen1)
    Date: 2007

    La preuve.

    Le Cosmos d’origine. La preuve qu’on pouvait compiler du C# en quelque chose qui démarre sur du matériel nu. Un petit projet avec une grande idée.

  2. (tag: gen2)
    Date: années 2010 à 2024

    L’ère IL2CPU.

    Un compilateur IL vers x86 maison, construit et maintenu par la communauté pendant plus de dix ans. IL2CPU traduisait le bytecode .NET directement en assembleur et a fait tourner des OS amateurs pendant des années.

  3. (HEAD -> gen3)
    Date: Aujourd’hui

    NativeAOT.

    Nous avons retiré 15 ans de compilateur maison pour nous appuyer sur NativeAOT. Cosmos patche désormais le pipeline AOT officiel de .NET au niveau IL : fonctionnalités modernes du langage, builds plus rapides, moins de code à maintenir.

// les personnes

Construit par la communauté.

Tous les auteurs de l’histoire de Cosmos : 190 personnes sur les deux générations, de la preuve de concept de 2007 à Gen3.