Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -298,13 +298,13 @@ jobs:

header-translator:
name: Verify header translator output
runs-on: macos-26 # Aarch64
runs-on: xcode-27 # Aarch64
needs:
- fmt
- lint

env:
DEVELOPER_DIR: /Applications/Xcode_26.6.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_27.0.app/Contents/Developer

steps:
- uses: actions/checkout@v6
Expand Down
5 changes: 5 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/dispatch2/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#![warn(clippy::missing_safety_doc)]
// Update in Cargo.toml as well.
#![doc(html_root_url = "https://docs.rs/dispatch2/0.3.1")]
#![recursion_limit = "256"]

#[cfg(not(feature = "alloc"))]
compile_error!("The `alloc` feature currently must be enabled.");
Expand Down
22 changes: 22 additions & 0 deletions crates/header-translator/configs/skipped.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ ActivityKit = "Swift-only"
AdAttributionKit = "Swift-only"
AlarmKit = "Mostly Swift-only"
AppIntents = "Swift-only"
AppIntentsTesting = "Swift- and Developer-only"
AppIntentsTypeSupport = "Swift-only"
AppManagedFeatures = "Swift-only"
AppMigrationKit = "Swift-only"
Assignables = "Swift-only"
AudioAccessoryKit = "Swift-only"
Expand All @@ -41,16 +44,20 @@ Charts = "Swift-only"
ClassKitUI = "Swift-only"
Combine = "Swift-only"
ContactProvider = "Mostly Swift-only"
CoreAI = "Swift-only"
CoreHID = "Swift-only"
CoreTransferable = "Swift-only"
CrashReportExtension = "Swift-only"
CreateML = "Swift-only"
CreateMLComponents = "Swift-only"
CryptoKit = "Swift-only"
DeclaredAgeRange = "Swift-only"
DeveloperToolsSupport = "Swift-only"
DeviceActivity = "Swift-only"
DiskImageKit = "Swift-only"
DockKit = "Swift-only"
EnergyKit = "Swift-only"
Evaluations = "Swift- and Developer-only"
ExtensionFoundation = "Swift-only"
FamilyControls = "Swift-only"
FinanceKit = "Swift-only"
Expand All @@ -73,7 +80,12 @@ ManagedSettings = "Swift-only"
ManagedSettingsUI = "Swift-only"
MarketplaceKit = "Swift-only"
MatterSupport = "Swift-only"
MediaDevice = "Swift-only"
MediaIntelligence = "Swift-only"
MediaIntents = "Swift-only"
MusicKit = "Swift-only"
MusicUnderstanding = "Swift-only"
NowPlaying = "Swift-only"
PaperKit = "Swift-only"
PermissionKit = "Swift-only"
ProximityReader = "Swift-only"
Expand All @@ -83,6 +95,8 @@ RelevanceKit = "Swift-only"
RoomPlan = "Swift-only"
SecureElementCredential = "Swift-only"
ServicesAccountLinking = "Effectively Swift-only"
SpatialPreview = "Swift-only"
SuggestedActions = "Swift-only"
SwiftData = "Swift-only"
SwiftUI = "Swift-only"
SwiftUICore = "Swift-only"
Expand All @@ -93,6 +107,8 @@ Testing = "Swift-only"
TipKit = "Swift-only"
Translation = "Swift-only"
TranslationUIProvider = "Swift-only"
TrustInsights = "Swift-only"
USDKit = "Swift-only"
VisionEntitlementServices = "Mostly Swift-only"
VisionKit = "Swift-only"
VisualIntelligence = "Swift-only"
Expand All @@ -106,6 +122,7 @@ WorkoutKit = "Swift-only"
AppleScriptKit = "Basically empty nowadays" # requires !swift
AppleScriptObjC = "Basically empty nowadays"
Cocoa = "Basically empty nowadays, use AppKit"
ComputeGraph = "Only has C++ and Swift bindings"
CoreDisplay = "Basically empty"
JavaNativeFoundation = "Basically empty"
KernelManagement = "Basically empty"
Expand Down Expand Up @@ -146,5 +163,10 @@ CoreMIDIServer = "Very deprecated"
XcodeKit = "TODO. Developer-only"
StoreKitTest = "TODO. Developer-only"

AccessoryAccess = "TODO"
AVSystemRouting = "TODO"
LinkSecurity = "TODO"
StateReporting = "TODO"

