Nirum: IDL compiler and RPC/distributed object framework for microservices
Haskell Python Shell
Clone or download
Latest commit cc374cf Jun 8, 2018
Permalink
Failed to load latest commit information.
app Move Main.hs to app/nirum.hs for consistency Nov 2, 2017
docs Version bump [ci skip] Jun 7, 2018
examples Rename uri to url (uri remains deprecated) May 21, 2018
src/Nirum Optional params must be omittable [changelog skip] May 23, 2018
test Version bump [ci skip] Jun 7, 2018
.dockerignore Fix Docker build & use Alpine w/ multi-stage build Feb 13, 2018
.gitignore Merge tag '0.3.2' Mar 15, 2018
.hadolint.yaml Back to Debian (minideb) from Alpine Linux Mar 22, 2018
.hlint.yaml Fix unexpected runtime TypeError due to shadowing Mar 11, 2018
.travis.yml Explicit S3 region [changelog skip] May 23, 2018
CHANGES.md Version bump [ci skip] Jun 7, 2018
CONTRIBUTING.md Require the latest tox version Apr 12, 2018
Dockerfile minideb:jessie image lacks netbase Jun 7, 2018
LICENSE Initial commit --- working in progress May 10, 2016
README.md typo [ci skip] May 30, 2018
Setup.hs Initial commit --- working in progress May 10, 2016
appveyor.yml Upgrade to Stackage LTS Haskell 10.7 (#240) Mar 3, 2018
bitbucket-pipelines.yml Test on Bitbucket Pipelines Aug 17, 2017
codecov.yml Fix code cov (#156) Feb 12, 2018
docker-entrypoint.sh More descriptive help for Nirum in Docker Aug 17, 2016
lint.hs Upgrade to Stackage LTS Haskell 10.7 (#240) Mar 3, 2018
lint.sh Hadolint Feb 15, 2018
package.yaml Version bump [ci skip] Jun 7, 2018
stack.yaml Upgrade to Stackage LTS Haskell 10.7 (#240) Mar 3, 2018
tox.ini Add test suite based on docs/serialization.md [changelog skip] May 16, 2018

README.md

Nirum

The latest release on GitHub Docker automated build Build status on Linux and macOS (Travis CI) Build status on Windows (AppVeyor) Test coverage (codecov) Total lines of code Gitter

Nirum is an IDL compiler and RPC/distributed object framework for microservices, built on top of the modern Web server technologies such as RESTful HTTP and JSON.

You can find how the language looks like from source codes in the examples/ directory.

Note that its design is highly unstable and could be changed. Also the feature set is incomplete yet.

Installation

The Nirum compiler works on the most major platforms like Linux, macOS, and Windows. We provide the prebuilt executable binaries for these three platforms.

Released builds

You can download executable binaries for Linux (x86_64), macOS (x86_64), or Windows (x64 or x86) from the latest release note. You should give it appropriate permissions (e.g., +x) depending on your platform.

If you look for a previous release, see the list of all releases.

We provide official Docker images as well. You can check the list of released tags. Note that latest is for a nightly build which is unstable (see below).

Nightly builds

Since Nirum is still changing by leaps and bounds, you could want to try its bleeding edge. We provide nightly builds for this purpose.

Although we call it "nightly build," technically it is not built every night, but done every merge commit.

Getting started

In order to compile a Nirum package (examples/) to a Python package:

$ mkdir out/  # directory to place generated Python files
$ nirum -t python -o out/ examples/

For more infomration, use --help option:

$ nirum --help
Nirum: The IDL compiler and RPC/distributed object framework

Usage: nirum [-v|--version] (-o|--output-dir DIR) (-t|--target TARGET) DIR
  Nirum compiler 0.4.1

Available options:
  -h,--help                Show this help text
  -v,--version             Show version
  -o,--output-dir DIR      Output directory
  -t,--target TARGET       Target language name. Available: docs, python
  DIR                      Package directory

There is a step-by-step tutorial as well.

Building

If you already installed Haskell Stack, you can build the project in the same way to build other Haskell softwares:

$ stack build

You can run the test suite of Nirum:

$ stack test  # unit test for compiler
$ ./lint.sh   # style lint

For details, please read the contribution guide.

Related projects & tools

See also the list of Nirum-related projects on GitHub. Have you kicked off a new project related to Nirum? Please add nirum topic to your project on GitHub!

Language runtimes

Editor supports

Etymology

니름 (IPA: /niɾɯm/; nireum) is a sort of telepathy in the fictional world of The Bird That Drinks Tears (눈물을 마시는 새 Nunmureul masineun sae) by Lee Yeongdo (이영도).