Plasma GitLab Archive
Projects Blog Knowledge


Blog Articles

WasiCaml: Translate OCaml Code to WebAssembly

The portability story behind WasiCaml

For a recent project we wrote a compiler that translates a domain-specific language (DSL) to some runnable form, and we did that in OCaml. The DSL is now part of an Electron-based integrated development environment (IDE) that will soon be available from Remix Labs. Electron runs on a couple of operating ... (read more)

OMake On Steroids (Part 3)

Faster builds with omake, part 3: Caches

In this (last) part of the series we have a closer look at how OMake uses caches, and what could be improved in this field. Remember that we saw in total double speed for large OMake projects, and that we also could reduce the time for incremental builds. In particular for ... (read more)

OMake On Steroids (Part 2)

Faster builds with omake, part 2: Linux

The Linux version of OMake suffered from specific problems, and it is worth looking at these in detail. (read more)

OMake On Steroids (Part 1)

Faster builds with omake, part 1: Overview

In the 2014 edition of the "which is the best build system for OCaml" debate the OMake utility was heavily criticized for being not scalable enough. Some quick tests showed that there was in deed a problem. At LexiFi, the size of the source tree obviously already exceeded the critical point, ... (read more)

Immutable strings in OCaml-4.02

Why the concept is not good enough

In the upcoming release 4.02 of the OCaml programming language, the type string can be made immutable by a compiler switch. Although this won't be the default yet, this should be seen as the announcement of a quite disruptive change in the language. Eventually this will be the default in a ... (read more)

Welcome IPv6 now connected

For two weeks the website is fully connected to IPv6. (read more)

GODI is shutting down


Unfortunately, it is no longer possible for me to run the GODI distribution. GODI will not upgrade to OCaml 4.01 once it is out, and it will shut down the public service in the course of September 2013. (read more)

Plasma Map/Reduce Slightly Faster Than Hadoop

A performance test

Last week I spent some time running map/reduce jobs on Amazon EC2. In particular, I compared the performance of Plasma, my own map/reduce implementation, with Hadoop. I just wanted to know how much my implementation was behind the most popular map/reduce framework. However, the suprise was that Plasma turned out as ... (read more)

After NoSQL there will be NoServer

An experiment, and a vision

The recent success of NoSQL technologies has not only to do with the fact that it is taken advantage of distribution and replication, but even more with the "middleware effect" that these features became relatively easy to use. Now it is no longer required to be an expert for these cluster ... (read more)


A serious distributed filesystem

A few days ago, I released Plasma-0.4.1. This article gives an overview over the filesystem subsystem of it, which is actually the more important part. PlasmaFS differs in many points from popular distributed filesystems like HDFS. This starts from the beginning with the requirements analysis. A distributed filesystem (DFS) allows it ... (read more)


Gerd Stolpmann is looking for new Ocaml projects

Finally my job at Mylife ended. After all, it was a great success, and it used Ocaml as implementation language. The question is now: What is the next challenge? (read more)

GODI upgrades to Ocaml-3.12.1

Web site is also redesigned

The GODI project just updated the release line for Ocaml-3.12 which bases now on version 3.12.1. We have done extensive tests, and found only some minor incompatibilities for ocamlbuild (which is a bit pickier now and chokes sometimes when it sees extra files it does not know about). These could be ... (read more) gets a shared cache

Ocaml and multicore programming

The website (where this is blog is published) is running a special server software written in Ocaml. Recently I made it faster by introducing a cache that is directly shared by several worker processes. The cache module consists only of a few lines of code, and makes use of the ... (read more)

Netmulticore and the n-queens puzzle

Ocaml and multicore programming

The n-queens puzzle is a well-known toy problem in computer science that can serve as a benchmark for a class of problems where possible solutions are systematically enumerated and then tested whether they fulfill all required properties. Here we show how to speed the algorithm up for multi-core CPU's using the ... (read more)

Test release of Netmulticore

Ocaml and multicore programming

Who wants to check out Netmulticore can do this now: There is a test release of Ocamlnet containing Netmulticore. There is also a new extensive tutorial explaining all in detail. (read more)

Netmulticore works!

Ocaml and multicore programming

Netmulticore is my attempt at solving the multicore puzzle for Ocaml. It has reached now a development stage so that I can run test programs, and I see real speedups. Although not everything is perfect yet, the API has stabilized a bit, and it is close to being ready for broader ... (read more)

