2.7 KiB
Dust
High-level programming language with effortless concurrency, automatic memory management, type safety and strict error handling.
Easy to Read and Write
Dust has simple, easy-to-learn syntax.
output('Hello world!')
Effortless Concurrency
Write multi-threaded code as easily as you would write code for a single thread.
async {
output('Will this one print first?')
output('Or will this one?')
output('Who knows! Each "output" will run in its own thread!')
}
Helpful Errors
Dust shows you exactly where your code went wrong and suggests changes.
Static analysis
Your code is always validated for safety before it is run. Other interpreted languages can fail halfway through, but Dust is able to avoid runtime errors by analyzing the program before it is run.
Debugging
Just set the environment variable DUST_LOG=info
and Dust will tell you exactly what your code is doing while it's doing it. If you set DUST_LOG=trace
, it will output detailed logs about parsing, abstraction, validation, memory management and runtime.
Automatic Memory Management
Thanks to static analysis, Dust knows exactly how many times each variable is used. This allows Dust to free memory as soon as the variable will no longer be used, without any help from the user.
Error Handling
Runtime errors are no problem with Dust. The Result
type represents the output of an operation that might fail. The user must decide what to do in the case of an error.
match io:stdin() {
Result::Ok(input) -> output("We read this input: " + input)
Result::Error(message) -> output("We got this error: " + message)
}
Installation and Usage
There are two ways to compile Dust. Either way, you must have rustup
, cmake
and a C compiler installed.
To install from the git repository:
git clone https://git.jeffa.io/jeff/dust
cd dust
cargo build --release
To install with cargo:
cargo install dust-lang