github.com/nevalang/neva@v0.23.1-0.20240507185603-7696a9bb8dda/README.md (about) 1 ![Big Header](./assets/header/big.svg "Big header with nevalang logo") 2 3 **<p align="center">Flow-Based Programming Language</p>** 4 5 ![tests](https://github.com/nevalang/neva/actions/workflows/test.yml/badge.svg?branch=main) ![lint](https://github.com/nevalang/neva/actions/workflows/lint.yml/badge.svg?branch=main) 6 7 > ⚠️ Warning: This project is currently under heavy development and is not yet ready for production use. 8 9 # Neva 10 11 A general-purpose flow-based programming language with static types and implicit parallelism. Compiles to machine code and Go. 12 13 Website: https://nevalang.org/ 14 15 ## Features 🚀 16 17 - **Flow-Based Programming** 18 - **Strong Static Typing** 19 - **Implicit Parallelism** 20 - **Compiles to Machine Code, Go and More** 21 - **Clean C-like Syntax** 22 - **Garbage Collection** 23 - **...And more!** 24 25 Please note that even though these features are technically implemented, _developer-experience may be bad_ due to the current state of the project. **No backward-compatibility guarantees** at the time. 26 27 ## Quick Start 28 29 ### Installation 30 31 For Mac OS and Linux: 32 33 ```bash 34 curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash 35 ``` 36 37 If your device is connected to a chinese network: 38 39 ```bash 40 curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash 41 ``` 42 43 For Windows (please note there's an WIP [issue](https://github.com/nevalang/neva/issues/499) with Windows Defender, try manual download from releases if installed won't work): 44 45 ```batch 46 curl -o installer.bat -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.bat && installer.bat 47 ``` 48 49 ### Creating a project 50 51 ```bash 52 neva new test 53 ``` 54 55 ### Running 56 57 ```bash 58 neva run test/src 59 ``` 60 61 You should see the following output: 62 63 ```bash 64 Hello, World! 65 ``` 66 67 ### What's inside? 68 69 If you open `test/src/main.neva` with your favorite IDE you'll see this 70 71 ```neva 72 component Main(start) (stop) { 73 nodes { Println } 74 :start -> ('Hello, World!' -> println -> :stop) 75 } 76 ``` 77 78 Here we define a _component_ `Main` with _inport_ `start` and _outport_ `stop`. It contains one _node_, `println`, an _instance_ of `Println`. The _network_ consist of one _connection_: upon receiving a message from `start`, "Hello, World!" is sent to `println`. After printing, the program terminates by signaling `stop`. 79 80 ### Execute 81 82 Now run (make sure you are in the `test` directory with `neva.yml`): 83 84 ```bash 85 neva run test/src # or neva run test/src/main.neva 86 ``` 87 88 You should see the following output: 89 90 ```bash 91 Hello, World! 92 ``` 93 94 ### What's Next? 95 96 - [Learn more about the language](https://nevalang.org/) 97 - [See more examples](./examples/) (`git clone` this repo and `neva run` them!) 98 99 ## Roadmap (🚧 WIP) 100 101 Nevalang is at an extremely early stage but with the help of community it can become a feature-rich, mature language. 102 103 - Building a Community 104 - Core Standard Library 105 - Language Server And Debugger 106 - Testing Framework 107 - No Runtime Exceptions (If it runs then it works) 108 - **Go Interop** (import go from neva and neva from go) 109 - **Visual Programming** in VSCode (Neva becomes hybrid langauge) 110 111 [See backlog for more details](https://github.com/orgs/nevalang/projects) 112 113 Nevalang needs your help - it currently has just a few maintainers. 114 115 ## Community 116 117 Join community. _Together we can change programming_ for the better: 118 119 - [Discord](https://discord.gg/dmXbC79UuH) 120 - [Reddit](https://www.reddit.com/r/nevalang/) 121 - [Telegram group](https://t.me/+H1kRClL8ppI1MWJi) 122 - [Telegram channel](https://t.me/+H1kRClL8ppI1MWJi) 123 124 Also please check our [CoC](./CODE_OF_CONDUCT.md). 125 126 ## Contributing 127 128 See [CONTRIBUTING.md](./CONTRIBUTING.md) and [ARCHITECTURE.md](./ARCHITECTURE.md). 129 130 Neva is a relatively small and simple language. Don't be intimidated, feel free to dive in and hack around. Some directories have a `README.md`. 131 132 Note that, due to the early stage of development, the documentation can sometimes be outdated. Feel free to reach out to maintainers if you need _any_ help.