GUI program on Mac OS in D?

Jacob Carlborg doob at me.com
Thu Nov 23 17:28:43 UTC 2017


On 2017-11-23 17:06, Adam D. Ruppe wrote:
> I know we have the extern(Objective-C) stuff from 
> https://wiki.dlang.org/DIP43 now, but do we have existing bindings 
> anywhere along the lines of the win32 ones we can just import and start 
> calling the operating system functions?

Not as far as I know. Only a small part of what's in DIP43 is merged 
upstream in DMD, that is calling instance methods. DStep can generate 
bindings for Objective-C code but it will generate bindings for the full 
implementation of DIP43, so some things will not work with the official 
DMD. Back in the days when I announced 64bit version of DIP43 some guy 
started using it and seems to have a fairly complete set of bindings 
[1]. But again, those are for the full implementation of DIP43.

> Moreover, I'm not a Mac dev; I've never actually done so much of a hello 
> world, so have any of you done like a hello world in cocoa using D 
> tutorial or example I can copy/paste to get started?

I have a simple example [2] of an application that shows a window with a 
WebKit view, i.e. and embedded browser. This works with the upstream DMD 
and LDC compilers. It basically only contains bindings for what I needed 
for that sample application. As you'll see there you need to use some 
parts of the Objective-C runtime to create class instances and 
subclasses. Also some gymnastics are required for class/static methods.

Note that this example is not a traditional Mac application, it was 
designed to not use .nib files (GUI files) and be embedded as a library 
inside another application.

If you want to give this a try, I recommend finding some 
Objective-C/Swift hello world examples online, combine that with my 
sample application [2] and the official documentation [3] for 
interfacing with Objective-C. You can use DStep to generate bindings and 
do some post-processing to remove/change what doesn't compile today 
using DMD.

If you have any questions, please let me know.

[1] https://github.com/DiveFramework/DiveFramework
[2] https://github.com/jacob-carlborg/d_webkit_test
[3] https://dlang.org/spec/objc_interface.html

-- 
/Jacob Carlborg


More information about the Digitalmars-d-learn mailing list