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.