Nat! bio photo

Nat!

Senior Mull

Twitter Github Twitch

mulle-objc 0.28 Release

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

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_implementation Objective-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_allocator probe so code can reliably detect the stdlib allocator
  • Alloca-family macros rationalised to use MULLE_C_TYPE_OF, confined return/loop helpers, and mulle_calloca_do_extract alias 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_table as a public symbol for direct table-driven encoding/decoding
  • Add mulle_utf32_as_utf16 helpers 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_GLOBAL now defined when MULLE__CORE_BUILD is 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+MulleInvocationQueue for dependency discovery
  • Include generated objc-deps.inc for 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+MulleWebServer so dependent libraries declare load-time deps
  • Include generated objc-deps.inc and update reflection to use new dependency model

MulleHoedown 0.5.0

  • Add public MulleObjCDeps category for load-time dependency discovery
  • Register NSData/NSString ObjC dependency pairs via generated objc-deps.inc

MulleObjCHTTPFoundation 0.19.0

  • Register selectors via MulleObjCDeps for 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.

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