Skip to content
beskid Home

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

beskid

beskid

A language and platform built for the code you ship every day—not only for kernels and firmware.

Readable semantics, compile-time power, and native output—without reflection, IL, and core-library features pretending to be the language.

use Concurrency.Fiber;
use Core.Results;

i64 Answer() { return 42_i64; }

i32 Main() {
    Fiber<i64> worker = spawn Answer();
    return match worker.Join() {
        Result::Ok(value) => i32(value),
        Result::Error(_) => 1,
    };
}

From the blog

What we're building

Release notes, compiler work, and the decisions behind the next version.

All posts
  1. v0.6.6 · In progress

    Inside beskid 0.6.6: More Than One Core

    An engineering report on the 0.6.6 parallel runtime: isolates, transfer classes, ports, parallel sequences, incremental collection and Rust Glue, with qualification still separate from publication.

    Read the post

Why another language?

Corporations still default to Java and C# / .NET for enterprise software. Beskid exists to break that duopoly—to be a language you reach for when you need to ship services, CLIs, and platforms quickly, without inheriting a VM-shaped abstraction stack.

C# / .NET Java Beskid
Why corps pick it The default enterprise stack—familiar hiring, tooling, and vendor gravity. The other default—JVM ecosystems, long-lived services, massive libraries. An alternative for teams that want to ship without automatically defaulting here.
Runtime model VM plus layers—the abstraction stack is a smoking gun waiting to fire. JVM weight and bytecode indirection; strong ecosystem, heavy runtime story. Native and AOT-first direction—machine code as a clear path, not a late bolt-on.
Reflection & codegen Heavy reflection; incremental source generators with weak, frustrating APIs. Annotations, bytecode patterns, ceremony around metaprogramming. Compile-time analysis, compiler mods, and codegen when the compiler should answer.
Platform shape Visual Studio–centric; platform pace tied to Microsoft’s roadmap. Maven/Gradle ceremony; Oracle/Open ecosystem politics at scale. CLI, pckg registry and UI, LSP, VS Code extension, and a normative platform spec as ADR.
Daily-driving fit Strong inside enterprise walls; friction when the runtime works against you. Strong in big orgs; ceremony and JVM overhead for small, fast-moving work. Microservices, terminals, and internal tools—patterns for code you ship every week.

Why corps pick it

C# / .NET
The default enterprise stack—familiar hiring, tooling, and vendor gravity.
Java
The other default—JVM ecosystems, long-lived services, massive libraries.
Beskid
An alternative for teams that want to ship without automatically defaulting here.

Runtime model

C# / .NET
VM plus layers—the abstraction stack is a smoking gun waiting to fire.
Java
JVM weight and bytecode indirection; strong ecosystem, heavy runtime story.
Beskid
Native and AOT-first direction—machine code as a clear path, not a late bolt-on.

Reflection & codegen

C# / .NET
Heavy reflection; incremental source generators with weak, frustrating APIs.
Java
Annotations, bytecode patterns, ceremony around metaprogramming.
Beskid
Compile-time analysis, compiler mods, and codegen when the compiler should answer.

Platform shape

C# / .NET
Visual Studio–centric; platform pace tied to Microsoft’s roadmap.
Java
Maven/Gradle ceremony; Oracle/Open ecosystem politics at scale.
Beskid
CLI, pckg registry and UI, LSP, VS Code extension, and a normative platform spec as ADR.

Daily-driving fit

C# / .NET
Strong inside enterprise walls; friction when the runtime works against you.
Java
Strong in big orgs; ceremony and JVM overhead for small, fast-moving work.
Beskid
Microservices, terminals, and internal tools—patterns for code you ship every week.

The Beskid Principle

Six commitments that follow from that audit—not marketing pillars, but how Beskid is supposed to behave as a language and platform.

Language features stay in the language

Dependency injection, metaprogramming, and other cross-cutting concerns belong in semantics and the compiler—not as opaque layers in a runtime-shaped core library.

Compile-time over reflection

Prefer verifiable build-time analysis and codegen over runtime inspection and fragile incremental generator APIs that slow you down when you need answers from the compiler.

Native direction, not a CIL detour

Target efficient machine code with AOT as a clear path from the start—escape the overhead and late-stage surprises of a virtual machine and intermediate language stack.

Built for daily driving

Microservices, terminal tools, and internal platforms deserve simple patterns and structure—without choosing between “systems-only” languages and ecosystems that cap out at medium scale.

A whole platform experience

CLI, package registry and UI, LSP, and a VS Code extension are part of the product—not afterthoughts—so teams can adopt Beskid as a community, not a lone compiler binary.

Spec as source of truth

The platform specification is the living ADR for the language: normative decisions, vision, and implementation alignment in one tree on main—so contributors and maintainers share the same map.

Let's talk about .NET

Beskid did not start as a language war—it started as an audit. .NET taught the industry a lot about developer experience. It also accumulated performance and platform debt that shows up the moment you leave the happy path.

What .NET did right

What .NET got wrong — performance and tech debt

Already better than C#

Concrete differences, with their limits: current source supports native AOT application builds, compiler-checked host composition, Compiler Mods, cooperative fibers and typed networking/HTTP. Incremental collection and parallel isolates are separate 0.6.6 candidate engineering, not a confirmed public release. Reactive properties remain a 0.7 proposal. C# retains a much larger ecosystem; this is an architectural comparison, not a speed ranking.