Why Map/Reduce matters

It is time for functional programming

Recently, Map/Reduce got a lot of attention in the media. Of course, this has nothing to do with the fact that it is functional programming, but more with the company that has invented it (Google). However, there is hope that some of the curiosity of the public can be diverted to ... (read more)

Ocamlnet 3 finally released

What's new in Ocamlnet 3

So, finally it is there: Ocamlnet 3.0.0. After almost 3 years of development, many parts of Ocamlnet have been touched and extended while keeping most of the existing APIs. It is not immediately visible what the striking new features are, so a bit of explanation is necessary. (read more)

Plasma build simplified

Plasma MapReduce and PlasmaFS

There is now a script that simplifies the Plasma build: It just bootstraps GODI and puts a complete file tree into /opt/plasma - including ocaml and all required libraries. (read more)

Plasma: Map/Reduce for Ocaml

Plasma MapReduce and PlasmaFS

I'm very proud to announce the public availability of Plasma MapReduce, a map/reduce compute framework, and PlasmaFS, the underlying distributed filesystem. All of this is written in Ocaml and makes it now possible to develop map/reduce programs in a functional programming language. (read more)

Cluster Computing at

Slides of the talk in Paris

For anybody who is interested, here are the slides of the talk I gave in Paris yesterday. (read more)


Second testing version

A second testing version of Ocamlnet 3 has been released: Ocamlnet-3.0test2. (read more)

Mastering Multi-processing

What's new in Ocamlnet 3: Synchronization primitives in Netplex

Ocamlnet is being renovated, and there is already a first testing version of Ocamlnet 3. The author, Gerd Stolpmann, explains in a series of articles what is new, and why Ocamlnet is the best networking platform ever seen. When it comes to parallelism, many people react skeptical on multi-processing - mostly ... (read more)


First testing version

A first testing version of Ocamlnet 3 has been released: Ocamlnet-3.0test1. (read more)

The next server, please!

What's new in Ocamlnet 3: Highly-available RPC

Ocamlnet is being renovated, and there will be soon a first testing version of Ocamlnet 3. The author, Gerd Stolpmann, explains in a series of articles what is new, and why Ocamlnet is the best networking platform ever seen. Experience with Hydro, another RPC implementation for Ocaml using the ICE protocol, ... (read more)

Stranger in a strange land

What's new in Ocamlnet 3: The Win32 port

Ocamlnet is being renovated, and there will be soon a first testing version of Ocamlnet 3. The author, Gerd Stolpmann, explains in a series of articles what is new, and why Ocamlnet is the best networking platform ever seen. One of the fundamental and intriguing improvements is the port to Win32 ... (read more)

Documentation fun

PXP-1.2.1 with a new reference manual

The last release of a stable PXP version happened 5 years ago. That's a long time. Actually, a lot of devlopment took place since then, only that it was difficult to bring PXP into a releasable shape. Now the last missing piece has been added, namely extensive documentation. So I can ... (read more)

Parallelizing with Ocamlnet

A scalable implementation of matrix multiplications in O'Caml

O'Caml seems not be recognized as a programming language where it is easy to parallelize tasks. Recently, there was a heated discussion on caml-list about this subject, and people complained that the memory management of O'Caml does not work well for multi-threaded programs. Actually, the memory manager enforces that only one ... (read more)

About LambdaRank

The ranking algorithm behind GODI Search

The question has always been: Are the results better if a search engine really understands the text it indexes? You can view my latest project, GODI Search, as an attempt to answer this question for a very limited set of documents, namely the code and its documentation of GODI, the source ... (read more)

Cross-Language Cluster Computing

The Story Behind Hydro

On the surface a search engine looks like a very simple web site, but actually most things happen in the backend, and are hidden from the user. A search engine consists of 10 to 20 different types of servers, and many of them are instantiated several times in a cluster configuration. ... (read more)

Mixing Apples And Pears

Using Polymorphic Variants

It is one of the coolest language constructs, but its conception leads sometimes to confusion. O'Caml allows it to form ad-hoc unions of tagged values, the so-called polymorphic variants. They are the free-style counterpart of the "normal" variant types. We want to shed some light on this construction in this article, ... (read more)

This web site is published by Informatikb├╝ro Gerd Stolpmann
Powered by Caml