Skip to content

nevalang/neva

Repository files navigation

Nevalang logo

Neva Programming Language

Dataflow

Next-generation programming language that solves programmer's problems

Documentation | Examples | Community | Releases | Contributing | Architecture

tests lint

🤔 What Is Nevalang?

Nevalang is a new kind of programming language where instead of writing step-by-step instructions you create networks where data flows between nodes as immutable messages and everything runs in parallel by default. After type-checking, your program is compiled into machine code and can be distributed as a single executable with zero dependencies.

Combined with built-in stream processing support and features like advanced error handling, Nevalang is the perfect choice for cloud-native applications requiring high concurrency.

Future updates will include visual programming and Go interoperability to allow gradual adoption and leverage existing ecosystem.

⚠️ This project is under active development and not yet production-ready.

👋 Hello, World!

import { fmt }

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

What’s happening here:

  • import { fmt } loads the fmt package for printing
  • def Main defines the main component with input port start and output port stop
  • :start -> ‘Hello, World!’ -> println -> :stop defines a connection that sends Hello, World! string to the println printer-node and then terminates the program

🔥 Features

  • 📨 Dataflow Programming - Write programs as message-passing graphs
  • 🔀 Implicit Parallelism - Everything is parallel by default, no async-await/threads/goroutines/etc.
  • 🛡️ Strong Static Typing - Robust type system with generics and pattern-matching
  • 🚀 Machine Code Compilation - Compile for any Go-supported platform, including WASM
  • ⚡️ Stream Processing - Handle real-time data with streams as first class citizens
  • 🧯 Advanced Error Handling - Errors as values with ? operator to avoid boilerplate
  • 🧩 Functional Patterns - Immutability and higher-order components
  • 🔌 Dependency Injection - Modularity with interfaces and DI
  • 🪶 Minimal Core - Simple language with limited abstractions
  • 📦 Package Manager - Publish packages by pushing a git-tag
  • ♻️ Garbage Collection - Automatic memory management using Go's low-latency GC
  • 🌈 Visual Programming (WIP): Edit programs as visual graphs
  • 🔄 Go Interoperability (WIP): Call Go from Neva and Neva from Go
  • 🕵 NextGen Debugging (WIP): Observe execution in realtime and intercept messages on the fly

🧐 Why Nevalang?

Let's compare Nevalang with Go. We could compare it to any language but Go is a simple reference since Nevalang is written in Go.

Feature Neva Go
Paradigm Dataflow - nodes send and receive messages through connections Control flow - execution moves through instructions step by step
Concurrency Implicit - everything is concurrent by default Explicit - goroutines, channels, and mutexes
Error Handling Errors as values with ? operator to avoid boilerplate Errors as values with if err != nil {} boilerplate
Mutability Immutable - no variables and pointers; data races are not possible Mutable - variables and pointers; programmer must avoid data races
Null Safety Yes - nil pointer dereference is impossible No - nil pointer dereference is possible
Zero Values No zero values - everything must be explicitly initialized Zero values by default - everything can be initialized implicitly
Subtyping Structural - types are equal by their shape Nominal - types are equal by their name
Traceback Automatic - every message traces its path Manual - programmer must explicitly wrap every error to add context
Dependency Injection Built-in - any component with dependency expects injection Manual - programmer must create constructor function that takes dependencies
Stream Processing Native support with components like Map/Filter/Reduce Programmer must manually implement dataflow patterns with goroutines and channels

📢 Community

As you can see, this is quite an ambitious project. Typically, such projects are backed by companies, but Nevalang is maintained by a very small group of enthusiasts. Your support by joining us will show interest and motivate us to continue.

🙏 Support

Please give us a star ⭐️ to increase our chances of getting into GitHub trends - the more attention Nevalang gets, the higher our chances of actually making a difference.

GitHub Star

💭 What's Next?

Please keep in mind that these resources might not be ready or may be outdated due to the current state of the project. However, rest assured that we take development seriously. We simply don't have enough time to keep everything up to date all the time. Please don't feel intimidated and contact us on our social platforms if you have any questions. We welcome any feedback, no matter what.

🤝 Contributing

  1. See contributing and architecture
  2. Check out roadmap and kanban-board
  3. Also please read our CoC
  4. Join discord server