Nat! bio photo


Senior Mull

Twitter Github Twitch

mulle-objc 0.22 Release


How to update

Follow the instructions in foundation-developer to install a new development environment.

To update an existing mulle-objc project, you should clean the (global) archive and mirror cache.

mulle-sde -f clean archive
mulle-sde -f clean mirror

Then upgrade each project and rebuild:

mulle-sde -f clean gravetidy
mulle-sde upgrade
mulle-sde craft

This should give you no trouble.

What’s new ?

As the Foundation stabilizes, the amount of changes to the core mulle-objc system is not very large. Which is a positive. So maybe the most exciting aspect of this release is the…

New Documentation

To ease the first steps into the mulle-objc work, I wrote two small pamphlets or guides on how to get started with mulle-objc Development with IDEs:

mulle-objc Development with IDE

and how to profit from using mulle-sde in De Re mulle-sde:

De Re mulle-sde

These are quick reads, so anyone can get going fast and he/she gets a grasp onto what is going on.

Next year I would like to rework the developer guide. I envision a reorganization into multiple pamphlets, like: intro the language, intro to the runtime, intro the MulleObjC.

New C library support

The last release saw the addition of musl to the list of supported C libraries. musl allows the production of statically linked mulle-objc executables, that can be run on pretty much any Linux installation just by copying the executable there. cosmopolitan takes this one step further and makes it possible to create executables, that run on macOS, FreeBSD and Linux by just copying the executable there. mulle-markdown showcases executable builds with glibc, cosmopolitan, musl.

New Libaries


This is a class related to NSOperationQueue, but is somewhat more low-level. You don’t queue NSOperations, you put in NSInvocations. Also there is a defined worker thread, that executes the queue in the background. So invocations are executed in a serial manner.


This implements the NSUUID class with the help of the uuid4 library.


This library combines a malloc library with shared memory allocation as a more fine grained mechanism to share data between processes. It’s still experimental.

Improved mulle-sde tooling

Inherited definitions

As the project scope broadens, the mulle-sde toolset needs to cope with projects that may be built against different C libraries. To support mulitple C libraries and their possibly different C compilers, mulle-craft had to be reworked. See De Re mulle-sde : definition separator for a quick intro about inherited definitions.

mulle-bash replaces lots of script code

All the various mulle-sde scripts are now more readable, because I could externalize a lot of boilerplate code. Any mulle-bashfunctions script - which is the shell script library of mulle-sde - now starts with #! /usr/bin/env mulle-bash. This loads mulle-bashfunctions, possibly changes the shell execution environment to zsh or bash and then executes the script.

mulle-make rework

mulle-make has been partially rewritten, to make it somewhat easier to read. mulle-make now uses cmake exclusively for compilation of cmake projects. It used to divide this task up to cmake and make/ninja. But that is just not necessary anymore. Specify the generator you want to use with the -DCMAKE_GENERATOR=ninja for example.

What’s not new ?

Windows support

I wanted to write complete Windows support for the Foundation for this release, but I didn’t have the time. Since I am rarely on Windows, there was not enough of a natural impetus to do it.


There was too much work on the fundamental parts of MulleUI, that I could not get a usable enough widget set together for a release. I feel, that the first release of MulleUI must be good enough, that it is instantly usable to create cross-platform applications. That’s still a bit off.

Release Notes

This is the list of release notes of the various projects. Enjoy the read :) Projects with only a small bug fix have been omitted for brevity.


The most interesting changes are the additions of MulleObjCUUIDFoundation and MulleInvocationQueue. Otherwise some code moved from MulleObjCContainerFoundation to MulleObjC. Overall not a lot has changed here.

RELEASENOTES Version mulle-objc 0.21 version
MulleObjCLockFoundation 0.21.0 0.20.1
MulleObjCTimeFoundation 0.1.0 0.0.3
MulleObjCUUIDFoundation 0.0.1 -
MulleObjCContainerFoundation 0.21.0 0.20.1
MulleInvocationQueue 0.0.1 -
mulle-foundation-developer 0.22.0 0.21.0
foundation-developer 0.20.1 0.20.0


mulle-markdown is now not just a showcase for the use of musl with mulle-objc, but also for the use of cosmopolitan with mulle-objc. MulleCurl has an improvement with the way it handles return codes. Otherwise there have been no real changes to MulleWeb.

RELEASENOTES Version mulle-objc 0.21 version
MulleCurl 0.18.0 0.17.5
mulle-markdown 0.1.0 0.0.1


MulleObjC gained some cool features. The actual runtime is pretty much unchanged and its “+load” version remains as it was before.

RELEASENOTES Version mulle-objc 0.21 version
mulle-objc-runtime 0.22.0 0.21.0
MulleObjC 0.22.0 0.21.0
mulle-objc-developer 0.24.0 0.23.0


The mulle-clang compiler has two bug fixes. There is now not only support for musl but also for cosmopolitan. Some old repositories died, and new repositories sprang to life.

RELEASENOTES Version mulle-objc 0.21 version
mulle-cosmopolitan 0.0.1 -
mulle-cosmopolitan-cc 0.0.1 -
mulle-musl-cc 0.1.0 -
mulle-objc-cc 0.1.0 -


mulle-dlmalloc and mulle-mmapallocator are new additions. They are somewhat experimental. Due to changes in mulle-alloctor mulle-testallocator has also been affected in an incompatible way.

RELEASENOTES Version mulle-objc 0.21 version
mulle-dlmalloc 0.0.1 -
mulle-mmap 0.2.0 0.1.2
mulle-mmapallocator 0.0.1 -
mulle-sprintf 2.2.0 2.1.0
mulle-testallocator 5.0.0 4.2.5
mulle-time 1.1.0 1.0.0


Due to changes in mulle-alloctor, mulle-aba freeing API was affected.

RELEASENOTES Version mulle-objc 0.21 version
mulle-aba 3.0.0 2.0.23
mulle-fifo 0.1.0 0.0.3
mulle-thread 4.5.0 4.4.1


mulle-musl-gcc has moved to mulle-cc/mulle-musl-cc and is really quite different now.

RELEASENOTES Version mulle-objc 0.21 version
mulle-allocator 5.0.0 4.2.5
mulle-data 0.2.0 0.1.0
mulle-buffer 3.3.0 3.2.0
mulle-container 6.1.0 6.0.0
mulle-c-developer 0.15.0 0.14.0


mulle-env has now proper scope loading for additional scope a long standing bug fix.

RELEASENOTES Version mulle-objc 0.21 version
mulle-craft 3.0.0 2.0.0
mulle-dispense 3.2.0 3.1.0
mulle-env 4.2.0 4.1.0
mulle-make 3.0.0 1.1.1
mulle-sde-developer 0.25.0 0.24.0
mulle-sde 2.0.0 1.1.3
mulle-sourcetree 1.2.0 1.1.0
mulle-test 6.2.0 6.1.0


mulle-bashfunctions has some removed API, which made a major change necessary. The way to create mulle-bashfunctions scripts has been greatly simplified.

RELEASENOTES Version mulle-objc 0.21 version
mulle-bashfunctions 5.0.0 4.1.0

Post a comment

All comments are held for moderation; basic HTML formatting accepted.

E-mail: (not published)