# LiveExecutionResultsLogger = "Removed in Xcode 26"
# AGL = "Removed in Xcode 26"
9 changes: 9 additions & 0 deletions crates/header-translator/src/unexposed_attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,7 @@ impl UnexposedAttr {
| "ATS_UNAVAILABLE"
| "BROWSERENGINE_TEXTINPUT_AVAILABILITY"
| "BROWSERENGINE_ACCESSIBILITY_AVAILABILITY"
| "BROWSERENGINE_ACCESSIBILITY_AVAILABILITY_27"
| "BROWSERENGINE_ACCESSIBILITY_MARKER_AVAILABILITY"
| "BROWSERENGINE_ACCESSIBILITY_REMOTE_AVAILABILITY"
| "CA_CANONICAL_DEPRECATED"
Expand All @@ -400,6 +401,8 @@ impl UnexposedAttr {
| "EN_API_AVAILABLE_V5"
| "EN_API_AVAILABLE_EXPORT"
| "EN_API_AVAILABLE_EXPORT_V2"
| "FSKIT_API_INTRODUCED_V1_DEPRECATED_V3_WITH_REPLACEMENT"
| "FILE_PROVIDER_AVAILABILITY_NAMESPACE_POLICY"
| "GK_BASE_AVAILABILITY"
| "GK_BASE_AVAILABILITY_2"
| "GK_BASE_AVAILABILITY_3"
Expand All @@ -409,6 +412,7 @@ impl UnexposedAttr {
| "INTERAPP_AUDIO_DEPRECATED"
| "MD_AVAIL"
| "MD_AVAIL_LEOPARD"
| "MHDR_AVAILABILITY_v1"
| "MIDI_API_UNAVAILABLE_NON_MACOS"
| "MIDI_AVAILABLE_UMP1_1"
| "MIDICI1_0_AVAILABILITY"
Expand All @@ -419,6 +423,7 @@ impl UnexposedAttr {
| "MIDICI1_1"
| "MIDICI1_2"
| "MIDINETWORKSESSION_AVAILABLE"
| "MPSF_AVAILABILITY_v1"
| "NS_CLASS_AVAILABLE"
| "UT_AVAILABLE_BEGIN"
| "MP_DEPRECATED_BEGIN"
Expand Down Expand Up @@ -473,6 +478,10 @@ impl UnexposedAttr {
// Irrelevant, we don't emit dispatch_object_t anyhow.
"DISPATCH_TRANSPARENT_UNION" => None,
"NS_NO_TAIL_CALL" => None,
// TODO: Use this to map as `BlockOnce`? Probably not strong
// enough to be a soundness guarantee.
// <https://clang.llvm.org/docs/AttributeReference.html#called-once>
"FSKIT_CALLED_ONCE" => None,
_ => return Err(()),
})
}
Expand Down
12 changes: 6 additions & 6 deletions crates/objc2/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,17 +63,17 @@
//!
//! ## Supported operating systems
//!
//! - macOS: `10.12-26.5`
//! - iOS: `10.0-26.5` (including iPadOS and Mac Catalyst)
//! - tvOS: `10.0-26.5`
//! - watchOS: `5.0-26.5`
//! - visionOS: `1.0-26.5`
//! - macOS: `10.12-27.0`
//! - iOS: `10.0-27.0` (including iPadOS and Mac Catalyst)
//! - tvOS: `10.0-27.0`
//! - watchOS: `5.0-27.0`
//! - visionOS: `1.0-27.0`
//!
//! The minimum versions are the same as those supported by `rustc`. Higher
//! versions will also work, but the framework crates will not have bindings
//! available for newer APIs.
//!
//! The framework bindings are generated from the SDKs in Xcode 26.6. The
//! The framework bindings are generated from the SDKs in Xcode 27.0. The
//! Xcode version are updated usually within a week of [GitHub Actions]
//! supporting the new Xcode version, and we try to schedule crate releases
//! such that align fairly closely with Xcode updates. We only support stable
Expand Down
13 changes: 11 additions & 2 deletions crates/objc2/src/topics/FRAMEWORKS_CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* Added missing `AudioToolbox` unions and functions using these.

### Changed
* Updated SDK from Xcode 26.0.1 to 26.6.
* Updated SDK from Xcode 26.0.1 to 27.0.

View the release notes to learn more details:
- [26.1.1](https://developer.apple.com/documentation/xcode-release-notes/xcode-26_1-release-notes)
Expand All @@ -42,6 +42,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- [26.4.1](https://developer.apple.com/documentation/xcode-release-notes/xcode-26_4_1-release-notes)
- [26.5](https://developer.apple.com/documentation/xcode-release-notes/xcode-26_5-release-notes)
- [26.6](https://developer.apple.com/documentation/xcode-release-notes/xcode-26_6-release-notes)
- [27.0](https://developer.apple.com/documentation/xcode-release-notes/xcode-27-release-notes)

Breaking changes are noted elsewhere in this changelog entry.
* Changed the value of `kUSBHostPortPropertyPortNumber`.
Expand All @@ -67,6 +68,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- `CVImageBuffer`, `CVPixelBuffer`, `CVOpenGLBuffer`, `CVOpenGLTexture` and `CVMetalTexture`.
- `SecTransform` and `SecTransformAttribute`.
- `SCBondInterface` and `SCVLANInterface`.
* **BREAKING**: Renamed `THClient::enableCredentialSharingMode` to `enableCredentialSharingModeWithExtendedPANId_completion`.
* **BREAKING**: Split parts of `FSVolumeOperations` into `FSVolumeCommonOperations`.

### Removed
* **BREAKING**: Removed a lot of deprecated function aliases. Use the methods instead.
Expand All @@ -80,8 +83,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* **BREAKING**: Removed unavailable methods.
* **BREAKING**: Removed `CSSearchableItemAttributeSet::moveFrom`.
* **BREAKING**: Removed various `kUSBHostBillboardDeviceProperty*` consts.
* **BREAKING**: Removed `kUSBHostPortPropertyUsbCPortNumber` const.
* **BREAKING**: Removed `CFGetRetainCount`, `CFEqual` and `CFHash`; these are now only available directly on `CFType`.
* **BREAKING**: Remove inherent `initWithCoder:` methods, these are available on `NSCoding`.
* **BREAKING**: Removed inherent `initWithCoder:` methods, these are available on `NSCoding`.
* **BREAKING**: Removed `drawWithRect_options_attributes` and `boundingRectWithSize_options_attributes` AppKit extension methods on `NSString`.
* **BREAKING**: Removed `loadBroadcastingApplicationInfoWithCompletion` and `completeRequestWithBroadcastURL_setupInfo` ReplayKit extension methods on `NSExtensionContext`.
* **BREAKING**: Removed `FSDirectoryVerifier` and `ParavirtualizedGraphicsVersion*`.
* **BREAKING**: Removed `NSAttributedStringNSStringDrawingDeprecated`.

### Fixed
* Fixed the encoding check in `NSUUID` methods.
Expand All @@ -98,6 +106,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* **BREAKING**: `UIApplication::sharedApplication` now returns an `Option` (it returns `None` if called before `UIApplication::main()`).
* **BREAKING**: Improved support for unsized structs.
* Improved documentation for enum variants.
* Fixed a bunch of thread-safety issues in `objc2-avf-audio`.

## [0.3.2] - 2025-10-04
[0.3.2]: https://github.com/madsmtm/objc2/compare/frameworks-0.3.1...frameworks-0.3.2
Expand Down
21 changes: 21 additions & 0 deletions crates/objc2/src/topics/frameworks_list_unsupported.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
| Framework | Why is this unsupported? |
| --- | --- |
| `AVSystemRouting` | TODO. |
| `Accelerate` | Very C-centric, hard for us to map. |
| `AccessoryAccess` | TODO. |
| `AccessoryLiveActivities` | Swift-only. |
| `AccessoryNotifications` | Swift-only. |
| `AccessoryTransportExtension` | Swift-only. |
Expand All @@ -10,6 +12,9 @@
| `AddressBookUI` | Deprecated, use Contacts instead. |
| `AlarmKit` | Mostly Swift-only. |
| `AppIntents` | Swift-only. |
| `AppIntentsTesting` | Swift- and Developer-only. |
| `AppIntentsTypeSupport` | Swift-only. |
| `AppManagedFeatures` | Swift-only. |
| `AppMigrationKit` | Swift-only. |
| `AppleScriptKit` | Basically empty nowadays. |
| `AppleScriptObjC` | Basically empty nowadays. |
Expand All @@ -25,11 +30,14 @@
| `ClassKitUI` | Swift-only. |
| `Cocoa` | Basically empty nowadays, use AppKit. |
| `Combine` | Swift-only. |
| `ComputeGraph` | Only has C++ and Swift bindings. |
| `ContactProvider` | Mostly Swift-only. |
| `CoreAI` | Swift-only. |
| `CoreDisplay` | Basically empty. |
| `CoreHID` | Swift-only. |
| `CoreMIDIServer` | Very deprecated. |
| `CoreTransferable` | Swift-only. |
| `CrashReportExtension` | Swift-only. |
| `CreateML` | Swift-only. |
| `CreateMLComponents` | Swift-only. |
| `CryptoKit` | Swift-only. |
Expand All @@ -40,9 +48,11 @@
| `DirectoryService` | Deprecated, use OpenDirectory instead. |
| `DiscRecording` | Deprecated, use AVKit/AVFoundation instead. |
| `DiscRecordingUI` | Deprecated, use AVKit/AVFoundation instead. |
| `DiskImageKit` | Swift-only. |
| `DockKit` | Swift-only. |
| `DriverKit` | Uses C++ classes. |
| `EnergyKit` | Swift-only. |
| `Evaluations` | Swift- and Developer-only. |
| `ExtensionFoundation` | Swift-only. |
| `FamilyControls` | Swift-only. |
| `FinanceKit` | Swift-only. |
Expand Down Expand Up @@ -70,6 +80,7 @@
| `KernelManagement` | Basically empty. |
| `LDAP` | Basically empty. |
| `LightweightCodeRequirements` | Swift-only. |
| `LinkSecurity` | TODO. |
| `LiveCommunicationKit` | Swift-only. |
| `LockedCameraCapture` | Swift-only. |
| `ManagedApp` | Swift-only. |
Expand All @@ -79,12 +90,17 @@
| `MarketplaceKit` | Swift-only. |
| `Matter` | Mostly available [here](https://github.com/project-chip/connectedhomeip). |
| `MatterSupport` | Swift-only. |
| `MediaDevice` | Swift-only. |
| `MediaIntelligence` | Swift-only. |
| `MediaIntents` | Swift-only. |
| `MediaLibrary` | Deprecated, use PhotoKit instead. |
| `Message` | Basically empty. |
| `MetalPerformancePrimitives` | Header-only framework used in Metal shaders. |
| `MobileCoreServices` | Deprecated, use CoreServices + UniformTypeIdentifiers instead. |
| `MusicKit` | Swift-only. |
| `MusicUnderstanding` | Swift-only. |
| `NetFS` | Deprecated, use macFUSE or FSKit instead (probably). |
| `NowPlaying` | Swift-only. |
| `OpenAL` | Very C-centric, use newer Audio frameworks instead. |
| `OpenCL` | Very C-centric and old. |
| `PCSC` | Too low-level, consider crates like `pcsc` instead. |
Expand All @@ -101,9 +117,12 @@
| `Ruby` | Very C-centric and old. |
| `SecureElementCredential` | Swift-only. |
| `ServicesAccountLinking` | Effectively Swift-only. |
| `SpatialPreview` | Swift-only. |
| `StateReporting` | TODO. |
| `StickerFoundation` | Basically empty. |
| `StickerKit` | Basically empty. |
| `StoreKitTest` | TODO. Developer-only. |
| `SuggestedActions` | Swift-only. |
| `SwiftData` | Swift-only. |
| `SwiftUI` | Swift-only. |
| `SwiftUICore` | Swift-only. |
Expand All @@ -119,7 +138,9 @@
| `Tk` | Very C-centric and old. |
| `Translation` | Swift-only. |
| `TranslationUIProvider` | Swift-only. |
| `TrustInsights` | Swift-only. |
| `Twitter` | Deprecated, use Social instead. |
| `USDKit` | Swift-only. |
| `VideoDecodeAcceleration` | Very C-centric and old. |
| `VisionEntitlementServices` | Mostly Swift-only. |
| `VisionKit` | Swift-only. |
Expand Down
2 changes: 1 addition & 1 deletion crates/test-frameworks/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ test-frameworks = [
]
objc2-ar-kit = ["dep:objc2-ar-kit"]
objc2-avf-audio = ["dep:objc2-avf-audio", "objc2-avf-audio?/objc2-core-media", "objc2-avf-audio?/objc2-core-midi"]
objc2-av-foundation = ["dep:objc2-av-foundation", "objc2-av-foundation?/objc2-core-media", "objc2-av-foundation?/objc2-uniform-type-identifiers"]
objc2-av-foundation = ["dep:objc2-av-foundation", "objc2-av-foundation?/objc2-core-media", "objc2-av-foundation?/objc2-uniform-type-identifiers", "objc2-av-foundation?/objc2-video-toolbox"]
objc2-av-kit = ["dep:objc2-av-kit", "objc2-av-kit?/objc2-av-routing"]
objc2-av-routing = ["dep:objc2-av-routing"]
objc2-accessibility = ["dep:objc2-accessibility"]
Expand Down
4 changes: 2 additions & 2 deletions crates/test-ui/ui/downcast_generic.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions crates/test-ui/ui/downcast_generic_ref.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading