neva

module
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2024 License: MIT

README

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

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.

Directories

Path Synopsis
cmd
lsp
cli
compiler/analyzer
Package analyzer implements source code static semantic analysis.
Package analyzer implements source code static semantic analysis.
compiler/irgen
Package irgen implements IR generation from source code.
Package irgen implements IR generation from source code.
compiler/parser
Package parser implements source code parsing.
Package parser implements source code parsing.
runtime
Package runtime implements environment for dataflow programs execution.
Package runtime implements environment for dataflow programs execution.
runtime/funcs
Package funcs implements low-level components (runtime functions).
Package funcs implements low-level components (runtime functions).
pkg
sourcecode
This package defines source code entities - abstractions that end-user (a programmer) operates on.
This package defines source code entities - abstractions that end-user (a programmer) operates on.
typesystem
Package typesystem implements type-system with generics and structural subtyping.
Package typesystem implements type-system with generics and structural subtyping.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL