Skip to content

Releases: btctcn/swift-isolation-map

0.3.0

Choose a tag to compare

@btctcn btctcn released this 08 Sep 14:15
a766f23

Highlights

  • Real Swift 6 escape-hatch detection with a genuine SE-0337 severity downgrade (#118, #119, #153): @unchecked Sendable, nonisolated(unsafe), and @preconcurrency (declaration/conformance/import) are now surfaced as their own escapeHatches findings, and a real @preconcurrency softening — on a callee's own declaration, up its class hierarchy, or via a @preconcurrency import — downgrades that edge's risk for real (structuralRisk/severityRationale keep the "why" traceable). .uncheckedSendable's own mutable-stored-property detection is real too, walking a type's members and superclass chain.
  • --platform <name> flag (#147) for a modern multiplatform Xcode scheme offering several simultaneously-valid Simulator destinations (iOS + visionOS on one scheme, confirmed against a real app); compiler-argument resolution for Xcode projects generalized beyond iOS Simulator to the other three real Simulator SDK families — tvOS/watchOS/visionOS (#141), verified against four independent real corpora.
  • Real #if <name> custom build-condition evaluation (#134), replacing a hardcoded true; a real #if targetEnvironment(macCatalyst) misclassification fixed (#146).
  • Total sourcekitd unavailability is now a hard failure instead of a silent, incomplete report (#143); SwiftPM compiler-argument resolution's own run-to-run non-determinism fixed with a real-file-count-scaled retry (#149).
  • Several further real declaration/USR-matching and stderr-noise correctness fixes (#133, #136, #138, #144, #145).

Full changelog

0.2.1...0.3.0

0.2.1

Choose a tag to compare

@btctcn btctcn released this 26 Aug 18:47
8360fe0

Added

  • --sort=file|severity output flag: orders edges in mermaid/dot/json output by location.file (then line) or by risk level (high first). Purely presentational, like --severity -- never changes which edges are included or the exit code.

Full diff: 0.2.0...0.2.1

0.2.0

Choose a tag to compare

@btctcn btctcn released this 26 Aug 18:00
c3d5cea

Highlights

  • swift-build direct-API compiler-argument resolution promoted to the default path for Xcode projects (#108) — faster and more correct than the xcodebuild -verbose path it replaces, byte-for-byte edge-parity verified against two real 2000+-file corpora. The old xcodebuild-based path stays in the tree as an unreachable-from-the-CLI legacy fallback.
  • Closure-level isolation attribution completed end to end: a real @globalActor declared in a compiled dependency is now recognized (#40), plus the full de-isolating mirror direction — Task.detached, non-main DispatchQueues, @concurrent (#41). Both real-corpus-verified with zero regressions to the existing rules.
  • A real declaration-extraction leak fixed (#109): local let/var/nested funcs inside a function or closure body were being misattributed as phantom members of the enclosing type — 22% of all declarations on one real ~2200-file corpus.
  • WordPress-iOS/Project-Iris honest-vs-flagged edge-asymmetry root-caused and fixed (#107).
  • Dozens of further real declaration/USR-matching correctness fixes across Objective-C/Swift interop edge cases (bridged extern constants, protocol witnesses, subscripts, multi-target declaration aliasing, and more), plus index-store scoping and DerivedData isolation hardening for shared/multi-run environments.

Full changelog

0.1.0...0.2.0

0.1.0

Choose a tag to compare

@btctcn btctcn released this 12 Aug 12:29
6e17b11

First tagged release. No packaged distribution yet — build from source (see README Quick start).

What's in v0.1:

  • Project/scheme resolution (.xcodeproj, .xcworkspace, Package.swift)
  • Index-store discovery and staleness detection
  • A hybrid libIndexStore + SwiftSyntax isolation-inference engine
  • An external-isolation oracle for compiled dependencies (CocoaPods, XCFrameworks, SDK frameworks) — bulk symbolgraph-extract, with a live sourcekitd fallback
  • mermaid / dot / json output
  • Automatic startup prerequisite checks with clear diagnostics

Not yet built: diff subcommand, GitHub Action, migration-debt map, packaged distribution (v0.2, see README Roadmap).