Skip to content

v0.5.0-preview

Pre-release
Pre-release
Compare
Choose a tag to compare
@progrium progrium released this 24 Aug 00:17
· 16 commits to main since this release
88e85bb

MacDriver is becoming DarwinKit!

I think this might now be the best bindings project in existence for Apple APIs. Possibly even the best way to make small utilities on the Mac. And soon even other Apple devices.

This is a preview release for v0.5.0 which is a major rewrite and expansion on these bindings. This release is incompatible with previous releases, however there is an unmaintained legacy branch and all the previous releases for existing code to use. The API in this release is very close to what a 1.0 release would look like, so there shouldn't be significant changes only additions to what's here now, which includes:

  • Over 30 frameworks with nearly complete bindings and more are on the way
  • Over 2,000 classes with near complete coverage. Previously we had partial coverage of about 80.
  • 22,000 methods/properties and nearly 10,000 constants/enums. We had less than 50 constants before.
  • Automatic conversion and use of native Go builtin types in APIs like strings, bools, []byte, maps, etc.
  • Support for block arguments as Go functions with properly typed arguments (callbacks!)
  • Pre-made delegate implementations you can simply set Go functions on
  • More 1-to-1 mapping to Objective-C symbol names while also improving Go idiomaticness
  • Documentation for all symbols including a link to official Apple docs on that symbol
  • Simple model for working with Objective-C memory management
  • As the new name implies, we are set up to support more platforms like iOS, tvOS, watchOS, maybe visionOS
  • Continued support for both Intel and Apple Silicon
  • No more compile warnings, nearly all previous GitHub issues are resolved
  • More examples, better docs, and bindings are nearly all generated

However, in this preview release we have a few things left out that with your help we can get into the final v0.5.0 release:

Another way you can help is to let me know what kind of examples you want to see. Drop your requests in Discussions.

This preview release is an official reboot of the project with a new name: DarwinKit. Between now and the final release, the repository will remain macdriver while everything else updates to DarwinKit, and when we release v0.5.0 we'll rename the repository as well.

A huge thanks to @mkrautz for his work 10 years ago that I found and started this project on in 2020. Unfortunately most of his code is now gone, replaced by the more recent great work by @hsiafan. The previous code generation was by @mgood, which has also been majorly upgraded. Also thanks to @tmc and @programmingkidx for engaging more recently and motivating me to do this rewrite. But also thanks to all the previous contributors that helped get to this point.