Skip to content

Releases: lynnswap/ABIBridge

v0.2.1

Choose a tag to compare

@lynnswap lynnswap released this 25 Sep 13:41
59fae46

ABIBridge v0.2.1

Improvements

  • Faster automatic symbol resolution for C, C++, and Swift, including initial lookups and repeated queries. (#97, #99)
  • Reduced memory usage when indexing Swift declarations across loaded images. (#99)
  • Faster path-scoped image lookup, loaded-image retention, and shared-cache symbol discovery. (#97, #99)

Full Changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@lynnswap lynnswap released this 25 Sep 00:12
3711541

ABIBridge v0.2.0

New Features

  • Added supported C++ invocation through NativeInvocation.hpp. Call retained C/C++ symbols with caller-supplied signatures, including direct member calls, reference arguments, nontrivial results, and retained receiver bindings. (#95)
  • Added supported Objective-C++ selector invocation through ObjectiveCInvocation.hpp, with signature checks, receiver and result ownership handling, ARC/MRC support, and concrete methods on NSProxy subclasses. (#94)

Breaking Changes

  • Swift/C++ pointer search and single-slot inspection, along with ABIDefaultPointerSearchOptions(), now default to automatic normalization. Data signatures are stripped on PAC-capable 64-bit ARM CPUs; pointer bits remain unchanged otherwise. Select .none, pointer_normalization::none, or ABIPointerNormalizationNone explicitly when raw-bit comparison is required. Normalization does not authenticate pointers. (#91)

Full Changelog: v0.1.1...v0.2.0

v0.1.1

Choose a tag to compare

@lynnswap lynnswap released this 24 Sep 22:33
b3ea81b

ABIBridge v0.1.1

Bug Fixes

  • Fixed imageChanged errors during loaded-image enumeration and symbol lookup when a loaded dyld shared-cache image could not be reopened, including affected iOS Simulator environments. (#89)

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@lynnswap lynnswap released this 24 Sep 15:35
a8771e4

ABIBridge v0.1.0

Initial release of ABIBridge, a Swift package for resolving mangled Swift and C++ symbols by source-level name and calling supported native functions and methods with ordinary Swift types and values.

Requires Swift 6.3+ and iOS 18.4+, macOS 15.4+, visionOS 2.4+, watchOS 11.4+, or tvOS 18.4+.

New Features

  • Resolve native symbols without writing mangled names, including C++ functions, data, and vtables. Scope lookups to loaded frameworks or image paths, resolve batches, and try ordered fallback declarations.
  • Call supported C/C++ functions and methods, including virtual methods, with typed Swift signatures. Invoke concrete synchronous, nonthrowing Swift functions, methods, initializers, and property accessors.
  • Invoke Objective-C selectors on existing instances with support for optionals, typed blocks, and object ownership. Capture implementations for original-method calls and read named object or class ivars.
  • Integrate custom Swift wrappers through explicit native layouts and ownership adapters.
  • Read bounded native memory and discover referenced objects by vtable identity, with offset hints and revalidation.
  • Access shared symbol resolution and memory inspection through C interfaces and C++20 wrappers, also usable from Objective-C++. Transfer resolved symbols between Swift and native adapters while retaining their images.

Native invocation requires the caller to provide the correct ABI signature and satisfy ownership and thread requirements.

Documentation

API documentation and usage guides