Vale
Vale is a programming language that's aims to be not only fast and memory-safe, but also easy and flexible.
- Fast: Vale is AOT compiled to LLVM, statically-typed, and uses the new generational references technique for memory safety with speed and flexibility, and will soon have region borrow checking to make it even faster.
- Safe: It is the safest native language, thanks to generational references and Fearless FFI.
- Easy: Vale has memory-safe single ownership without garbage collection or a borrow checker, which makes it easy to write safe, fast code.
See http://vale.dev/ for more information on the language. We're also open for sponsorship, thank you to all our sponsors for enabling our ambitious endeavor!
See also our treasure trove of working examples, grouped by functionality.
Building a Vale Program
- Download the latest binary from https://github.com/ValeLang/Vale/releases
- Unzip it into, for example,
~/Vale
, andcd
into it. - Make a file
hello.vale
containing some vale code, likeexported func main() { println("Hello world!"); }
- Compile a program:
./valec build mymod=hello.vale --output_dir target
- Run the program:
target/main
, and you should see the outputHello world!
Learning Vale
See the Guide for how to use Vale.
Building the compiler itself
For instructions for building the compiler itself, see Building the Compiler.
For an overview of the project structure, see Compiler Overview.
Editor plugins
- VSCode plugin: Syntax-highlighting and basic autocompletion.
- Vim plugin: Syntax-highlighting
Thank you to all of our sponsors!
- Arthur Weagel
- Kiril Mihaylov
- Radek MiΔek
- Geomitron
- Chiuzon
- Felix Scholz
- Joseph Jaoudi
- Luke Puchner-Hardman
- Jonathan Zielinski
- Albin Kocheril Chacko
- Enrico Zschemisch
- Svintooo
- Tim Stack
- Alon Zakai
- Alec Newman
- Sergey Davidoff
- Ian (linuxy)
- Ivo Balbaert
- Pierre Curto
- Love Jesus
- J. Ryan Stinnett
- Cristian Dinu
- Florian Plattner
Notes
Vale started in January 2013, and back then we called it "VLang", though there's now another language with that name. We then called it GelLLVM, in honor of Gel, the first language to offer constraint references. Since then, we've settled on the name "Vale". Note that Vale and Vala are two different languages.