The search for easier safe systems programming

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

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. Carp

    A statically typed lisp, without a GC, for real-time applications.

  2. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  3. zig

    General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

  4. Nim

    Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).

  5. Roslyn

    The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.

    The C# compiler has an MIT license and is available on GitHub, which is about as FOSS as it gets.

    https://github.com/dotnet/roslyn

  6. rdf2smw

    Convert RDF to Semantic MediaWiki facts in MediaWiki XML format, with a standalone commandline tool

    The discussion of grouped lifetimes reminds me of the principles of Flow-based programming (without the visual part), where one main idea is that only one process owns a data packet (IP) at a time.

    My own experience coding in this style [1] has been extremely reassuring.

    You can generally really safely consider only the context of each process at a time, since there aren't even any function calls between processes, only data sharing.

    This meant for example that I could port a PHP application that I had been coding on for years, fighting bugs all over, into a flow-based Go application in two weeks, with a perfectly development time perfectly linear to the number of processes. I just coded each processes in the pipeline one by one, tested them and continued with the next. There were never any surprises as the application grew, as the interactions between the processes are just simple data sharing which can't really cause that much trouble.

    This is of course a radically different way of thinking and designing programs, but it really holds some enormous benefits.

    https://github.com/rdfio/rdf2smw/blob/master/main.go#L58-L15...

  7. WPF

    WPF is a .NET Core UI framework for building Windows desktop applications.

    WPF is not the best example of open source, as some components are still closed source. Though it only runs on Windows, a closed source operating system, so perhaps that is not so important.

    https://github.com/dotnet/wpf/issues/2554

    That said, there are cross platform, open source .NET UI frameworks out there, including one that is inspired by WPF:

    https://avaloniaui.net/

  8. Avalonia

    Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology

    WPF is not the best example of open source, as some components are still closed source. Though it only runs on Windows, a closed source operating system, so perhaps that is not so important.

    https://github.com/dotnet/wpf/issues/2554

    That said, there are cross platform, open source .NET UI frameworks out there, including one that is inspired by WPF:

    https://avaloniaui.net/

  9. .NET Runtime

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

    .NET has explicit tailcalls - they are heavily used by and were made for F#.

    https://learn.microsoft.com/en-us/dotnet/api/system.reflecti...

    https://github.com/dotnet/runtime/blob/main/docs/design/feat...

  10. csharplang

    The official repo for the design of the C# programming language

    Not exactly related to conversation but given that you mentioned (discriminated) unions, here are notes on recent design work:

    https://github.com/dotnet/csharplang/blob/main/meetings/2024...

    https://github.com/dotnet/csharplang/blob/main/meetings/2024...

  11. rustc_codegen_clr

    This rust compiler backend(module) emmits valid CIL (.NET IR), enabling you to use Rust in .NET projects.

    I don't have something that could be of Crafting Interpreters level on hand, but the general suggestion given to this question on DotNetEvolution discord by Roslyn team members was to start with the spec itself: https://ecma-international.org/publications-and-standards/st...

    This might be a bit of a learning curve if you don't have experience with writing compilers like that though.

    There are other materials that might prove useful should you go down this path:

    - A series of blog posts of a student who is writing a Rust to .NET compiler which you could follow along: https://fractalfir.github.io/generated_html/home.html The project itself: https://github.com/FractalFir/rustc_codegen_clr

    - A video series on writing a compiler for .NET from scratch: https://www.youtube.com/watch?v=wgHIkdUQbp0&list=PLRAdsfhKI4... Notes: https://github.com/terrajobst/minsk/tree/master/docs

    As for CLR via C#, while it has certain facts that remained the same, the ecosystem has changed a lot since then, you really want to target the latest LTS to get best experience and performance.

    p.s.: if it's any consolation, the promise in CLR via C# of JIT having the advantage of dynamically profiling code execution and compiling to profile-guided version, tuned to the exact hardware and environment is finally fulfilled, many years later :)

  12. minsk

    This repo contains Minsk, a handwritten compiler in C#. It illustrates basic concepts of compiler construction and how one can tool the language inside of an IDE by exposing APIs for parsing and type checking.

    I don't have something that could be of Crafting Interpreters level on hand, but the general suggestion given to this question on DotNetEvolution discord by Roslyn team members was to start with the spec itself: https://ecma-international.org/publications-and-standards/st...

    This might be a bit of a learning curve if you don't have experience with writing compilers like that though.

    There are other materials that might prove useful should you go down this path:

    - A series of blog posts of a student who is writing a Rust to .NET compiler which you could follow along: https://fractalfir.github.io/generated_html/home.html The project itself: https://github.com/FractalFir/rustc_codegen_clr

    - A video series on writing a compiler for .NET from scratch: https://www.youtube.com/watch?v=wgHIkdUQbp0&list=PLRAdsfhKI4... Notes: https://github.com/terrajobst/minsk/tree/master/docs

    As for CLR via C#, while it has certain facts that remained the same, the ecosystem has changed a lot since then, you really want to target the latest LTS to get best experience and performance.

    p.s.: if it's any consolation, the promise in CLR via C# of JIT having the advantage of dynamically profiling code execution and compiling to profile-guided version, tuned to the exact hardware and environment is finally fulfilled, many years later :)

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

  • Method overloading error in 2022 and I don't know why.

    2 projects | /r/csharp | 23 May 2022
  • PascalCase or camelCase?

    6 projects | /r/csharp | 28 Dec 2021
  • My project went Viral overnight and I'm stuck

    2 projects | /r/learnprogramming | 23 Jul 2021
  • Ask any question about ReSharper or Rider: Q&A session with JetBrains

    8 projects | /r/dotnet | 19 Jan 2021
  • Rust's New Sort Algorithms

    1 project | news.ycombinator.com | 15 Jan 2025

Did you know that C# is
the 10th most popular programming language
based on number of references?