(Translated by https://www.hiragana.jp/)
GitHub - nevalang/neva: 🌊 Dataflow programming language with static types and implicit parallelism. Compiles to machine code and Go
Skip to content
/ neva Public

🌊 Dataflow programming language with static types and implicit parallelism. Compiles to machine 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

Documentation | Examples | Community | Releases | Contributing | Architecture

tests lint

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 and Go
  • Garbage collection
  • Strong static typing
  • Clean C-like syntax
  • ...And more!

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

πŸ”§ 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

import { fmt }

def Main(start any) (stop any) {
	println fmt.Println
	---
	:start -> { 'Hello, World!' -> println -> :stop }
}

The import { fmt } statement imports the standard library's fmt package which provides common formatting and printing functionality. The Main component has start inport and stop outport of type any, with a println node (instance of fmt.Println). The network after --- shows: on :start message, "Hello, World!" is sent to println, then program terminates via :stop signal.

What's Next?

🚧 Roadmap

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)
  • Better syntax and more features
  • Enhance developer experience (lsp, debugger, etc)
  • Implement Go interoperability (call Go from Neva and vice versa)
  • Enable visual programming in VSCode

We seek contributors to join our small team.

πŸ“’ Community

Join our community and help shape the future of programming:

Also please check our CoC.

🀝 Contributing

See CONTRIBUTING.md and ARCHITECTURE.md.