homepage-data/Technology
2017-09-16 16:49:37 +01:00

51 lines
2.3 KiB
Text

---
title: Technology behind robur
author: someone
abstract: some abstract
---
We develop digital infrastructure with a small footprint. This is in stark
contrast with other approaches that try to patch general purpose operating
systems by adding more layers of indirection.
Each piece of digital infrastructure (or service) is (a) written in a high-level
memory-safe programming language and (b) specialised to only contain the
required functionality at compilation time. This (a) reduces the attack vectors
and (b) drastically reduces the attack surface.
The resulting service is executed as a virtual machine on any modern hypervisor.
Its size is usually two orders of magnitude smaller (ranging from kilobytes to
16 megabytes) than a UNIX, it boots within milliseconds.
As programming language we use [OCaml](https://ocaml.org), a multi-paradigm
programming language, which unifies functional, imperative, and object-oriented
programming. OCaml has an expressive static type system, and type inference. A
developer can specify complex invariants in the type system, which are
checked at compile time, and violations are caught early.
We discuss more reasons why we use OCaml [further down](#Why-OCaml).
## MirageOS
[MirageOS](https://mirage.io) started as a research project at the University
of Cambridge in 2009.
## Why OCaml
OCaml code can be very fast (our TLS implementation reaches up to
85% of the throughput of OpenSSL), and compiles either to native code on various
architectures or to bytecode. It can even compile to JavaScript. OCaml is
memory managed, individual developers don't have to manually allocate and
release memory (which is a common source of security issues in other operating
systems).
In 2016, Facebook developed [reason](https://reasonml.github.io/), a dialect of
OCaml which syntax is closer to JavaScript, and easier to comprehend for
beginners. Reason and OCaml code can be easily combined in a single
application, since the same compiler is used.
Links:
- [OCaml for the masses](http://queue.acm.org/detail.cfm?id=2038036)
- [Why OCaml (from realworldocaml)](https://realworldocaml.org/v1/en/html/prologue.html)
- [Replacing Python with OCaml in 0install](http://roscidus.com/blog/blog/2013/06/09/choosing-a-python-replacement-for-0install/)
- [Why tezos uses OCaml](https://www.tezos.com/static/papers/position_paper.pdf)