Building a bare-metal bootable game for Raspberry Pi in C#

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • compose-multiplatform-template

    Discontinued Compose Multiplatform Application project template

  • The latest Kotlin can target WasmGC. This is in Alpha preview right now, but works well, and it's one of the first language implementations that does it.

    By comparison, .NET's Blazor targets LLVM, and they either AOT or JIT, however the client has to download a heavier runtime that has at least a garbage collector, and is less than ideal. Basically, the original Wasm was designed for languages with linear memory and still makes a great target for C++ or Rust. dotNET's WASM is there only to support Blazor, which is a web framework, a sort of successor to Web Forms and whose future is uncertain. Speaking of which, you're better off with MVC + HTMX, but I digress. So for more interesting use cases, Kotlin is actually ahead in their Wasm support.

    For multi-platform support, Kotlin is in its infancy, but the company behind it has a vested interest in targeting multiple platforms, and Kotlin Multi-platform support also has Google backing.

    So, for one, you can share business logic on iOS, as you can integrate Kotlin libraries into Swift applications: https://kotlinlang.org/docs/multiplatform.html

    And they have been porting Jetpack Compose to the desktop and to iOS: https://github.com/JetBrains/compose-multiplatform

    Over on .NET side, the blessed solution by Microsoft, for targeting iOS, Android or the desktop, is right now .NET MAUI. So, where's Xamarin? Where's Silverlight for that matter? That's right, Microsoft changes UI solutions like they change socks, and I don't understand how anyone could trust them for a multi-platform solution.

  • .NET Runtime

    .NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.

  • WasmGC is a prototype that only supports the bare minimum that is enough for languages with high level constructs only but not for something like C# which has interior object pointers (ref) and uses them heavily for performance (spans are built on top of them).

    The API of WasmGC is really rudimentary.

    With that said, you can track support of various WASM features by .NET here: https://github.com/dotnet/runtime/issues/94351

    I don’t understand how the logic of your post works, WASM in .NET is already used in production versus something that is an early alpha? Also, on Kotlin and targeting something that is not Android - “Java Interop” that’s all I need to say.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • MOOS

    C# x64 operating system programming with the .NET native ahead-of-time compilation technology.

  • https://github.com/nifanfa/MOOS

    I ran across this link-hopping through GitHub repos after reading the article. Might be what you were hoping for.

  • uefimaze

    Bare-metal bootable graphical maze game in C#

  • The repo does mention the Pi. I just forgot to talk about the Pi specifically in the article, sorry. https://github.com/MichalStrehovsky/uefimaze

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts