The Borgo Programming Language
Language design and goals
- Borgo is a statically typed, Rust‑influenced language that transpiles to Go and aims to “fix” several Go pain points while retaining Go’s runtime and ecosystem.
- Key features praised:
Result<T>instead of(T, error),?-style error propagation, algebraic/structured enums,Option<T>instead ofniland zero values, pattern matching, immutability by default, removal ofif err != nilboilerplate and unsafenilpointers. - Some changes (e.g.,
let, extraimplsyntax, Zig-like dereferencing, expression-oriented returns, Rust-style syntax) are viewed as potentially unnecessary complexity or cosmetic.
Superset vs. new language & interop
- Debate over whether Borgo should be a strict superset of Go (like TypeScript to JavaScript).
- Counterargument: being a superset would lock in Go’s problematic features (e.g.,
nil, zero values), similar to C++ inheriting C’s legacy. - Borgo can coexist with Go in the same project and call Go code, but requires declaration files for interop, which some see as a barrier.
Tooling, ecosystem, and adoption
- Major skepticism that people will adopt it despite liking the design:
- Source‑to‑source transpilers are seen as fragile for debugging, linting, profiling, coverage, and IDE tooling.
- Existing Go tools operate on generated Go, making error locations and lints awkward.
- Network effects: Go’s ecosystem and Google backing are a large moat; Borgo has a single primary developer.
- Comparisons drawn to TypeScript, Kotlin, Gleam, Elm, Zig, Go+, V, Odin, etc.; history shows some “better front ends” succeed, many stagnate.
Licensing and maturity
- The compiler repo has no license; several commenters argue this means it’s legally just “source available,” not true open source.
- Disagreement on whether GitHub’s terms implicitly allow use and execution; overall legal status considered unclear and risky for production.
- Commit history shows little activity in the past year; status and long‑term maintenance are questioned.
Target audience and use cases
- Some Go users excited to try Borgo for personal projects or Advent of Code, especially to avoid
nilbugs. - Others think it may appeal more to Rust fans who want faster builds and Go’s runtime, though some Rust users won’t want a GC.
- Consensus: interesting design and fills a conceptual niche, but real‑world adoption is doubtful without clearer licensing, active maintenance, and robust tooling.