Skip to content

Releases: p-x9/MachOKit

0.52.2

Choose a tag to compare

@p-x9 p-x9 released this 05 Aug 18:19
773e107

What's Changed

  • Fix ObjC header info lookup for subcaches by @p-x9 in #310

Full Changelog: 0.52.1...0.52.2

MachOKit
bfce40d41561346513b97aaa2410863d869fc2d92df7027791677cb0ea2a6de3

MachOKitC
f2e557758644497ea95fcf450c78748736b6593650c7c6a253f85a15987178e1

0.52.1

Choose a tag to compare

@p-x9 p-x9 released this 24 Jul 16:36
c7ffcf1

What's Changed

  • Cache file handle identity on initialization by @p-x9 in #309

Full Changelog: 0.52.0...0.52.1

MachOKit
0ff7bd59ab20052d311eb7c59e132a3bbcc2ac8892219363542b62e22687ae17

MachOKitC
ca62b23c2ca6a34ecba08b7812afb4696e00be819c147b6580ab8a01a472653c

0.52.0

Choose a tag to compare

@p-x9 p-x9 released this 21 Jul 18:04
a224e54

What's Changed

  • Add link to PEKit repository by @p-x9 in #296
  • Expose cached dyld cache SPI getters by @p-x9 in #299
  • Optimize FullDyldCache mapping lookup by @p-x9 in #300
  • Add FullDyldCache address-to-subcache offset lookup APIs by @p-x9 in #301
  • Expose handle-scoped identity tokens for SPI clients by @p-x9 in #298
  • Avoid KeyPath overhead in full cache mapping lookup by @p-x9 in #302
  • Add FullDyldCache mapping lookup benchmark by @p-x9 in #303
  • Skip classic dyld info benchmarks for release comparison by @p-x9 in #304
  • Optimize FullDyldCache mapping lookup by @p-x9 in #305
  • Add manual benchmark workflow by @p-x9 in #306
  • Fix benchmark workflow package identity by @p-x9 in #307
  • Use Xcode 26 for benchmarks by @p-x9 in #308

Full Changelog: 0.51.0...0.52.0

MachOKit
3abd77c197a0106b893508f4a49381881ac1ddf9b144da2fd58baa0501db1b2f

MachOKitC
c8401d2844f291251000bb9872878cd1384c96d5bc25eafcace65a1365cb3802

0.51.0

Choose a tag to compare

@p-x9 p-x9 released this 21 Jun 06:04
62c42ed

What's Changed

  • perf: preload subcache headers in FullDyldCache to avoid repeated header reads by @p-x9 in #285
  • Improve dyld cache URL construction performance by @p-x9 in #286
  • Add benchmark infrastructure for performance work by @p-x9 in #287
  • Reuse dyld cache file handles when enumerating Mach-O files by @p-x9 in #288
  • Optimize classic rebase and bind segment lookup by @p-x9 in #289
  • Cache dyld cache mapping info sequences by @p-x9 in #291
  • Optimize closest symbol lookup by @p-x9 in #290
  • Avoid eager main cache creation for subcaches by @p-x9 in #292
  • Share dyld cache rebase resolution logic by @p-x9 in #293
  • Cache dyld mapping info arrays by @p-x9 in #294
  • Avoid segment array allocation in address lookups by @p-x9 in #295

Performance

This release includes broad performance improvements for Mach-O and dyld shared
cache analysis. Compared with 0.50.0, representative benchmarks show:

Area Benchmark p50 wall-clock improvement p50 instruction reduction
Full dyld cache mapping FullDyldCache.mappingInfo.lookup 99.7% faster 99.7% fewer
Full dyld cache mapping FullDyldCache.fileOffset.translate 99.5% faster 99.7% fewer
Full dyld cache lookup FullDyldCache.cache.forURL 95.2% faster -
Full dyld cache lookup FullDyldCache.cache.forOffset 93.0% faster -
Full dyld cache rebase FullDyldCache.resolveRebase 95.0% faster 95.3% fewer
Full dyld cache rebase FullDyldCache.resolveOptionalRebase 94.9% faster -
Full dyld cache image enumeration FullDyldCache.machOFiles.enumerate 93.9% faster 95.1% fewer
Dyld cache mapping DyldCache.mappingInfo.lookup 93.6% faster 96.0% fewer
Dyld cache mapping DyldCache.address.translate 92.9% faster -
Dyld cache mapping DyldCache.fileOffset.translate 92.2% faster -
Dyld cache rebase DyldCache.resolveRebase 87.4% faster 88.8% fewer
Dyld cache rebase DyldCache.resolveOptionalRebase 85.2% faster -
Dyld cache image enumeration DyldCache.machOFiles.enumerate 92.0% faster 93.0% fewer
Mach-O symbol lookup MachOFile.closestSymbol.repeated 91.6% faster 89.7% fewer
Mach-O address lookup MachOFile.contains.unslidAddress 76.2% faster 79.3% fewer
Mach-O address lookup MachOFile.fileOffset.translate 28.0% faster 30.8% fewer

