Nat! bio photo


Senior Mull

Twitter Github Twitch

mulle-objc: a new Objective-C

mulle_objc is an Objective-C compiler based on clang, a runtime supporting that compiler and a Foundation. It quite different to what is out there already.

How to get mulle-objc

The mulle-objc community homepage has all the information to get you up and running. Check out the Release Page for a list of released packages and tools.

About mulle-objc

When I wrote the Optimizing Objective-C Article Series, Objective-C had pretty much weathered its first hostile obsolesence attempt by Java. Now a decade later, it looks like the time has come, that I have to save Objective-C - at least for myself.

I am probably off the Apple platform rather sooner than later, but I don’t really like anything else besides C and ObjC, so I need something portable which I can use anywhere I can use C. So it is written in pure C (C11).

mulle-objc goals

  • Run everywhere C runs
  • Everything Faster than Everything Else
  • No assembler code necessary
  • The runtime should be completely unloadable
  • Separate runtimes should be able to coexist (instances should not cross)
  • Should work in real time applications
  • No magic
  • No locking
  • Keep the Spirit of C which is
    • (a) Trust the programmer.
    • (b) Don’t prevent the programmer from doing what needs to be done.
    • (c) Keep the language small and simple.
    • (d) Provide only one way to do an operation.
    • (e) Make it fast, even if it is not guaranteed to be portable.
    • (f) Make support for safety and security demonstrable

These are the goals. I try to come as close to them as possible.

mulle-objc community

mulle-objc invites you to join its community.

Lets start

In the following posts, I will show some of my research results and detail some of the unique features of this new runtime.

mulle-objc will end up being open sourced (most likely in a BSD-3-style license). So… :)

Cupertino, start your copiers

  1. mulle-objc: a new Objective-C runtime
  2. mulle-objc: a meta calling convention
  3. mulle-objc: removing superflous ifs
  4. mulle-objc: inlined messaging
  5. mulle-objc: some research about selectors
  6. mulle-objc: hashes for classes, selectors and protocols
  7. mulle-objc: object layout, retain counting, finalize
  8. mulle-objc: inheriting methods from protocols
  9. mulle-objc: present and absent language features
  10. mulle-objc: the trouble with @property
  11. mulle-objc: ivar layout with @property
  12. mulle-objc: root classes and unloadable runtimes
  13. mulle-objc: method searching and accidental override protection
  14. mulle-objc: caches pivot - selectors mask - methods preload
  15. mulle-objc: divining the guts of message sending
  16. mulle-objc: investigating the pros and cons of inlining mulle_objc_object_call
  17. mulle-objc: fast methods make mulle_objc_object_call even faster
  18. mulle-objc: tagged pointers, boon or bane ?
  19. mulle_objc: technically speaking
  20. mulle-clang, technically speaking
  21. mulle-objc-runtime, technically speaking
  22. MulleFoundation, technically speaking
  1. mulle_aba

Continue to mulle-objc: a meta calling convention

Post a comment

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

E-mail: (not published)