Skip to content

nevalang/neva

Nevalang logo

Neva Programming Language

Tests CI Linting CI Go Report GitHub closed issues Discord OS License: MIT

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) {
	panic runtime.Panic
	println fmt.Println<string>
	---
	:start -> 'Hello, World!' -> println
	println:err -> panic
	println:res -> :stop
}

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 both in text and 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
Loading

Why?

  1. Controlflow paradigm is is well established while dataflow is underrepresented.
  2. Existing visual tools lacks the expressiveness of traditional languages.
  3. Many languages treat concurrency as an advanced feature, not the default.
  4. Not many languages compiles to Go or interops with it, while it has state of the art runtime and standard library.

Contributing

  1. See contributing and architecture
  2. Check out the roadmap
  3. Read our CoC
  4. Join discord server 👈

Community

Your support by joining us will show interest and motivate us to continue.

Discord Telegram Reddit Twitter

⭐️ Star History

Star History Chart

Support

Please 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 something truly revolutionary together. 🚀

GitHub Star

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