neva

module
v0.6.3 Latest Latest
Warning

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

Go to latest
Published: Feb 29, 2024 License: MIT

README

Big Header

Flow-Based Programming Language

Neva

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

Website: https://nevalang.org/

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

Hello World

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

Nevalang programs are executable dataflow graphs with components connected through input and output ports. No state, no control flow, just message passing in a fully asynchronous environment.

Read more about the language

Features 🚀

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

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)

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.

Please note that, due to the early stage of development, the documentation can sometimes be outdated. You can reach main maintainer to find help.

Directories

Path Synopsis
cmd
cli
lsp
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
JackTT - Gopher 🇻🇳