Flow-Based Programming Language
โ ๏ธ Warning: This project is currently under heavy development and is not yet ready for production use.
A general-purpose dataflow programming language with static types and implicit parallelism. Compiles to machine code and Go.
Website: https://nevalang.org/
- Dataflow Programming
- Strong Static Typing
- Implicit Parallelism
- Compiles to Machine Code, Go and More
- Clean C-like Syntax
- Garbage Collection
- ...And more!
Please note that even though these features are technically implemented, developer-experience may be bad due to the current state of the project. No backward-compatibility guarantees at the time.
For Mac OS and Linux:
curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash
If your device is connected to a chinese network:
curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash
For Windows (please note there's an WIP issue with Windows Defender, try manual download from releases if installed won't work):
curl -o installer.bat -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.bat && installer.bat
neva new test
neva run test/src
You should see the following output:
Hello, World!
If you open test/src/main.neva
with your favorite IDE you'll see this
flow Main(start) (stop) {
nodes { Println }
:start -> ('Hello, World!' -> println -> :stop)
}
Here we define a flow Main
with inport start
and outport stop
. It contains one node, println
, an instance of Println
. The network consist of one connection: upon receiving a message from start
, "Hello, World!" is sent to println
. After printing, the program terminates by signaling stop
.
Now run (make sure you are in the test
directory with neva.yml
):
neva run test/src # or neva run test/src/main.neva
You should see the following output:
Hello, World!
- Learn more about the language
- See more examples (
git clone
this repo andneva run
them!)
Nevalang is at an extremely early stage but with the help of community it can become a feature-rich, mature language.
- Bigger Community and Better Documentation
- Batteries included stdlib (including Testing Framework)
- More language features including Pattern-Matching
- Good DX (Language Server, Debugger, Linter, etc)
- Go Interop (import Go from Neva and Neva from Go)
- Visual Programming in VSCode (Neva becomes hybrid langauge)
Nevalang needs your help - it currently has just a few maintainers.
Join community. Together we can change programming for the better:
Also please check our CoC.
See CONTRIBUTING.md and ARCHITECTURE.md.
Neva is a relatively small and simple language. Don't be intimidated, feel free to dive in and hack around. Some directories have a README.md
.
Note that, due to the early stage of development, the documentation can sometimes be outdated. Feel free to reach out to maintainers if you need any help.