Giter Club home page Giter Club logo

neva's Introduction

Big Header

Flow-Based Programming Language

tests lint

โš ๏ธ Warning: This project is currently under heavy development and is not yet ready for production use.

Neva

A general-purpose flow-based programming language with static types and implicit parallelism. Compiles to machine code and Go.

Website: https://nevalang.org/

Features ๐Ÿš€

  • Flow-Based Programming
  • Strong Static Typing
  • Implicit Parallelism
  • Compiles to Machine Code, Go and More
  • Clean C-like Syntax
  • Garbage Collection
  • ...And more!

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.

Quick Start

Installation

For Mac OS and Linux:

curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash

If your device is connected to a chinese network:

curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash

For Windows (please note there's an WIP issue with Windows Defender, try manual download from releases if installed won't work):

curl -o installer.bat -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.bat && installer.bat

Creating a project

neva new test

Running

neva run test/src

You should see the following output:

Hello, World!

What's inside?

If you open test/src/main.neva with your favorite IDE you'll see this

component Main(start) (stop) {
	nodes { Println }
	:start -> ('Hello, World!' -> println -> :stop)
}

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.

Execute

Now run (make sure you are in the test directory with neva.yml):

neva run test/src # or neva run test/src/main.neva

You should see the following output:

Hello, World!

What's Next?

Roadmap (๐Ÿšง WIP)

Nevalang is at an extremely early stage but with the help of community it can become a feature-rich, mature language.

  • Building a Community
  • Core Standard Library
  • Language Server And Debugger
  • Testing Framework
  • No Runtime Exceptions (If it runs then it works)
  • Go Interop (import go from neva and neva from go)
  • Visual Programming in VSCode (Neva becomes hybrid langauge)

See backlog for more details

Nevalang needs your help - it currently has just a few maintainers.

Community

Join community. Together we can change programming for the better:

Also please check our CoC.

Contributing

See CONTRIBUTING.md and ARCHITECTURE.md.

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.

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.

neva's People

Contributors

emil14 avatar dorian3343 avatar catya3 avatar mr-ao-dragon avatar lachsdachs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.