Nat! bio photo


Senior Mull

Twitter Github Twitch

mulle-objc-runtime, technically speaking

The basis of everything is the mulle-objc-runtime. The runtime is written in C and actually doesn’t need the mulle-clang compiler.

Dependency Graph mulle-objc-runtime

Required Toolset


The dependencies are managed with mulle-bootstrap. If you clone the mulle-objc-runtime repository, mulle-bootstrap will fetch and build it’s dependencies (e.g. mulle_allocator).


git is used by mulle-bootstrap to download the dependencies.

cmake (make)

cmake is a cross-platform Makefile generator. It is used instead of autoconf because it is somewhat easier to use and is available on more platforms (Windows).


A standard C11 compiler is needed to compile mulle-thread which is the most problematic library. All other libraries should compile with pretty much any C compiler.

Required Libraries

Library Use
mulle-thread an abstraction for atomicity and thread. In most systems this is a wrapper for C11 <stdatomic.h> and <stdthread.h>
mulle-allocator an abstraction for memory management. In most cases this is a wrapper for <stdlib.h> malloc/calloc/free
mulle-concurrent concurrent (lock-free, wait-free) array and hashtable
mulle-aba memory deallocator for concurrent data structures
mulle-vararg a variable argument passing scheme in C

Porting considerations

mulle-clang is based on clang. It should be at the same version as the current clang, but minimally it is clang 3.8. clang 3.8 has support for <stdatomic.h> and <stdthreads.h> so the next thoughts should be a non-issue. (But you never know)

  1. If you don’t have <stdthreads.h>, mulle_thread can use <pthreads.h>. You may need to #ifdef this according to your platform.
  2. If you don’t have <stdatomic.h>, mulle_thread can use mintomic. This doesn’t work for ARM though.

Post a comment

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

E-mail: (not published)