The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
Turns out that `clang_rt` has to be handled specially for the iOS simulator, who'd have guessed.
Just a quick fix for iOS support today! Thanks to @lucasfernog we now link against `clang_rt.ios`, hopefully alleviating any `___isPlatformVersionAtLeast` errors.
Just a few changes here, nothing crazy.
## Swift artefacts now stored in `OUT_DIR` (#32)
The `.build` folder is now redirected to `OUT_DIR`, making it much easier to publish crates that contain Swift code.
It also allows for...
## Automatic recompilation when Swift files are modified (#28)
With compilation artefacts being away from source code, it's now safe for `swift-rs` to instruct Cargo to recompile Swift packages anytime their contents change!
Big thanks to my 5 (!!!) sponsors!
After not touching this project for months on account of being stumped by how to make stuff work properly, I'm super excited to be releasing v1.0.0 of `swift-rs`!
## Breaking Changes
- Everything is now exported from the root of the crate, so no more `build::*` or `types::*` imports
- `link_swift` functions are gone in favour of `SwiftLinker`
## New Traits + Macro
Manually writing `extern "C"` blocks are now a thing of the past thanks to the `swift!` macro!
This macro enforces that your argument and return types are compatible with Swift thanks to the `SwiftArg` and `SwiftRet` traits respectively, and allows for...
## Improved Memory Safety
`SRObject` values are now properly dropped, and `swift!` is capable of 'stealing' objects from Swift's reference counting system, allowing Rust to have full control over the lifetime of Swift data! This wouldn't have been possible without @amodm's help, many thanks to him.
Gone are the old `link_swift` and `link_swift_package` functions, now `SwiftLinker` can be used to build up a configuration and then link everything at once!
## iOS Support
Thanks to @lucasfernog, `swift-rs` will be powering [Tauri mobile](https://tauri.app/blog/2022/12/09/tauri-mobile-alpha/) on iOS! If you can figure out how to run Rust on iOS, then calling `with_ios` on your `SwiftLinker` should work.
I've got a few more ideas for this library but won't execute on them for a while in order to focus on other projects.
Thank you to everyone who has contributed, I couldn't have done this without you!
## New Features
- Optional `NSObject` values are now supported (#4)
- Objects created in Swift are now released when their Rust counterparts are dropped (#2)
- Build script has been updated to support M1 Macs (#6)
- Build module has been renamed from `build_utils` to `build` and is behind corresponding Cargo feature (avoids requiring `serde` and `serde_json` to be included by default)
- Serde support is now behind Cargo feature `serde`
- `getMounts` example no longer leaks huge amounts of memory