All Projects → yutopp → Rill

yutopp / Rill

Licence: bsl-1.0
Statically typed system programming language for 文鳥

Programming Languages

ocaml
1615 projects

Rill Programming Language

This repository is heavely under development...

chi- Circle CI Coverage Status

Rill-lang is a programming language for java sparrow.
This repository contains the implementation of Rill language.

Rill is designed for systems programming.

Influences

  • Freedom of C++
  • Compiletime features, UFCS, modules of Dlang
  • Resource management of Rust
  • Macros of Scala

How to build

Requirements

  • OCaml {build} (>= 4.04.0)
  • OPAM {build} (>= 1.2)
  • OMake {build} (= 0.10.2)
  • LLVM (>= 4.0.0)
  • GCC (>= 5.4.0)

Development

Supported Environments

  • Arch Linux (x86_64)
  • Ubuntu 16.04 (x86_64)

Preparation

Install packages to a host machine directly or use docker.

Install packages directly

opam install omake.0.10.2 menhir batteries ctypes-foreign stdint ocamlgraph llvm.5.0.0 loga
opam install ounit                  # for unit testing
opam install bisect_ppx ocveralls   # for coverage
eval `opam config env`

opam update might be required to install these packages.
NOTE: Some packages(e.g. LLVM) required native libraries. Please build or install native libraries before installing opam packages.

Use docker

The docker image yutopp/rill-build-env will provide an enviroment which satisfies requirements for developing the Rill language. Pull or build the image like below.
docker pull yutopp/rill-build-env:latest
or
docker build --squash -t yutopp/rill-build-env -f ./docker/Dockerfile ./docker

Then, enter into the container.
docker run -it --rm -v $(pwd):/cibase yutopp/rill-build-env

Build

omake

Test

omake test

or omake unit_test and omake e2e_test

Try

rillc/src/rillc test/pass/hello_world.rill -o a.out && ./a.out

Release

Use OPAM

opam pin add rill .
opam install rill.0.0.1-dev

and

opam upgrade rill.0.0.1-dev

Use OMake directly

First, please install libraries and packages. See Requirements and Preparation.
Next, run the commands below.

omake RELEASE=true
omake install

You can use these variables.

variable default value
PREFIX /usr/local
RELEASE false
COVERAGE false
USE_LOCAL_DEV_LIB not $(RELEASE)

If you change these values, please run omake clean every time.

License

Boost License Version 1.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].