Nat! bio photo

Nat!

Senior Mull

Twitter Github Twitch

mulle-objc 0.23.1 Release

mulle-objc logo and link to homepage
mulle-objc project homepage

How to update

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

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

mulle-sde -f clean cache

Then upgrade each project and rebuild:

mulle-sde upgrade
mulle-sde craft -g

Important changes for existing projects

There have been some API changes and changes of conventions to be aware of.

Move mulle-testallocator dependencies below mulle-core

In your tests and wherever you use the mulle-testallocator in conjunction with the mulle-core library, you have to have an entry in the sourcetree for mulle-core before mulle-testallocator. Either by explicitly adding and moving it there, or by virtue of another dependency doing it. As an example, if your test dependencies look like this:

#  address              supermarks           aliases  include
-  -------              ----------           -------  -------
0  mulle-testallocator  C,LinkForce
1  MulleObjC-startup    ObjC,Serial,Startup
2  MulleThread          ObjC

then move mulle-testallocator to position 1 or 2, since both of these projects will depend on the mulle-objc-runtime, which in turn depends on mulle-core. (mulle-sde dep move 0 to 1)

Avoid doubling of mulle-core

(like anything that is based on mulle-objc-runtime).

What doesn’t work currently is “doubling” what’s in mulle-core. So if you have done mulle-sde add github:mulle-c/mulle-core, you can not add a constituent library like mulle-sde add github:mulle-c/mulle-allocator, as the cmake reflection will still try to locate -lmulle-allocator. This will be fixed though, hopefully in the next release.

Generated identifiers for C code have changed

The way install shield identifiers and version numbers as well as sourcetree macro names are generated has changed again. A file named ‘mulle-c11.h’ used to have #ifndef mulle_c_h__ but now has #ifndef mulle__c_h__. This was necessary, to be able to distinguish projects named “mulle-thread” against “MulleThread”. If naming projects like that is good practice is questionable though, so maybe the “Mulle” prefix for Objective-C might fall to the wayside and something else will be used…

mulle-sde run is now a different command

This may affect existing scripts, where you have to replace run with exec.

What’s new ?

Some of the highlights of this new release are described in separate articles, to keep this blog entry compact:

🎒 MulleWeb

mulle-scion got the “S Klasse” treatment.

👑 MulleFoundation

There is now regular expression and wildcards support for NSString.

The thread class used by MulleInvocationQueue has been split off into a separate project MulleThread.

🤠 mulle-core

There is a new developer in town and the name is mulle-core. If you are writing pure C code, make this your go-to library. You won’t be able to live with out it, once you have used it.

mulle-sde init -d demo -m mulle-core/c-developer executable

🧢 mulle-c

There are a few new libraries. mulle-regex, mulle-rbtree, mulle-storage, mulle-linkedlist.

mulle-container has undergone once again a large expansion and saw some rewriting, all to make everything more orthogonal. If you learned one of the data-structures, the other should be as similar as possible. With do/for macros, mulle-container data structures are now convenient and concise in day to day usage, but remain as expressive and tweakable as they were before.

💠 mulle-sde

mulle-fetch has the breaking change, that the “run” command is now called “exec”, and “run” now executes the “product” (i.e. the executable).

mulle-sde init has now some dialog options, which make this command easier and faster to use, since you don’t have to memorize -m mulle-foundation/c-developer any more. mulle-sde extension add also has a dialog option for convenience. More commands might get this treatment in the future.

mulle-fetch and mulle-domain are now even better at understanding convenience dependency specifiers like github:mulle-c/mulle-container.zip@latest or zlib:mulle-core/mulle-core.

There is a new project mulle-menu, which is a nice way for the user to make a choice from a menu of options.

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.

Changes for 0.23.1

RELEASENOTES Version Last Release
mulle-core-developer 0.0.1 -
mulle-domain 1.5.0 1.4.0
mulle-env 5.2.0 5.1.0
mulle-fetch 4.0.0 3.2.1
mulle-sde-developer 0.27.0 0.26.0
mulle-sde 3.0.0 2.4.0

Changes for 0.23.0

RELEASENOTES Version Last Release
foundation-developer 0.22.0 0.21.0
mulle-allocator 6.0.0 5.0.1
MulleBashStringExpansion 0.0.1 -
mulle-buffer 3.5.0 3.4.0
mulle-c11 4.4.0 4.3.0
mulle-container 8.0.0 7.0.0
mulle-core 0.2.0 0.1.0
MulleFoundationBase 0.23.0 0.22.0
mulle-linkedlist 0.0.2 -
mulle-objc-developer 0.26.0 0.25.0
MulleObjCRegexFoundation 0.20.5 -
mulle-rbtree 0.0.1 -
mulle-regex 0.0.1 -
mulle-sprintf 3.1.0 3.0.0
mulle-storage 0.0.1 -
MulleThread 0.0.1 -
mulle-utf 4.0.0 3.1.3

Cosmopolitan is still stale, but not much longer

Cosmopolitan building on the fly is still prohibitive, but its probably easily fixable. But not yet in this release.


Post a comment

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

Name:
E-mail: (not published)
Website: