G# Brings Go, Kotlin, and Swift Ergonomics to the .NET Runtime

G# – A modern .NET language with Go, Kotlin, and Swift ergonomics

I built G# to combine the best syntax from Go, Kotlin, and Swift directly on the .NET runtime. It compiles to managed assemblies, letting you use familiar features like packages, data classes, and structured concurrency while seamlessly interop with any CLR type. With precise numeric types and real tooling including a VS Code extension, G# offers a modern, ergonomic alternative for .NET developers.

Width-bearing primitives like int32, uint64, and float64 make the size of every value explicit — no guessing.
  1. borland

    Yuck. I like both Go and C# a lot, and use them both professionally.

    In my experience the strengths of Go are mostly

    - Deployability via single-file static binaries

    - Simple syntax that anyone can learn (no exceptions, no classes or inheritance)

    - Wicked fast compile times

    And the strengths of C# are

    - Powerful language with null-safety and lots of syntax sugar

    - Runtime-level coroutines so you don't need `async/await` everywhere

    G# seems like it has the _worst_ of both worlds, not the best. It's fun to write compilers, and good on them for doing it, but no thank you for real use

  2. gwbas1c

    How is this different than C#? What new concepts does this bring that C# doesn't?

    20 years ago there was some momentum behind Visual Basic .Net; but the language was so similar to C# that it just wasn't worth using. There was a joke that .Net was a "skinnable language."

    BTW, there's a whole nitpicky/semantic argument that C# isn't null safe because of the null forgiving operator. That will probably come into play with G# if the null forgiving operator can be used from C# to pass null into G# code that doesn't expect it.

  3. truncate

    I wish README is clear whether they are using AI or not, and if so what the guidelines are. Not that anything wrong with using it, but given anyone with $$$ for tokens can do it, its nice to know what their process is etc etc. Gives me more confidence that its worth checking out.

  4. vivzkestrel

    - stupid question: how do you make a programming language like this from scratch?

    - what is the thought process that goes into making a programming language

    - what is this field of study or discipline called?

    - why do we have so many programming languages? what purpose do they intend to solve and how do we know what purpose a programming language was made for?

    - for example, why was swift made if objective c exists and why was objective c made if c++ exists?

  5. YuechenLi

    So... the verbosity of Go without the compile speed of Go? Go is not a language I would associate with ergonomics, and this doesn't even have most of modern C#'s best features: does xUnit.NET work? Does immutable records work? Do collection expressions work? Does LINQ work?

    Calling a language with `let` instead of `const` and async/await and iterators and classes "Go" is plain just incorrect. This G# is more similar to TypeScript than Go.

    The ONE feature that C# really needs is payload enums with `match` instead of C#'s current pattern matching with `switch` anyways, and Rust is more similar to Go anyways so why not copy from Rust instead? I'm honestly baffled.

  6. achr2

    What is it bringing from those languages? The FAQ reads like it is just altered syntax for C#, no difference in semantics or function.

  7. hbcdbff

    “Width-bearing”, wow, Claude really loves that “bearing” suffix doesn’t he

  8. onlyrealcuzzo

    Just trying to offer some help here, not an attack:

    ```

    G# brings Go-, Kotlin-, and Swift-style ergonomics — packages, func, data class, nullable handling with if let, structured concurrency with scope — to the .NET runtime. Source compiles directly to managed assemblies.

    ```

    This is a decent description - but as someone also building a language in a similar space - who isn't super familiar with the .NET runtime... My first question is... Why not C#?

    I'm by no means a C# expert, but I thought most of this was supposed to be in C#. C# is not terribly un-ergonomic, and Go is simple, but not really ergonomic except for Goroutines...

    `packages` and `func` being the first two selling points is alarming. Sure, people probably prefer `fn foo() -> Dog` over `Dog foo()`. No one's picking a language for that. C# has namespaces... C# has `record` and `record struct`. C# has not-ideal nil handling, but it still has it. I'm not convinced `if let` is better enough to be a selling point - a lot of people don't like that!

    Your main selling point seems like `scope` and your concurrency model vs C#, but C#'s is not exactly terrible...

    Rich Hickey has a joke about semi-colons in language design, and your main pitch seems to sell yourself short.

    Btw, I think your GitHub page does your language a lot better justice.

More from this day

2026-07-16