{"id":16488,"date":"2016-11-27T15:03:58","date_gmt":"2016-11-27T20:03:58","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=16488"},"modified":"2016-12-02T08:13:11","modified_gmt":"2016-12-02T13:13:11","slug":"mulle-objc-a-new-objective-c-compiler-and-runtime","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2016\/11\/27\/mulle-objc-a-new-objective-c-compiler-and-runtime\/","title":{"rendered":"Mulle-objc: a New Objective-C Compiler and Runtime"},"content":{"rendered":"<p><a href=\"https:\/\/mulle-objc.github.io\">mulle-objc<\/a> (<a href=\"https:\/\/news.ycombinator.com\/item?id=13042199\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/mulle-objc.github.io\"><p>mulle-objc is a new way to run Objective-C code on various platforms, based on a new <a href=\"http:\/\/github.com\/Codeon-GmbH\/mulle-clang\">compiler<\/a> and a new <a href=\"http:\/\/github.com\/mulle-objc\/mulle-objc-runtime\">runtime<\/a>.<\/p><p>mulle-objc goals<\/p><ul><li>Run everywhere C runs<\/li><li>Everything faster than everyone else<\/li><li>No assembler code necessary<\/li><li>The runtime should be completely unloadable<\/li><li>Separate runtimes should be able to coexist (instances should not cross)<\/li><li>Should work in real time applications<\/li><li>No magic<\/li><li>No locking<\/li><li>Keep the <a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n2021.htm\">Spirit of C<\/a><\/li><\/ul><\/blockquote>\n<p><a href=\"https:\/\/www.mulle-kybernetik.com\/weblog\/2015\/mulle_objc_a_new_objective_c_.html\">Nat!<\/a> (<a href=\"https:\/\/twitter.com\/mulle_nat\/status\/801800541135372288\">tweet<\/a>) has a series of blog posts describing the implementation and some interesting choices and optimizations. For example, there&rsquo;s a unified struct-based calling convention, less reliance on the linker, optimized message sending in loops, &ldquo;Always Autoreleased Mode,&rdquo; and deliberately no support for dot syntax, blocks, or non-fragile ivars.<\/p>","protected":false},"excerpt":{"rendered":"<p>mulle-objc (Hacker News): mulle-objc is a new way to run Objective-C code on various platforms, based on a new compiler and a new runtime.mulle-objc goalsRun everywhere C runsEverything faster than everyone elseNo assembler code necessaryThe runtime should be completely unloadableSeparate runtimes should be able to coexist (instances should not cross)Should work in real time applicationsNo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[168,230,255,46,571,54,760,74,71],"class_list":["post-16488","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-blocks","tag-clang","tag-compiler","tag-languagedesign","tag-memory-management","tag-objective-c","tag-objective-c-runtime","tag-opensource","tag-programming"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/16488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=16488"}],"version-history":[{"count":4,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/16488\/revisions"}],"predecessor-version":[{"id":16513,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/16488\/revisions\/16513"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=16488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=16488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=16488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}