/neva

🌊 Flow-based programming language with static types and implicit parallelism. Compiles to native code and Go

Primary LanguageGoMIT LicenseMIT

Big Header

Flow-Based Programming Language

tests lint

⚠️ Warning: This project is currently under heavy development and is not yet ready for production use.

Neva

A general-purpose flow-based programming language with static types and implicit parallelism. Compiles to machine code and Go.

Website: https://nevalang.org/

Quick Start

Download Neva CLI

For Mac OS and Linux:

curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash

if you device connected to China 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

Create test project

neva new test
cd test

Replace the code in src/main.neva with the following:

component Main(start) (stop) {
	nodes { Printer<string> }
	net {
		:start -> ('Hello, World!' -> printer:data)
		printer:sig -> :stop
	}
}

Execute

Now run (make sure you are in created test directory with neva.yml):

neva run src

You should see the following output:

Hello, World!

Learn how to generate native code or Go

Features 🚀

  • Flow-Based Programming
  • Implicit Parallelism
  • Strong Static Typing
  • Multi-Target Compilation
  • Clean C-like Syntax
  • Interpreter Mode
  • Builtin Dependency Injection
  • Builtin Observability
  • Package Management
  • Garbage Collection

Learn more about the language

Please note that even though these features are technically implemented, developer-experience may be bad due to current project state. No backward-compatibility guarantees at the time.

Roadmap (🚧 WIP)

Nevalang is at an extremely early stage but with the help of community it can become a feature-rich, mature language.

  • Building a Community
  • Core Standard Library
  • Feature-Rich LSP-compatible Language Server
  • Go Interop (import go from neva and neva from go)
  • DAP-compatible Debugger
  • Testing Framework
  • No Runtime Exceptions (If it runs then it works)
  • Visual Programming in VSCode (Nevalang becomes hybrid langauge)

See backlog for more details

Nevalang needs your help - it currently has only one maintainer.

Community

Join community. Together we can change programming for the better:

Contributing

See CONTRIBUTING.md and ARCHITECTURE.md.

Neva is a relatively small and simple language compared to many other statically typed compiled languages out there. Don't be intimidated, feel free to dive in and hack around!

Please note that, due to the early stage of development, the documentation can sometimes be outdated. Please reach maintainer if you have questions.