mulle-objc-runtime
mulle-objc-runtime copied to clipboard
⏩ A fast, portable Objective-C runtime written 100% in C11
``` objc #import "import-private.h" #include #include "regression-version.h" typedef double mulle_relativetime_t; typedef double mulle_absolutetime_t; struct UIWindowFrameStatistics; @interface Foo : NSObject @end @implementation Foo static MULLE_C_NEVER_INLINE void stackPointer( void) { } -...
## Beep boop. Your images are optimized! Your image file size has been reduced by **33%** 🎉 Details | File | Before | After | Percent reduction | |:--|:--|:--|:--| |...
``` Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7f369f8 in _mulle_atomic_pointer_read (address=0x0) at /home/src/srcO/MulleUI/MulleUICaca/test/dependency/include/mulle-thread/mulle-atomic-c11.h:272 272 result = atomic_load_explicit( address, memory_order_relaxed); (gdb) bt #0 0x00007ffff7f369f8 in _mulle_atomic_pointer_read (address=0x0) at /home/src/srcO/MulleUI/MulleUICaca/test/dependency/include/mulle-thread/mulle-atomic-c11.h:272 #1 _mulle_objc_cachepivot_atomicget_entries...
If the caller doesn't know the prototype, the value is not correctly forwarded it seems. So **X** declares `- (void) setFoo:(double) x;` but that is not know to the caller....
``` @encode( struct names { int f0:2; unsigned f1:12;}) -> {names=b2b12} ```
The allocator is embedded in the hashmaps. With a `_hashmap` one could extract the allocator and pass it in on demand, which would shrink the class a bit.
The compiler should somehow then alias the only named parameter as `_param`, so that forwarding code can be written more uniformly, without having to think about types (in this case)....
I experimented an initial docs website using vitepress. See if you like it. ``` bash $ git clone https://github.com/wenq1/vitepress-mulle $ cd vitepress-mule $ npm i $ npm run docs:dev ```...
``` /Volumes/Source/srcO/mulle-objc/mulle-objc-debug/src/mulle-objc-csvdump.c:162:16: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] while( list = _mulle_concurrent_pointerarrayreverseenumerator_next( &rover)) ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Volumes/Source/srcO/mulle-objc/mulle-objc-debug/src/mulle-objc-csvdump.c:167:21: warning: using the result of an assignment as...
``` objc struct opaque_struct; @interface Foo { struct opaque_struct *p; // will signature to ^{opaque_struct=} } @end @implementation Foo + (Class) class { return( self); } @end // no longer...