Nat! bio photo

Nat!

Senior Mull

Twitter Github Twitch

mulle-objc 0.17 Release

logo

Pretty much another half year passed since the mulle-objc 0.16 release, and it’s finally time for the 0.17 release. The release is a fairly big one, in terms of new libraries. But its more of a maintenance release in terms of language and runtime features. The mulle-clang compiler is based on clang/llvm 10 now.

Highlights

  • Templated sources for classes, categories, protocolclasses with the new mulle-sde add command. This completes the originally envisioned feature set of mulle-sde.
  • NSCalendar and NSCalendarDate in the new MulleObjCCalendarFoundation
  • JSON support for property lists in the new MulleObjCJSMNFoundation
  • Much improved NSURL class with a new HTTP parser in the new MulleObjCHTTPFoundation
  • Dependency parameters in mulle-sde sourcetrees can now be changed on a per-case basis with environment variables
  • The developer guide De Re mulle-objc has undergone a significant revision and is now more accessible than ever
  • The new MulleWebClient and MulleWebServer libraries help you retrieve or serve web content easily

Libraries

There has been a reorganization on the scopes of what MulleFoundation and Foundation include. Parts of MulleFoundation have been moved to a new MulleWeb organization. They are still part of the Foundation though. These parts can always be recognized by the MulleObjC prefix and the Foundation suffix. They are part of the mulle-objc release cycle. Other parts of MulleWeb will adhere to a possibly different release cycle.

Symbols in the libraries that are part of the Foundation should conform to the OpenStep/Apple symbols. Symbols that do not conform are prefixed mulle or Mulle or convenient alterations thereof. This rule does not apply outside of the Foundation though.

MulleFoundation

The MulleFoundation now contains only the data structure and OS specific parts. It does not contain internet related classes like NSURL. Here are the new additions:

Library Description
MulleObjCMathFoundation A small add on library, that moves the dependency on -lm (math) out of MulleObjCValueFoundation
MulleObjCContainerFoundation NSArray, NSSet, NSDictionary split off from MulleObjCStandardFoundation
MulleObjCValueFoundation NSNumber, NSString, NSDate, NSData split off from MulleObjCStandardFoundation
MulleObjCCalendarFoundation NSCalendar but there is only support for NSGregorianCalendar, loosely based on Cocotron

Foundation

The Foundation takes part of MulleWeb and the whole of MulleFoundation to form the “what you are used to” Foundation library. It also contains extra compatibility code. Additionally Foundation now has:

Library Description
MulleObjCInetOSFoundation Marries the MulleObjCOSFoundation with the MulleObjCInetFoundation

MulleWeb

The MulleWeb library provides HTTP server and client functionality. It is at an infancy stage, but it can already walk and talk. With the exception of MulleObjCInetFoundation these are new additions, and there will be a few more to come:

Library Description
MulleObjCHTTPFoundation provides some support for HTTP handling and a HTTP URL parser based on NGINX/node
MulleObjCInetFoundation NSURL and NSHost (formerly part of MulleFoundation)
MulleObjCJSMNFoundation provides JSON printing and parsing, based on jsmn
MulleCurl HTTP client library for the MulleFoundation based on libcurl
MulleHoedown Markdown support
MulleZlib Compression
MulleCivetWeb HTTP Server for the MulleFoundation based on civetweb
MulleWebClient MulleWeb client library
MulleWebServer MulleWeb server library

Upgrading

The update should come with the next brew update or apt-get dist-upgrade. In your own projects say mulle-sde upgrade as mulle-env has progressed a major version and some files need to be migrated. Also as in all releases be sure to run mulle-sde clean cache once and mulle-sde clean tidy in all your projects once, before running mulle-sde craft.

Crystal Ball

When I look into the future, I see the following topics for mulle-objc:

  • a better/working debugger based on gdb
  • compiler support for current and future mulle-objc language extensions
  • a MulleUI library for desktop and mobile graphics
  • make Windows a first-class platform
  • Better declarative support for forwarding

Release Notes

For all the releasenotes check….

mulle-c

mulle-concurrent

mulle-core

mulle-objc

MulleFoundation

mulle-sde


Post a comment

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

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