Full Changelog: 0.50.0...0.51.0

MachOKit
c4139f563b56b9e6fd1bfdb9d0d85ae39b795c296ce24fbedc07536df4c90ff1

MachOKitC
8cdeb024ce530f96b40466957b0eb0839f52e0c139ae67fcfbfb75d091fceeb4

0.50.0

Choose a tag to compare

@p-x9 p-x9 released this 23 May 17:43
3f218ab

What's Changed

  • Add ReadableDescriptionConvertible extensions for types and flags by @p-x9 in #275
  • Add relative objc method type base address calculation by @p-x9 in #276
  • Add Sendable conformance to value-type public APIs by @p-x9 in #277
  • Add README for AI agents by @p-x9 in #278
  • Add getting-started documentation by @p-x9 in #279
  • fix: correct dependency type for LC_LOAD_WEAK_DYLIB by @Mx-Iris in #281
  • fix: resolve cross-subcache pointers in FullDyldCache rebase by @Mx-Iris in #280
  • docs: update README with additional related projects. by @p-x9 in #282

Full Changelog: 0.49.0...0.50.0

MachOKit
92b3f904e353fad0d289424d401016128da1e0278c5c0502278e5fe2a0c9babc

MachOKitC
3400bcac73e9bd27197bcadae91a59b50c3030a2905ab661e652dcd543158fb4

0.49.0

Choose a tag to compare

@p-x9 p-x9 released this 17 Apr 23:25
ff3c258

What's Changed

  • Avoid undocumented dyld helper usage while preserving shared cache APIs by @lynnswap in #272
  • Add known version of PrebuildLoaderSet from dyld-1376.7 by @p-x9 in #274

New Contributors

Full Changelog: 0.48.0...0.49.0

MachOKit
6c0329cc4ee6088049cdbbfbf68549f179ae19831e0bcc552566c723658f4c9d

MachOKitC
8f3468f360ff37a028bdcbb1cf71ed4160f07cfddc5416af0ec4f3079fd2528d

0.48.0

Choose a tag to compare

@p-x9 p-x9 released this 02 Apr 13:15
053c053

What's Changed

  • Documentation for MachOArchiveKit by @p-x9 in #268
  • Revert \Documentation for MachOArchiveKit\ by @p-x9 in #269
  • Documentation for MachOArchiveKit by @p-x9 in #270
  • fix: compilation on x86_64-swift-linux-musl by @asevko in #271

New Contributors

Full Changelog: 0.47.0...0.48.0

MachOKit
eb412752706963a51bd16d427aff4ea2b1e713aa899ff600dc5843bd52417ac8

MachOKitC
2fc66113ae19ae5a4148c6b34eb77fdb7c2e5199bd03655eb94e9db9fe221cb1

0.47.0

Choose a tag to compare

@p-x9 p-x9 released this 21 Mar 17:09
25e56cb

What's Changed

  • Fix TrieNode readNext method to ensure childrenOffset is within trieSize by @p-x9 in #264
  • Add doc comment note about archive payloads in fat binaries by @p-x9 in #266
  • Support for unix archive (.a) files by @p-x9 in #267

Full Changelog: 0.46.1...0.47.0

MachOKit
7880a2d67fd4ff4b2da48ff9b2fb226d2e9b0676f6d424852e0709236e7434b9

MachOKitC
a11dc00af9ecc688c43f8ab942bad9027c784f9e99085603600da72620a6cbb5

0.46.1

Choose a tag to compare

@p-x9 p-x9 released this 06 Feb 17:26
a17885f

What's Changed

  • Add support for C++ symbol demangling by @p-x9 in #260
  • Enhance documentation for FatFile and MachOKit with detailed comments by @p-x9 in #261
  • Support for older versions of objc_opt_t by @p-x9 in #262
  • Extract generic binary analysis utilities into a shared library by @p-x9 in #259
  • Fix __cxa_demangle function to avoid visionOS link errors by @p-x9 in #263

Full Changelog: 0.45.0...0.46.1

MachOKit
f4107cd6b8c8bd65cdfcc8777f99edcc90e6a1db9c1064919b33d52561b819ea

MachOKitC
a0ac1bcd2593e438d7ca30ab9e29da6471d75ab92533e818426ffff516a2b38a

0.45.0

Choose a tag to compare

@p-x9 p-x9 released this 14 Jan 15:50
c8c824e

What's Changed

  • Fix BOM handling in string table by @p-x9 in #258

Full Changelog: 0.44.0...0.45.0

MachOKit
5775d4f5bb58779ab6debd237e16d74310a66c5b175ee6d680b4c902e29bdd1f

MachOKitC
0cc03f4822e5aa80510cdd72f290a0783be7b31ced5782c869690c96b50af03a