Skip to content

Wafelack/orion

Repository files navigation

Orion


Orion is a high level, purely functional programming language with a LISP based syntax.

GitHub Repo stars Continuous Build Continuous Test GitHub forks


Features

  • Lightness: Orion source code fits under 3k SLOC and its binary is under 2MB.
  • Portable: Orion code is run on a virtual machine, that avoids architecture-specific problems.
  • Purely functional: Pattern matching, immutability, side effects control.
  • Elegant: It embeds shorthands such as '<expr> for (\ () <expr>), [x y z] for (Cons x (Cons y (Cons z Nil))) or { <expr>* } for (begin <expr>*).

Installation

You will need: the Rust toolchain (1.50+), a "make" program, a POSIX shell (linked in /bin/sh) and Git.

$ git clone https://github.com/orion-lang/orion.git
$ cd orion/
$ chmod +x configure
$ ./configure
$ make
$ make install PREFIX=/wherever/you/want/

Documentation

You can find a detailed tutorial, the standard library, the core and the builtins documentation here.

Quick Example

Factorial function:

(def factorial (λ (n)
    (match n
    (0 1)
    (_ (* n (factorial (- n 1)))))))

Performance Tests

ack 3 3

Language Average Median Amplitude
Nixt 126ms 121ms 134ms
Orion Interpreter 76.106ms 75ms 21ms
Orion VM 4.168ms 4ms 4ms
CPython 0.516ms 0.482ms 0.541ms

Acknowledgments

Special thanks to @Mesabloo and @felko for support and help about implementation details.

License

This software and all associated items (assets, documentation, etc) are licensed under the GNU General Public License version 3.0 and higher.