Releases: MxIris-Reverse-Engineering/MachOSwiftSection
0.10.0
0.10.0
Warning
0.10.0 supersedes and replaces 0.9.0 / 0.9.1. Those tags shipped with swift-demangling pinned below 0.2.0, which contains a critical demangling bug. Please upgrade directly to 0.10.0 — do not depend on 0.9.x.
Highlights
This release significantly improves the fidelity of generated Swift interfaces, brings richer dump output, and tightens the swift-section CLI behavior on fat binaries.
Bug Fixes
- Demangling: bumped
swift-demanglingto0.2.0to pick up a critical fix.0.9.0/0.9.1pinned0.1.1, which shipped the bug and must be avoided.
SwiftInterface
Generated interfaces now reflect many more language features that were previously omitted:
- Type and member attributes:
@objc,@nonobjc,dynamic,@retroactive,@globalActor,@escaping,consuming/borrowingparameter modifiers - Distributed actors:
distributed actordeclarations anddistributed funcmembers - Deinitializers:
deinitis now emitted for classes and noncopyable types - VTable offset comments alongside class members, with member ordering that matches the on-disk layout
- Expanded field offsets for nested struct fields, rendered as a tree
- Cleaner output: typealias-only conformance extensions are merged, dependent member type chains are canonicalized, auto-synthesized protocol members and merged-function thunks are deduplicated
- Several rendering fixes around
unownedfields,$defaultActor, and nested generic parameters
SwiftDump
- Protocol witness table entries are now annotated with the requirement they satisfy
- Inverted protocols (
~Copyable,~Escapable) are rendered on types and generic requirements - Protocol conformances can include the PWT address
swift-section CLI
- Breaking: when running against a fat binary,
--architectureis now required. Previously a default slice was picked silently, which could surprise users on multi-arch binaries. dumpnow defaults to dumping all Swift sections when no specific section flag is passed--emit-expanded-field-offsetsnow takes effect as documented
Library
SwiftInspectionis now exposed as a public library product. You can depend on it directly to useEnumLayoutCalculator,ClassHierarchyDumper, andMetadataReaderfrom your own tools.
Performance
- Symbol demangling during interface generation now runs in parallel, noticeably reducing startup time on large binaries and dyld shared cache images.
Dependencies
If you consume MachOSwiftSection via SwiftPM, the following package URLs have moved. SwiftPM will resolve the new locations automatically on swift package update:
MxIris-Reverse-Engineering/DyldPrivate→MxIris-Reverse-Engineering/swift-dyld-private(>= 1.1.0)MxIris-DeveloperTool-Forks/swift-clang→MxIris-DeveloperTool/swift-clang(>= 0.2.0)MxIris-DeveloperTool-Forks/swift-apinotes→MxIris-DeveloperTool/swift-apinotes
Underlying MachOKit was bumped to 0.49.100 (based on upstream 0.49.0).
Requirements
- Swift 6.2+
- Xcode 26.0+ (CI validates on Xcode 26.4 / macOS 26)
Known Issues
See KNOWN_ISSUES.md for two non-blocking concurrency edge cases observed only under parallel test harness configurations.
0.9.1
0.8.0-beta.1
Release Notes
Major Features
In-Process Metadata Resolution
- Enable direct runtime metadata access for in-process binaries
- Add
MetadataReaderin-process support - All ABI structures now support
InProcessversion - Add metatype cast function for runtime type introspection
- Support metadata accessor resolution on arm64e
Multi-Payload Enum Layout Calculator
- Complete implementation for calculating multi-payload enum memory layouts
- Fix tagged multi-payload layout calculation
- Fix
multiPayloadEnumDescriptorspare bits reading - Add
printTypeLayoutandprintEnumLayoutoptions
SemanticString Performance Optimization
- Significant performance improvements for semantic string building
Improvements
- Add
preferredBinaryOrdersupport for SwiftDump - Add convenience properties for
EnumDescriptor - Increase underlying type unfolding for opaque types
- Unit testing now supports iOS/watchOS/tvOS platforms
- Better error handling in
SwiftInterfaceBuilder(non-throwing print methods) - Add
asyncSuspendResumePartialFunctionhandling in NodePrinters - Add precompiled swift-syntax for faster build times
Bug Fixes
- Fix
MetadataAccessorresolve on in-process - Fix
MetadataAccessorcrash on arm64e - Fix associated type demangle errors
- Fix
internalSymbolsnot being processed - Fix various testing errors
API Changes
- Rename
MachOReadableprotocol toReadable - Rename
SharedCache.EntrytoSharedCache.Storage
0.7.1
0.7.0
0.7.0-RC
0.6.0
What's Changed
-
Fixed the issue of symbol confusion with
ProtocolsandProtocol Conformances. The cause was that the Swift compiler optimizes by storing different symbols with the same implementation at the same offset/address, commonly seen in default implementations of some conformances. -
By traversing the symbol table, it is now possible to dump computed properties and static computed properties of types, as well as functions and static functions excluding the
classvirtual table. -
Fixed the issue of nominal type generic parameter errors. For nominal types with a
parenttype, the generic context's params and requirements carry all the parent's params and requirements. For example: Ancestor<A, B>.Parent<A1, B1>.Current. Previous versions would define Ancestor's A, B and Parent's A1, B1 together in Current. The new version corrects this issue and adds the correct generic parameter depth.
Full Changelog: 0.5.0...0.6.0
0.5.0
What's Changed
- Bump to MachOKit 0.35.0 by @Mx-Iris in #8
- Update Dependencies by @Mx-Iris in #9
- Bug fixes for MachOFile in iOS 26 by @Mx-Iris in #10
- Some optimizations by @Mx-Iris in #11
- Update README for swift-section by @Kyle-Ye in #12
- 0.5.0 by @Mx-Iris in #13
New Contributors
Full Changelog: 0.4.1...0.5.0