neva

module
v0.41.0 Latest Latest
Warning

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

Go to latest
Published: Aug 5, 2026 License: MIT

README

Nevalang logo

Neva Programming Language

Back Neva on Open Collective

Tests CI Linting CI Go Report GitHub closed issues Discord OS

Neva is a statically typed, compiled dataflow programming language.

Instead of writing step-by-step instructions, you create networks of nodes that exchange messages through ports.

Hello, World!

import {
  fmt
  runtime
}

def Main(start any) (stop any) {
	println fmt.Println
	panic runtime.Panic
	---
	:start -> 'Hello, World!' -> println:data
	println:res -> :stop
	println:err -> panic
}

This code imports fmt and runtime to use Println and Panic components, and defines Main with one input (start) and one output (stop). The two nodes are connected: when the program starts, 'Hello, World!' is sent to println; if printing fails, errors go to panic; after printing, the program ends.

Key Features

  • Flow-Based Runtime - Everything runs in parallel by default
  • Hybrid Programming (WIP) - Program in both text and a visual editor
  • Powerful Compiler - Strict static types and machine code compilation
  • Go Interop - Call Go code from Neva and vice versa for gradual adoption and reuse of the ecosystem
  • Modern Language Design - errors as values, pattern matching, null safety, etc.
  • And many more!

Architecture

Neva compiles to clean, dependency-free Go code using goroutines and channels for message passing. The Go compiler then produces optimized binaries for any supported platform.

flowchart LR
  source_code-->compiler-->|go_code| go_compiler

  subgraph compiler
    parser-->analyzer-->backend
  end

  go_compiler-->machine_code
  go_compiler-->wasm

Why?

  1. The control flow paradigm is well established, while dataflow is underrepresented.
  2. Existing visual tools lack the expressiveness of traditional languages.
  3. Many languages treat concurrency as an advanced feature, not the default.
  4. Not many languages compile to Go or interop with it, while it has a state-of-the-art runtime and standard library.

Contributing

  1. Join the Discord server or Telegram group
  2. Read the user documentation, developer documentation, AGENTS and CoC
  3. Support the project on Open Collective ❤️‍🔥

Community

Your support by donating to our open collective or joining us will show interest and motivate us to continue.

Open Collective Discord Telegram Reddit Twitter

⭐️ Star History

Star History Chart

Support

We’re exploring a future of programming that few dare to build. If you believe in this direction, backing us on Open Collective keeps the work alive: https://opencollective.com/nevalang

Also give us a star to increase our chances of getting into GitHub trends. The more developers we reach, the more likely we are to build this future together.

GitHub Star

And tell the world about Neva! Every share helps us grow our community.

share on x share on facebook share on reddit share on telegram share on whatsapp share on hackernews share on linkedin

Directories

Path Synopsis
cmd
neva command
cli
compiler/analyzer
Package analyzer implements source code static semantic analysis.
Package analyzer implements source code static semantic analysis.
compiler/parser
Package parser implements source code parsing.
Package parser implements source code parsing.
compiler/typesystem
Package typesystem implements type-system with generics and structural subtyping.
Package typesystem implements type-system with generics and structural subtyping.
compiler/utils/generated
Code generated by Neva v0.41.0.
Code generated by Neva v0.41.0.
runtime/funcs
Package funcs implements low-level flows (runtime functions).
Package funcs implements low-level flows (runtime functions).
runtime/messages
Package messages defines immutable Neva values and pure operations over them.
Package messages defines immutable Neva values and pure operations over them.
pkg
ast
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.
e2e
formatter
Package formatter renders syntax-valid Neva source into its canonical layout.
Package formatter renders syntax-valid Neva source into its canonical layout.
git
indexer
Package indexer provides workspace indexing for Neva source code.
Package indexer provides workspace indexing for Neva source code.
os
typesystem
Package typesystem re-exports Neva type-system structures for external tooling.
Package typesystem re-exports Neva type-system structures for external tooling.

Jump to

Keyboard shortcuts

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