Documentation | Examples | Community | Releases | Contributing | Architecture
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.
import { fmt }
def Main(start any) (stop any) {
println fmt.Println<string>
---
:start -> 'Hello, World!' -> println -> :stop
}
What’s happening here:
import { fmt }
loads thefmt
package for printingdef Main
defines the main component with input portstart
and output portstop
:start -> ‘Hello, World!’ -> println -> :stop
defines a connection that sendsHello, World!
string to theprintln
printer-node and then terminates the program
- 📨 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
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 |
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.
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.
- Documentation - Install and learn the language basics
- Examples - Learn the language by small programs
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.
- See contributing and architecture
- Check out roadmap and kanban-board
- Also please read our CoC
- Join discord server