From 6bb11ba703b4728a534920661ac1e7e9cf909edd Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sun, 17 Sep 2017 12:56:43 +0100 Subject: [PATCH] some tweaks, some links, and mention JavaScript backend (as well as PIC programming) --- Technology | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Technology b/Technology index 3fc109d..ef9a33a 100644 --- a/Technology +++ b/Technology @@ -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