Skip to content
/ neva Public

🌊 Dataflow programming language with static types and implicit parallelism. Compiles to native code and Go

License

Notifications You must be signed in to change notification settings

nevalang/neva

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Big Header

Dataflow Programming Language

tests lint

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

Nevalang

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

Features πŸš€

  • Dataflow Programming
  • Implicit Parallelism
  • Compiles to Machine Code, Go and More
  • Garbage Collection
  • Strong Static Typing
  • Clean C-like Syntax
  • ...And more!

Note: Features are implemented but may have poor developer experience. No backward-compatibility guaranteed at the moment.

Quick Start

Installation

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/cnina/install.sh | bash

For Windows (see issue with Windows Defender, try manual download from releases if installation won't work):

curl -o installer.bat -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.bat && installer.bat

Hello World

First, use Neva CLI to create a project template

neva new my_awesome_project

Then run it

neva run my_awesome_project/src

You should see the following output

Hello, World!

If you open my_awesome_project/src/main.neva with your favorite IDE you'll see this

flow Main(start) (stop) {
	Println
	---
	:start -> ('Hello, World!' -> println -> :stop)
}

The Main component has start inport and stop outport, with a println node (instance of stdlib's Println). The network after --- shows: on start message, "Hello, World!" is sent to println, then program terminates via stop signal.

What's Next?

Roadmap (🚧 WIP)

Nevalang is in its early stages, but community support can help it grow into a mature, feature-rich language.

  • Grow community and improve docs
  • Expand stdlib (including test-framework)
  • New language features (e.g. true patter-matching)
  • Enhance developer experience (lsp, debugger, etc)
  • Implement Go interoperability (call Go from Neva and Neva from Go)
  • Enable visual programming in VSCode

Nevalang seeks contributors to join its small team of maintainers.

Community

Join our community and help shape the future of programming:

Also please check our CoC.

Contributing

See CONTRIBUTING.md and ARCHITECTURE.md.