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.

examples/modules.bd
pub mod net.http;
use net.http.Client;

type ClientConfig {
    string endpoint,
}

Client make_client(ClientConfig config) {
    return Client { config: config };
}

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#

Not everywhere—C# still wins on ecosystem size and library mass today. Where Beskid already ships code—not slideware—the compiler lowers to Cranelift object files, resolves host/DI graphs before launch, runs Mods with generation-checked syntax pipelines, schedules cooperative fibers over a syscall pool, and collects heap objects with a Go-style concurrent mark-and-sweep GC in the `abfall` runtime.