Nuxi The CloudABI Development Blog

Posts

Running a sandboxed copy of memcached

March 15, 2017 by Ed Schouten

Over the last year we’ve managed to port a fair number of interesting pieces of software to CloudABI. Last month we published an article on how we ported LevelDB. Two weeks later, Bitcoin developer Wladimir van der Laan amazed us by publishing an insightful article on his blog, sharing his personal experiences porting Bitcoin Core. In today’s article, let’s take a look at a piece of software that got ported to CloudABI quite some time ago, but didn’t get a lot of attention yet: memcached.

Continue reading...

Argdata: a binary serialisation format

March 10, 2017 by Ed Schouten

You may remember from the demoes presented in our previous blog posts that most CloudABI applications start up through a function called program_main(), and that this function has a single argument of type const argdata_t *. This differs from traditional C programs, which start through main(), receiving a list of string command line arguments. In today’s blog post, let’s discuss in a bit more detail what CloudABI’s argdata_t type is and what it tries to solve.

Continue reading...

Porting LevelDB to CloudABI

February 18, 2017 by Ed Schouten

Two weeks ago I gave two talks at FOSDEM: one where I gave a general overview of the CloudABI project and one where I discussed how CloudABI works on FreeBSD. Though I think that both talks give a good insight in the project, there are always topics that didn’t make the cut, due to time on stage being limited.

Today we’re going to cover one of such topics, namely how one goes about porting a piece of software to CloudABI. Though there is no universal recipe for this, let’s take a look at the steps I have made to port LevelDB. This will give us technical insight in both the workings of CloudABI and LevelDB.

Continue reading...

CloudABI for ARMv6: running a sandboxed web server

December 7, 2016 by Ed Schouten

About two months ago we published an article on this blog to announce the availability of CloudABI for ARMv6. As you may recall, we mentioned that although CloudABI’s C library and runtime had been ported to ARMv6 successfully, we were still blocked on some features that didn’t make it into the 3.9 release of LLD, such as support for thread-local storage.

We’re happy to report that the latest development version of LLD now has these missing features implemented, meaning that it can now be used to create usable CloudABI programs for ARMv6.

In today’s article, let’s briefly take a look at how CloudABI for ARMv6 works in practice, by building a sandboxed web server written in C and running it on ARMv6 hardware.

Continue reading...

CloudABI for 32-bit architectures

October 4, 2016 by Ed Schouten

When CloudABI was initially released back in March 2015, we only provided support for using it on x86-64 (modern Intel/AMD) systems. Support for a second architecture, ARM64, was added soon after in July 2015. Today we are glad to announce that CloudABI is now available for two more architectures, bringing the total to four!

Continue reading...

Welcoming all Python enthusiasts: CPython 3.6 for CloudABI!

August 1, 2016 by Ed Schouten

Late last year, I gave a talk about CloudABI at 32C3 in Hamburg. Not long after the conference, I was contacted by Alex Willmer. Being a Python enthusiast, Alex told me he wanted to help me complete the port of CPython to CloudABI. Thanks to his work, we now have initial support for running Python scripts in a strongly sandboxed, yet easy to understand environment. In addition to that, he helped me spread the word by giving a talk about CloudABI at EuroPython. In today’s article, let’s take a look at how Python for CloudABI works!

Continue reading...

An embedded implementation of the C time conversion functions

June 29, 2016 by Ed Schouten

During my talk about CloudABI at BSDCan in 2015, I mentioned that CloudABI’s C library ships with a custom implementation of the C time conversion functions. As I only had the time to discuss this briefly, I thought it would be interesting to publish an article on how these functions work on most UNIX-like systems and what makes CloudABI’s implementation different.

Continue reading...

CloudABI's POSIX threads support: hierarchical futexes

June 22, 2016 by Ed Schouten

It goes without saying that CloudABI supports running multi-threaded code. Like most UNIX-like systems out there, CloudABI implements the POSIX threads API, or pthreads for short. In today’s article, let’s focus on a single, yet crucial aspect of this API, namely synchronisation primitives (e.g., mutexes).

In this article we will discuss how the synchronisation primitives provided by the POSIX threads API are implemented on operating systems like Linux and FreeBSD. Later on we’ll see how CloudABI implements these and how that differs from other systems, making use of something that I call hierarchical futexes. Let’s start off with an overview of the POSIX threads API.

Continue reading...

CloudABI for Mac OS X, part three: thread-local storage

May 10, 2016 by Ed Schouten

Welcome back to the last article of our three-part series on how we managed to port CloudABI over to Mac OS X. Today I’m going to discuss how thread-local storage (TLS) works. I’ll describe how it works on ELF-based systems in general, followed by explaining how CloudABI executables and the emulator for Mac OS X implement this. But first, a short history lesson.

Continue reading...

CloudABI for Fedora and openSUSE: reproducible builds

May 7, 2016 by Ed Schouten

Instead of publishing the last article of our series on how CloudABI works on Mac OS X, I decided to use this week’s blog post to announce the availability of CloudABI for Fedora and openSUSE! In today’s article I will be discussing a single aspect of these ports, namely how we generate packages (RPMs) for these systems deterministically.

Continue reading...

CloudABI for Mac OS X, part two: efficiently emulating system calls

April 28, 2016 by Ed Schouten

Welcome back to the second article of my three-part series on how we managed to port CloudABI over to Mac OS X. In the first blog post we looked at how the emulator is capable of loading Position Independent Executables into memory and start their execution. Today we’re going to look at a different aspect of emulation, namely how the emulator can efficiently capture system calls that are performed by the program.

Continue reading...

CloudABI for Mac OS X, part one: Position Independent Executables

April 21, 2016 by Ed Schouten

Given that a lot of interesting things are happening with CloudABI’s development lately, I thought I’d finally set up a blog. That way I can publish some articles once every so often, some of them being very technical, others hopefully a bit less. Today I’m starting off with the first of a three-part series on how we managed to port CloudABI over to Mac OS X. Enjoy!

Continue reading...

Subscribe via RSS