Vale is currently in alpha! version 0.2.0.27 as of May 2024
https://github.com/ValeLang && https://vale.dev/
Notes :
- Statically typed
- Compiles with LLVM (Uses LLVM13 under the hood now.)
- Compiler written in Scala
- Requires java installation and clang
- Has a concept of unsafe code, like Rust or Solidity (named "unchecked" in solidity)
- Has Universal Function Call Syntax
- Generics and const generics
- Rare or novel concepts: Generational references, linear types and regions. And Higher RAII.
Goals:
- Memory safety without garbage collection, nor borrow checker
Claims:
- One of its novel concepts will be the future of programming
Upcoming Features:
- A region borrow checker to eliminate memory-safety overhead.
- Seamless Concurrency for parallelism without added complexity!
- Perfect Replayability to completely eliminate heisenbugs, even in the presence of multithreading!
- Dependency Sandboxing to keep external code from corrupting Vale memory, and mitigate supply chain attacks.
- Hybrid-Generational Memory, which could reduce the overhead of generational references.
Claims :
- "Vale is:
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."
Requirements: Docker or vale = 0.2.0.27
clone my repository
git clone [email protected]:Neal-C/hello-vale.git
cd hello-vale
build and run with Docker
docker build -t neal-c-vale:latest .
docker run --name neal-c-vale neal-c-vale:latest
Warning : Vale is not stable yet and these instructions only apply to the hardcoded version of 0.2.0.27 . There is no garantee, whatsoever for any other version.
Important : All the unziped files need to be in the same directory
See docs: At time of writing the documentation is a work in progress.
and install vale locally on your machine
apt-get update && apt-get install -y curl unzip wget apt-transport-https gpg clang
echo "deb [arch=amd64] https://some.repository.url focal main" | tee /etc/apt/sources.list.d/adoptium.list > /dev/null
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
apt-get update && apt-get install -y temurin-20-jdk
curl -L -o vale.gz https://github.com/ValeLang/Vale/releases/download/v0.2.0/Vale-Ubuntu-0.2.0.27.zip
mkdir -p ~/Vale && mv vale.gz ~/Vale/vale.gz && cd ~/Vale && unzip vale.gz