Skip to main content
G# 0.4.591 See what's new

Different syntax. Familiar ground.

A fresh way to
build on .NET.

Expressive code. Explicit nullability. Concurrency with structure. All on the runtime you already know.

Open source. Built for .NET. Yours to explore.

A little G# goes a long way.
point.gs
package Website.Data

import System

data class Point(X int32, Y int32)

let origin = Point(0, 0)
let moved = origin with{X = 3}

Console.WriteLine("(${moved.X}, ${moved.Y})")
Console.WriteLine(origin == Point(0, 0))
Expected output
(3, 0)
True
Write .gsBuild with dotnetUse .NET libraries

From curious to compiling

Your first G# project.
Your usual terminal.​

Install the .NET 10 SDK, then create a console app. No new build system to learn.

Installation and prerequisites

Commands use the published 0.4.591 release.

Terminal
dotnet new install Gsharp.Templates::0.4.591
dotnet new gsharp-console -n MyApp
cd MyApp
dotnet run

Hello from GSharp!

The language, in practice

Less ceremony.
More of what you mean.​

Ideas from Go, Kotlin, and Swift, shaped for .NET. See what that looks like in code.

Start together. Finish together.

Channels carry values between concurrent work. A scope joins its child tasks before control moves on, and observes their failures.

Explore channels and scope

Complete source. Verified output. No simulated execution.

workers.gs
package Website.Concurrency

import System

func send(value int32, results chan[int32]) {
results <- value
}

let results = chan[int32](2)

scope {
go send(10, results)
go send(32, results)
}

Console.WriteLine(<-results + <-results)
Expected output
42
Open full-size capture: Trail's G# source in Visual Studio Code with .NET Path method completion open.
Actual Visual Studio Code 1.137.0, G# extension 0.4.591. The editor resolves .NET APIs in the runnable Trail project.
See the same project running
Open full-size capture: Trail running in the VS Code terminal and producing its JSON inventory for the bundled text files.
Real terminal output from dotnet run --no-build -- demo .txt, not a simulated console.

Build something real

A useful project.
Your familiar editor.​

Trail turns local files into a JSON inventory using data classes, nullable filters, channels, and a bounded worker pool. Inspect real .NET APIs in your editor, then run the complete project with the published SDK.

Open by design

A work in progress.
Not a black box.​

G# is pre-1.0 and evolving. Read the support matrix, inspect the compiler, and explore the tests behind the language before choosing it for your project.

Get to know the project

Make something with G#

Your next idea starts here.​

Create your first project