Skip to content

0.8.108

Choose a tag to compare

@github-actions github-actions released this 03 Oct 14:56
· 3 commits to main since this release

0.8.108

Mainly a fix for reading macOS 11 through 15 dyld shared caches: protocol methods read from them now carry their real names and types, and images of the macOS 14.4–15.3.2 caches no longer crash. It also adds a marked rendering for hosts that change generation switches live, and makes stripProtocolConformance drop everything it promised to.

What's new

  • Marked rendering: ObjCInterfaceBuilder.markedClassInterface(named:…), markedProtocolInterface(named:…) and markedCategoryInterface(uniqueName:…) render every member and comment once, wrapping each piece a generation switch controls in a VisibilityRegion. Projected with ObjCGenerationOptions.isVisibilityOptionEnabled(_:), it equals what classInterface(named:options:) and its siblings render for those options, so a host can flip switches without rendering again.

Fixes

  • Indexing an image of a macOS 14.4–15.3.2 dyld shared cache trapped with no output: objc-section and swift-section objc exited 133 on AppKit, Foundation and every other image tried. Present since 0.5.0.
  • Protocol methods read from macOS 11–14.3 caches had no names or types (NSCoding printed - (Unknown);). From 15.4 on, the same held for the few protocols still stored that way, such as CoreFoundation's NSCopying, so stripProtocolConformance kept their members. Present since 0.5.0.
  • stripProtocolConformance dropped only the required members of the directly adopted protocols. It now drops required and optional members along the whole protocol chain — NSObject's hash and description, optional delegate methods — and keeps the <Protocol, …> list, which the option's documentation and --help wrongly said it removed.

Compatibility

  • Requires swift-semantic-string 0.4.0 or later (was 0.3.0), the first release with VisibilityRegion. The other dependency requirements are unchanged.
  • dump and interface output changes only where a fix above applies: protocol methods read from macOS 11–15 caches, and declarations rendered with stripProtocolConformance. The plain entry points render as before.

Requirements

  • Swift 6.2+ and Xcode 26.0+ to build from source.

Details, in Chinese: dyld cache pointer slots · marked rendering · stripProtocolConformance