mulle-objc 0.23.1 Release
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:
- Supercharge your C code with mulle-alloca
- Pervasive use of do / for blocks
- Die neue S Klasse
🎒 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.