Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Does this mean that, theoretically, this could lead to the ability to build MacOS apps in higher languages that interoperate well with C such as Python? I know you can build MacOS apps with Python now, but does this potentially improve the experience?


You can already do this in the traditional way by building an ObjC shim which exposes a C API. The solution shown here just skips ObjC and talks directly to the ObjC runtime (which has a C API but is not as convenient to use as doing the same thing in ObjC or Swift).

In a highly simplified way you can think of Objective-C as preprocessor which replaces the ObjC syntax sugar with C function calls into the ObjC runtime (it's not how it works in reality, but how it could work).


That’s essentially what this project does. It creates the C code that the ObjC compiler would generate to “implement methods” or “send messages”.

It’s somewhat doable by hand because Objc is a thin lawyer.

Over 15 years ago I did stuff similar to this project to call some Objc code from a C++ app. Most of it was exposed to normal C APIs but one feature only available in AppKit. It was much simpler to do it this way than figure out how to make GCC or Objc like our C++ or any mess with bridging headers.

I think the move to Swift has made that harder in some ways.

But then again I don’t want to write C or C++ these days if I can avoid it.


In fact, early objective-c was a preprocessor according to Wikipedia!


That is what objC scripting brige is for.

https://developer.apple.com/documentation/scriptingbridge


I believe RubyMotion does basically this:

http://www.rubymotion.com

It was fun building an app in this a few years ago, but was difficult to keep up with updates to MacOS breaking my code.


There’s already PyCocoa and pretty sure *Cocoa exists for a variety of languages.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: