Konrad Kokosa 14.04.2020, 11:52 Uhr

.NET Runtime auf der Basis von .NET Core

.NET-Anwendungen benötigen eine Laufzeitumgebung. Diese ist ganz beziehungsweise zu großen Teilen in C++ geschrieben. Wie wäre es, wenn die Runtime mit C# verfasst würde. Geht das überhaupt?
(Quelle: tooslowexception.com/mobius-net-runtime-running-on-net-core)
Eine .NET-Anwendung ist "nur" ein Stück CIL-Bytecode (Common Intermediate Language), das von der .NET-Laufzeit ausgeführt wird. Und die .NET-Runtime ist "nur" ein Programm, das in der Lage ist, diese Aufgabe auszuführen. .NET Framework/.NET Core-Laufzeitprogramme sind häufig in C++ geschrieben. Daneben gibt es Laufzeitumgebungen, bei denen viele Teile in C# umgeschrieben wurden – etwa das Typsystem – entscheidende Teile, wie etwa JIT-Compiler und Garbage Collection blieben jedoch stets in C++. Konrad Kokosa – mehr über ihn erfahren Sie am Ende dieses Textes – versucht die .NET-Laufzeitumgebung komplett als .NET-Anwendung zu schreiben. Ohne jeden C+++-Code. Alles soll als .NET-Core-Anwendung, die in C# geschrieben ist. Das hört sich nach einer Art unendlicher Rekursion an. Es müsste eine .NET-Laufzeitumgebung über einer anderen .NET-Laufzeitumgebung ausgeführt werden und die wiederum ... Kokosa hat seine Idee Mobius-Laufzeitumgebung genannt, nach dem Möbiusband, einem Band, das nur eine Kante und eine Seite hat. Man kann nicht unterscheiden zwischen unten und oben oder außen und innen.
Die Idee ist da, zugleich bekennt Kokosa, dass er nicht erwartet, dass sein Projekt noch im laufenden Jahrhundert auch nur annähernd produktionsreif sein wird. Er sagt, er sei sich der Menge an Code bewusst, die geschrieben werden muss, um eine vollständige .NET-Laufzeit zu entwickeln. Zugleich findet er es jedoch interessant, eine solche Idee zu validieren, und findet sie auch für kleinere Anwendungen geeignet. Als Beispiel nennt er ein NuGet-Paket mit einer separaten Laufzeit, die man zu seiner Anwendung hinzufügen könnte.
Konrad Kokosa stellt sein Projekt auf dieser Seite ausführlich vor. Sein Ziel ist wie bereits gesagt, nicht das Vollenden des Projekts, sondern ein Spielzeug, anhand dessen man Spaß haben und eine Menge über die .NET-Laufzeitumgebung lernen kann. Seine Ergebnisse will Kokosa übrigens komplett als Open Source veröffentlichen. Aktuell arbeitet er an einem Proof of Concept, das schlicht eine Addition von zwei Integer-Werten ausführen soll.

Über den Autor

Konrad Kokosa ist Autor des Buches Pro.NET Memory Management. Er programmiert seit mehr als einem Dutzend Jahren, arbeitet an Lösung von Leistungsproblemen und Architekturrätseln in der .NET-Welt sowie an der Beschleunigung von Webanwendungen. Außerdem ist er unabhängiger Berater, Blogger, Sprecher und Fan von Twitter. Er teilt auch seine Leidenschaft als Ausbilder im Bereich .NET, insbesondere über Anwendungsleistung und -diagnose und ist Microsoft MVP in der Kategorie Visual Studio und Entwicklungstools.


Das könnte Sie auch interessieren