some tweaks, some links, and mention JavaScript backend (as well as PIC programming)

This commit is contained in:
Hannes Mehnert 2017-09-17 12:56:43 +01:00
parent 816a7d3be3
commit 6bb11ba703

View file

@ -106,8 +106,8 @@ to a virtual machine using Linux and OpenSSL, measured in thousands of lines of
If a security flaw is discovered in a library, and there is a security update,
all unikernels depending on this library need to be updated as well.
This can be done with the OCaml package manager.
It resolves dependencies and lets authors sign their releases,
This can be done with the [OCaml package manager](https://opam.ocaml.org).
It resolves dependencies and lets [authors sign their releases](https://github.com/hannesm/conex),
so there is no need for a central package repository server.
Central repository servers are known targets for attackers and have been breached in the past, amongst them
@ -126,10 +126,9 @@ This style allows us to reason about the possible states of a system.
### Performance
OCaml code compiles to native code running in the OCaml runtime, which is
as performant as compiled C++ code. The OCaml runtime is just used for
memory management, and very small compared to a JVM or Python runtime. As
an example, our TLS library has up to 85% of the bulk throughput of OpenSSL (using
OCaml code compiles to native code, which is
as performant as compiled C++ code. As
an example, our [TLS library](https://usenix15.nqsb.io) has up to 85% of the bulk throughput of OpenSSL (using
AES128-CBC). The TLS handshake performance is comparable with OpenSSL.
### Dependency management
@ -166,6 +165,11 @@ OCaml is a mature programming language that is used both in
industry (Facebook, Jane Street Capital, Docker, ahrefs,
simcorp, lexifi) and academia.
The OCaml compiler generates native code for x86, arm, etc., and has a bytecode
backend, which can target microcontrollers (PIC18 family in the [OcaPIC project](http://www.algo-prog.info/ocapic/web/?id=OCAPIC:OCAPIC)).
OCaml can also be compiled to JavaScript, which allow to develop both client
and server side of a web application in a single language (more details at the [ocsigen project](http://ocsigen.org/)).
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