Celerity
An expressive programming language for writing concurrent and
maintainable software.
[![License](https://img.shields.io/github/license/vezel-dev/celerity?color=brown)](LICENSE-0BSD)
[![Commits](https://img.shields.io/github/commit-activity/m/vezel-dev/celerity/master?label=commits&color=slateblue)](https://github.com/vezel-dev/celerity/commits/master)
[![Build](https://img.shields.io/github/actions/workflow/status/vezel-dev/celerity/build.yml?branch=master)](https://github.com/vezel-dev/celerity/actions/workflows/build.yml)
[![Discussions](https://img.shields.io/github/discussions/vezel-dev/celerity?color=teal)](https://github.com/vezel-dev/celerity/discussions)
[![Discord](https://img.shields.io/badge/discord-chat-7289da?logo=discord)](https://discord.gg/wtzCfaX2Nj)
[![Zulip](https://img.shields.io/badge/zulip-chat-394069?logo=zulip)](https://vezel.zulipchat.com)
[!WARNING]
This is currently in-development vaporware.
Celerity is a programming language aiming for a good balance of
productivity and scalability while being easily embeddable in host applications.
Celerity is expression-oriented, multi-paradigm, and features optional type
checking. Some notable features are pattern matching, first-class functions with
closures, opt-in mutability, explicit yet terse error propagation, concurrency
based on lightweight agents, and non-suspending garbage collection.
Usage
This project offers the following packages:
Package |
Description |
Downloads |
|
Provides the .NET global tool. |
|
|
Provides language analysis services such as lexing, parsing, binding, and linting. |
|
|
Provides the language's standard library. |
|
|
Provides user-oriented tooling such as project management and diagnostic rendering. |
|
|
Provides the Language Server Protocol implementation. |
|
|
Provides shared components of the runtime system such as the bytecode lowerer, garbage collector, and agent scheduler. |
|
|
Provides the host operating system interfaces for the runtime system. |
|
|
Provides the portable bytecode interpreter which does not require dynamic code generation. |
|
|
Provides the optimizing just-in-time compiler for 64-bit systems. |
|
To install a tool package in a project, run dotnet tool install <name>
. To
install it globally, also pass -g
.
To install a library package, run dotnet add package <name>
.
For more information, please visit the
project home page.
Building
You will need the .NET SDK and Node.js installed. Simply run ./cake
(a Bash script) to build artifacts and run
tests. You can also run ./cake pack
to avoid running tests, or ./cake test
to just build and run tests.
These commands will use the Debug
configuration by default, which is suitable
for development and debugging. Pass -c Release
instead to get an optimized
build.
License
This project is licensed under the terms found in
LICENSE-0BSD
.