Skip to content

Releases: MxIris-Reverse-Engineering/MachOSwiftSection

0.10.0

19 Apr 16:09
af343fc

Choose a tag to compare

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-demangling to 0.2.0 to pick up a critical fix. 0.9.0 / 0.9.1 pinned 0.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 / borrowing parameter modifiers
  • Distributed actors: distributed actor declarations and distributed func members
  • Deinitializers: deinit is 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 unowned fields, $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, --architecture is now required. Previously a default slice was picked silently, which could surprise users on multi-arch binaries.
  • dump now defaults to dumping all Swift sections when no specific section flag is passed
  • --emit-expanded-field-offsets now takes effect as documented

Library

  • SwiftInspection is now exposed as a public library product. You can depend on it directly to use EnumLayoutCalculator, ClassHierarchyDumper, and MetadataReader from 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/DyldPrivateMxIris-Reverse-Engineering/swift-dyld-private (>= 1.1.0)
  • MxIris-DeveloperTool-Forks/swift-clangMxIris-DeveloperTool/swift-clang (>= 0.2.0)
  • MxIris-DeveloperTool-Forks/swift-apinotesMxIris-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

19 Apr 10:36
ab7682b

Choose a tag to compare

0.9.1 Pre-release
Pre-release

Caution

DEPRECATED — please upgrade to 0.10.0.

0.9.0 / 0.9.1 pin swift-demangling at 0.1.1, which contains a critical demangling bug. 0.10.0 bumps the dependency to 0.2.0 and supersedes this release with the same feature set. Do not depend on 0.9.x.

0.8.0-beta.1

11 Jan 17:09

Choose a tag to compare

0.8.0-beta.1 Pre-release
Pre-release

Release Notes

Major Features

In-Process Metadata Resolution

  • Enable direct runtime metadata access for in-process binaries
  • Add MetadataReader in-process support
  • All ABI structures now support InProcess version
  • 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 multiPayloadEnumDescriptor spare bits reading
  • Add printTypeLayout and printEnumLayout options

SemanticString Performance Optimization

  • Significant performance improvements for semantic string building

Improvements

  • Add preferredBinaryOrder support 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 asyncSuspendResumePartialFunction handling in NodePrinters
  • Add precompiled swift-syntax for faster build times

Bug Fixes

  • Fix MetadataAccessor resolve on in-process
  • Fix MetadataAccessor crash on arm64e
  • Fix associated type demangle errors
  • Fix internalSymbols not being processed
  • Fix various testing errors

API Changes

  • Rename MachOReadable protocol to Readable
  • Rename SharedCache.Entry to SharedCache.Storage

0.7.1

30 Nov 18:15
c224449

Choose a tag to compare

  • Fix potential arm64e crashes

  • Fix incorrect judgment of whether Enum case is a tuple

  • Improve SwiftInterface module API

  • TypeIndexing module becomes optional (available after macOS 13.0), backporting the main library to macOS 10.15

0.7.0

15 Nov 14:22
254a543

Choose a tag to compare

What's Changed

This update brings the ability to generate swiftinterface

0.7.0-RC

26 Oct 22:57

Choose a tag to compare

0.7.0-RC Pre-release
Pre-release

0.6.0

05 Jul 08:32
f87ea98

Choose a tag to compare

What's Changed

  • Fixed the issue of symbol confusion with Protocols and Protocol 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 class virtual table.

  • Fixed the issue of nominal type generic parameter errors. For nominal types with a parent type, 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

22 Jun 14:31
bca86ee

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.4.1...0.5.0

0.4.1

16 Jun 14:49

Choose a tag to compare

  • Fixed an issue where demangle might fail for iOS 26 MachO files

  • Now if a demangle type fails, an error message will be printed without terminating the program

  • Added a new interface DemangleOptions, the printed information is closer to swift-interface

0.4.0

14 Jun 13:59
5d3db26

Choose a tag to compare

Added CLI for MachOSwiftSection