Skip to content

Commit

Permalink
Issue #7: Add torokernel to comparison
Browse files Browse the repository at this point in the history
  • Loading branch information
MatiasVara committed Jan 27, 2019
1 parent 8974d85 commit 91bf2fd
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
* [GUK](https://github.com/cetic/unikernels#guk)
* [LING](https://github.com/cetic/unikernels#ling)
* [Runtime.js](https://github.com/cetic/unikernels#runtimejs)
* [ToroKernel](https://github.com/cetic/unikernels#torokernel)
* [Comparing Solutions](https://github.com/cetic/unikernels#comparing-solutions)
* [Use Case](https://github.com/cetic/unikernels#use-case)
* [Proof of Concept](https://github.com/cetic/unikernels#proof-of-concept)
Expand Down Expand Up @@ -257,6 +258,10 @@ Runtime.js is a library operating system designed to run JavaScript applications

As of October 2017, the project is no longer maintained and is not ready for production in its current state ([GitHub](https://github.com/runtimejs/runtime)).

#### [ToroKernel](http://www.torokernel.io/)

Toro is an unikernel that proposes a dedicated API to develop microservices. The main difference with other unikernels is that Toro proposes the programmer to develop the application by relying on Toro's API. Toro is made of five FreePascal units: Processes, Memory, Filesystem, Networking, and Devices. These units provide a simple interface to the user's application. For example, Processes provides the API to handle threads whereas Filesystem provides the API to allow the accessing to files. In the case of Networking, Toro proposes two models to develop microservices: blocking and non-blocking sockets. The former is for microservices that do IO and the latter for those that they can answer requests without the need of any blocking call. Non-blocking sockets are handled by relying on the single thread event loop model in which one thread is used for each microservice. This implementation allows Toro to support many concurrent connections by reducing the number of context switches. In Toro, the kernel and the microservices are compiled together which results in an image that can be deployed in a cloud provider. For more information about the project, please see at [GitHub](https://github.com/MatiasVara/torokernel).

### Comparing Solutions

Out of the various existing projects, some standout due to their wide range of supported languages. Out of the active projects, the following table resumes the language they support, the hypervisors they can run on and remarks concerning their functionality.
Expand All @@ -270,6 +275,7 @@ Out of the various existing projects, some standout due to their wide range of s
| OSv | Java, C, C++, Node, Ruby | VirtualBox, ESXi, KVM, Amazon EC2, Google Cloud | Cloud and IoT (ARM) |
| Rumprun | C, C++, Erlan, Go, Java, JavaScript, Node.js, Python, Ruby, Rust | Xen, KVM | |
| Unik | Go, Node.js, Java, C, C++, Python, OCaml | VirtualBox, ESXi, KVM, XEN, Amazon EC2, Google Cloud, OpenStack, PhotonController | Unikernel compiler toolbox with orchestration possible through Kubernetes and Cloud Foundry |
| ToroKernel| FreePascal | VirtualBox, KVM, XEN, HyperV | Unikernel dedicated to run microservices |

## Use Case

Expand Down

0 comments on commit 91bf2fd

Please sign in to comment.