Releases: p-x9/MachOKit
Release list
0.52.2
What's Changed
Full Changelog: 0.52.1...0.52.2
MachOKit
bfce40d41561346513b97aaa2410863d869fc2d92df7027791677cb0ea2a6de3
MachOKitC
f2e557758644497ea95fcf450c78748736b6593650c7c6a253f85a15987178e1
0.52.1
What's Changed
Full Changelog: 0.52.0...0.52.1
MachOKit
0ff7bd59ab20052d311eb7c59e132a3bbcc2ac8892219363542b62e22687ae17
MachOKitC
ca62b23c2ca6a34ecba08b7812afb4696e00be819c147b6580ab8a01a472653c
0.52.0
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
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
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
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
What's Changed
- Documentation for
MachOArchiveKitby @p-x9 in #268 - Revert \Documentation for
MachOArchiveKit\ by @p-x9 in #269 - Documentation for
MachOArchiveKitby @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
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
What's Changed
- Add support for C++ symbol demangling by @p-x9 in #260
- Enhance documentation for
FatFileandMachOKitwith detailed comments by @p-x9 in #261 - Support for older versions of
objc_opt_tby @p-x9 in #262 - Extract generic binary analysis utilities into a shared library by @p-x9 in #259
- Fix
__cxa_demanglefunction to avoid visionOS link errors by @p-x9 in #263
Full Changelog: 0.45.0...0.46.1
MachOKit
f4107cd6b8c8bd65cdfcc8777f99edcc90e6a1db9c1064919b33d52561b819ea
MachOKitC
a0ac1bcd2593e438d7ca30ab9e29da6471d75ab92533e818426ffff516a2b38a