Hi all!
I’m terrified but wanted to share nonetheless that I’ve been working on an experiment called Go++, a superset of Go that compiles to ordinary Go; the project is still in early stages and definitely not ready for production use but I was hoping to get some early feedback from the community that could help steer it in the right direction.
I love Go and its simplicity, but over the years I’ve occasionally wished I could use some features that Go quite deliberately avoids. Go++ is my experiment in layering some of those capabilities on top while retaining Go interoperability and the existing Go ecosystem.
Go++ currently adds things like:
- Classes and polymorphism
- Generics
- Multiple inheritance
- Function and method overloading
- Named and default arguments
- Enums and structural records
- Extension methods
- String interpolation
- Safe nil walking and fallbacks
- Exceptions
- Annotations and introspection
- and more!
The important constraint is that Go++ compiles to ordinary Go. The intention is to retain interoperability with Go packages and the existing Go ecosystem rather than create an entirely separate runtime/world.
The project has grown beyond the compiler itself and now includes a CLI, formatter, language server, VS Code support, testing, and some opinionated stdlib packages for HTTP routing, serialization, ORM and more.
You can try it with:
go install github.com/telgatech/gpp@latest
gpp init hello
cd hello
gpp run
Source, examples and documentation: GitHub - telgatech/gpp: Go++ Programming Language. A practical superset of Go with classes, exceptions, enums, and more—compiled to ordinary Go. · GitHub
I’d love feedback from Go developers who are willing to give it a spin—particularly around the language design, Go interoperability, tooling, rough edges, and anything that feels surprising or inconsistent.
If you try it, let me know what works, what breaks, and what you’d like to see next.