DerelictCocoa

ponce via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Jul 30 16:21:34 PDT 2015


On Thursday, 30 July 2015 at 18:21:00 UTC, Jacob Carlborg wrote:
> On 2015-07-30 12:19, ponce wrote:
>> Based on prior Jacob Carlborg'work (AFAIK) and inspired by 
>> DerelictCF
>> (https://github.com/Extrawurst/DerelictCF), DerelictCocoa is an
>> elaborated hack to be able to use Cocoa without Xcode (tm).
>>
>> It does _not_ rely on the recent extern(Objective-C) additions 
>> so I'm a
>> bit unsure how far the compatibility will go in the OS X 
>> lineage.
>>
>> https://github.com/p0nce/DerelictCocoa
>>
>> This is an unofficial Derelict package, so use at your own 
>> risk.
>
> I had a quick look at the implementation. You're not using the 
> objc_msgSend_* family of functions correctly. That's one of the 
> main reasons why extern(Objective-C) was implemented.

Indeed there are things I don't know why it works when it 
shouldn't considering the calling convention. This is more like a 
80% solution until something better can be done.

> I strongly recommend you adapting extern(Objective-C) instead. 
> At least read the commit message [1] for the commit which 
> implements extern(Objective-C). It explains how objc_msgSend_* 
> works.

Unfortunately I'm stuck because OS X shared libraries are not 
implemented in DMD so it may be quite a long time before I can 
use a 2.068 front-end for all this. My target is the currently 
available 2.066/2.067.

> I can provide more detail if necessary.

Thanks for the feedback. I'll start by reading by reading the 
commit in more detail.

Actually I've skimmed it before and failed to understand if it 
allows to subclass ObjC objects. If it doesn't then calling the 
runtime might still be necessary.
Not really a problem since class functions do not seem tricky 
like objc_msgSend_*.

I was also unsure if extern(Objective-C) helps with the runtime 
functions themselves, or rather only dispatch to the right 
runtime function obj_msgSend_*. Or both.




More information about the Digitalmars-d-announce mailing list