mulle-objc 0.28 Release
The Windows Release
In terms of new features this is a huge release. The three main themes of this release are majorly improved Windows (cross) development support and the compiler has been improved greatly with Objective-C to C transpilation and support for mulle-objc language extensions.
0.28 is a major release. The compiler is no longer compatible with runtime version 0.27 due to a bump in the load version to 19.
What’s new ?
- Full windows support - Everything compiles AND all test pass on WIN32/64 now!
- Cross compile on linux with mulle-clang-mingw and test using wine
- Finally! Compiler support for
@protocolclass - New
@method_implementationObjective-C language feature for method aliasing - New
__attribute__(( mulle_confined_loop))to support scoped resources in C - Experimental mulle-objc to C transpiler support produces platform dependent and independent C code from Objective-C with
--mulle-objc-emit-c - A tree-sitter grammar for mulle-objc
- MulleScion now has proper operator precedence
- Better dependency checking and error messages in the debug runtime
- MetaABI change! Small structs are passed by value, but floating point is always passed by reference
- MetaABI arguments are now copied by the compiler to local variables for easier debugging
- MulleObjCLoader renamed to MulleObjCDeps for less AI confusion
- Improved mulle-gdb debugger step in and step through
- Revised mulle-sde tooling for cross-platform testing (linux->windows->wine)
- Lots of fixes
How to update
Follow the instructions in foundation-developer to install a new development environment.
To update an existing project of yours, you should clean the (global) archive and mirror cache.
mulle-sde -f clean cache
Then upgrade each of your project and rebuild:
mulle-sde upgrade
mulle-sde recraft
mulle-c — Improvements and Changes
mulle-allocator 8.0.0
- Export
mulle_allocator_is_stdlib_allocatorprobe so code can reliably detect the stdlib allocator - Alloca-family macros rationalised to use
MULLE_C_TYPE_OF, confined return/loop helpers, andmulle_calloca_do_extractalias for consistent semantics
mulle-buffer 5.1.0
- New
mulle_buffer_add_chars()convenience API for appending char arrays - Buffer/flushablebuffer macros confined for safer macro scoping
mulle-utf 5.2.0
- Expose
mulle_char5_lookup_tableas a public symbol for direct table-driven encoding/decoding - Add
mulle_utf32_as_utf16helpers including surrogate-pair handling
mulle-regex 0.1.0
- Export UTF32 regex API symbols with proper visibility macros so the surface links cleanly
| RELEASENOTES | Version | Last Release |
|---|---|---|
| mulle-c11 | 4.8.0 | 4.7.0 |
| mulle-allocator | 8.0.0 | 7.1.0 |
| mulle-buffer | 5.1.0 | 5.0.2 |
| mulle-regex | 0.1.0 | 0.0.5 |
| mulle-slug | 0.1.0 | 0.0.5 |
| mulle-utf | 5.2.0 | 5.1.0 |
mulle-core — Improvements and Changes
mulle-mmap 1.0.0 is a major milestone: add ability to map existing shared-memory
regions with optional fixed address mapping (preserves allocator/pointer layouts),
clear POSIX FD_CLOEXEC on shm_open fds so shared-memory fds survive exec() across
glibc versions, and Windows now supports inheritable shared page allocations with
documented fork/CreateProcess semantics. Breaking: on Windows, include order now
requires mulle-c11-bool.h before <windows.h>.
mulle-mmapallocator 0.2.0 adds attach API so an allocator maps onto existing shared-memory handles, records platform shared handles and frees them on cleanup, enables spin-lock locking for shared mspaces, and provides a hex-dump helper for debugging mspace allocation patterns. Breaking: struct layout changed (added shared_handle).
mulle-sprintf 4.0.0 standardises %c/%C and %s/%S UTF conversion across
platforms: %C and %lC consistently use UTF-32, %S and %lS consistently use
UTF-32; %c and %s default to char/UTF-8 with modifiers selecting variants. Fixes
Windows quirks (printf %p/%ls/%f formatting). Breaking: %S now takes utf32_t * by
default and %lS takes wchar_t * on most platforms.
Other mulle-core updates
| RELEASENOTES | Version | Last Release |
|---|---|---|
| mulle-thread | 4.8.0 | 4.7.0 |
| mulle-atexit | 0.1.0 | 0.0.17 |
| mulle-atinit | 0.3.0 | 0.2.0 |
| mulle-dlfcn | 0.1.0 | 0.0.16 |
| mulle-stacktrace | 0.5.0 | 0.4.0 |
| mulle-testallocator | 6.1.0 | 6.0.0 |
| mulle-dlmalloc | 0.1.0 | 0.0.6 |
| mulle-time | 1.3.0 | 1.2.2 |
| mulle-core | 0.8.0 | 0.7.0 |
| mulle-mmap | 1.0.0 | 0.2.6 |
| mulle-mmapallocator | 0.2.0 | 0.1.2 |
| mulle-sprintf | 4.0.0 | 3.3.0 |
| mulle-core-all-load | 0.8.0 | ??? |
mulle-concurrent — Improvements and Changes
mulle-concurrent 3.1.0
- Include macro
MULLE__CONCURRENT_GLOBALnow defined whenMULLE__CORE_BUILDis set for correct symbol visibility
| RELEASENOTES | Version | Last Release |
|---|---|---|
| mulle-concurrent | 3.1.0 | 3.0.1 |
mulle-objc: Runtime & Core Language
mulle-objc-runtime 0.28.0 enforces category +dependencies: the runtime now validates
that categories overriding existing methods declare +dependencies and list the overridden
category; missing or incorrect declarations produce clear errors and mark the universe
inconsistent. Adds public mulle-metaabi-call.h for meta-ABI call helpers and extensive
compiler/runtime tests. Bumps MULLE_OBJC_RUNTIME_LOAD_VERSION to 19 (requires mulle-clang
21.1.8.7+). Windows runtime gained lazy sibling-DLL loading for missing class/method lookups
and callbacks for tagged-pointer class resolution via DLL loader. Breaking: callback wiring
changed and cache field renamed from thread to thread_id.
MulleObjC 0.28.0 exports new runtime helpers to create property accessor methods
dynamically, enabling on-the-fly accessor generation. Replaces MulleObjCLoader with
MulleObjCDeps for declaring +load dependencies (breaking). Exports memory/ivar describe
helpers for external introspection tooling. DEBUG builds now abort early with a clear error
if %@ is used without a loaded string class. Thread-affine objects now compare thread IDs
for TAO access checks.
| RELEASENOTES | Version | Last Release |
|---|---|---|
| mulle-objc-runtime | 0.28.0 | 0.27.0 |
| MulleObjC | 0.28.0 | 0.27.0 |
| mulle-objc-runtime-startup | 0.21.0 | 0.20.7 |
| mulle-objc-debug | 0.24.0 | 0.23.0 |
| mulle-objc-list | 0.23.0 | 0.22.2 |
| MulleObjC-startup | 0.21.0 | 0.20.7 |
MulleFoundation — Improvements and Changes
The Foundation ecosystem standardised on centralised dependency declarations via
MulleObjCDeps categories, replacing the scattered MulleObjCLoader pattern.
MulleObjCContainerFoundation 0.25.0
- Add concise ‘:’ and zero-cost selector aliases mapping to
-objectAtIndex:(NSArray) and-objectForKey:(NSDictionary) with the new @method_implementation directive - Expose container class globals via
MULLE_OBJC_CONTAINER_FOUNDATION_GLOBAL_VAR
MulleFoundation 0.23.0
- Rename loader category to
MulleObjCDeps+MulleFoundation(breaking — callers must update) - Remove standalone entrypoint and centralise dependency generation
MulleInvocationQueue 0.2.0
- Export
MulleObjCDeps+MulleInvocationQueuefor dependency discovery - Include generated
objc-deps.incfor reflection loader integration
| RELEASENOTES | Version | Last Release |
|---|---|---|
| MulleObjCValueFoundation | 0.25.0 | 0.24.0 |
| MulleObjCContainerFoundation | 0.25.0 | 0.24.0 |
| MulleObjCMathFoundation | 0.21.0 | 0.20.8 |
| MulleObjCPlistFoundation | 0.21.0 | 0.20.9 |
| MulleObjCUnicodeFoundation | 0.21.0 | 0.20.8 |
| MulleObjCOSFoundation | 0.26.0 | 0.25.0 |
| MulleFoundationBase | 0.28.0 | 0.27.0 |
| MulleFoundation | 0.23.0 | 0.22.4 |
| MulleInvocationQueue | 0.2.0 | 0.1.3 |
MulleWeb — Improvements and Changes
The web stack aligned on the centralised MulleObjCDeps dependency pattern, with all
libraries now publishing explicit load-time dependency declarations.
MulleWebServer 0.1.0
- Export
MulleObjCDeps+MulleWebServerso dependent libraries declare load-time deps - Include generated
objc-deps.incand update reflection to use new dependency model
MulleHoedown 0.5.0
- Add public
MulleObjCDepscategory for load-time dependency discovery - Register NSData/NSString ObjC dependency pairs via generated
objc-deps.inc
MulleObjCHTTPFoundation 0.19.0
- Register selectors via
MulleObjCDepsfor improved reflection-based dependency resolution
| RELEASENOTES | Version | Last Release |
|---|---|---|
| MulleObjCInetFoundation | 0.19.0 | 0.18.9 |
| MulleWebServer | 0.1.0 | 0.0.14 |
| MulleBase64 | 0.1.0 | 0.0.9 |
| MulleCurl | 0.19.0 | 0.18.6 |
| MulleHoedown | 0.5.0 | 0.4.1 |
| MulleObjCHTTPFoundation | 0.19.0 | 0.18.9 |
| MulleScion | 1862.0.0 | 1861.2.1 |
| MulleScionHTMLPreprocessor | 0.3.0 | 0.2.11 |
mulle-sde — Improvements and Changes
The developer toolchain suite got a focused round of quality work. Most updates are pragmatic improvements to existing commands rather than large feature additions.
| RELEASENOTES | Version | Last Release |
|---|---|---|
| mulle-sourcetree | 1.6.3 | 1.5.0 |
| mulle-platform | 1.3.0 | 1.2.3 |
| mulle-fetch | 4.2.1 | 4.1.2 |
| mulle-project | 4.5.0 | 4.2.1 |
mulle-bashfunctions 6.8.0
Added a toc command to generate table-of-contents for AI coding support.
Improved flag handling with a new flags command to show extended flag help.
Added log_vibe for conditional info/verbose output and etc_copy_from_share
for flexible etc setup.
Introduced r_concat_unique to replace r_concat_if_missing. Enhanced
reflow_file with special line prefix support (‘|’ and ‘:’) and improved usage
output that reflows paragraphs based on terminal width.
| RELEASENOTES | Version | Last Release |
|---|---|---|
| mulle-bashfunctions | 6.8.0 | 6.7.0 |



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