Skip to content
forked from TomatOrg/TomatOS

An experimental dotnet based kernel

License

Notifications You must be signed in to change notification settings

darkmuck/pentagon

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

116 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pentagon

An experiment for writing a kernel with C# drivers and usermode, with a fully featured dotnet runtime running on baremetal with the main goal of using Type safety for memory safety.

Unlike other baremetal C# runtimes out there (For example Cosmos) we have a full garbage collector and JIT support in the kernel itself, so stuff like reflection/emitters and more will eventually be available for apps to use.

Progress

Right now the main work is on the runtime itself, the main features of the runtime:

  • On-the-fly Garbage Collector for pause free garbage collection
    • Including support for finalization and reviving
  • Full support for reference types
    • With abstract/virtual methods support
  • Full support for integer and floating point types
  • Full support for array types
  • Full support for struct types
  • Full support for interface types
  • Most common CIL instructions implemented

Main missing features

  • Delegates
  • Generics
  • Boxing/Unboxing
  • Static fields
  • Constant fields

OS Design

  • Everything runs in a single cpu address space
    • Threads are super light-weight and different assemblies have no context switch overhead.
  • Safety by Type system
    • Accessibility/Visibility is enforced by the kernel at JIT time
      • If you don't have access to a field you have no way to get its value
    • If you don't have a ref to an object and you can't create it yourself, you won't have any way to get a reference to it
  • Each assembly has one global instance, for GUI apps the window serveris going to simply notify you that you should open a new window/application instance.

About

An experimental dotnet based kernel

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 90.5%
  • C++ 7.1%
  • C# 1.7%
  • Other 0.7%