0.8.108
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:…)andmarkedCategoryInterface(uniqueName:…)render every member and comment once, wrapping each piece a generation switch controls in aVisibilityRegion. Projected withObjCGenerationOptions.isVisibilityOptionEnabled(_:), it equals whatclassInterface(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-sectionandswift-section objcexited 133 on AppKit, Foundation and every other image tried. Present since0.5.0. - Protocol methods read from macOS 11–14.3 caches had no names or types (
NSCodingprinted- (Unknown);). From 15.4 on, the same held for the few protocols still stored that way, such as CoreFoundation'sNSCopying, sostripProtocolConformancekept their members. Present since0.5.0. stripProtocolConformancedropped only the required members of the directly adopted protocols. It now drops required and optional members along the whole protocol chain —NSObject'shashanddescription, optional delegate methods — and keeps the<Protocol, …>list, which the option's documentation and--helpwrongly 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. dumpandinterfaceoutput changes only where a fix above applies: protocol methods read from macOS 11–15 caches, and declarations rendered withstripProtocolConformance. 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