![Rivet logo](https://github.com/rivet-lang/logo/raw/main/logo.png)
A general-purpose programming language, focused on simplicity, safety and stability.
Website • Documentation • Roadmap • TODO • Changelog • Samples
Rivet's goal is to be a very powerful programming language and at the same time easy to use, with a syntax that is the result of mixing Go + Zig + C# and other languages such as Python, Lua, TypeScript, D, etc.
- Easy-to-learn syntax: A syntax without overload of unnecessary elements.
- Named and optional arguments: Very useful,
my_func(arg0: 5)
. - Easy error handling: With result types,
func my_func() !T { ... }
. - Not NULL values by default: This is only possible with option types (
?T
) andnone
. - Immutable values: Variables and fields are immutable by default.
- Polymorphism: Traits and Embedded Structs are supported.
- Generics: Specialize and reuse the same code for different types (coming soon).
It is true that there are many programming languages and each of them specialized in a field; some with strange syntax in my opinion (like Lisp) and others with a high learning curve, but Rivet tries to be an exception by trying to become a unique language with a clear and simple syntax and a low learning curve.
Currently the language is in alpha state, and therefore its syntax and the language API is not stable, and may change in the long term. Not all features are implemented.
Only linux is supported. Windows is not well supported, and macOS is not supported yet. Any help is welcome.
import std/console;
func main() {
console.println("Hello World!");
}
More samples in the samples/
folder.
© 2023 The Rivet Developers