Skip to content

Commit d9769ca

Browse files
committed
release: mirage 1.8.1 — ICFG from live Magellan stitching
- mirage icfg consumes CodeGraph::direct_call_icfg_edges(): call edges join real callsite to callee entry; return edges join callee return to resume - mirage paths --inter-procedural enumerates cross-function paths over the stitched ICFG with per-block function provenance - Drop Mirage CFG-writing path; Magellan is sole owner of persisted CFG - Schema parity: coord_* absent, lean cfg_blocks contract; strict clippy clean
1 parent b65dab7 commit d9769ca

39 files changed

Lines changed: 1577 additions & 1231 deletions

CHANGELOG.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,40 @@ All notable changes to Mirage are documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.8.1] - 2026-06-20
9+
10+
### Added
11+
12+
- **`mirage paths --inter-procedural`** now enumerates cross-function paths from live Magellan call stitching:
13+
- Reuses the shared path engine over a projected ICFG instead of falling back to function-local CFG-only traversal.
14+
- Path output now carries per-block function provenance when traversing across caller, callee, and return-to-resume edges.
15+
16+
### Changed
17+
18+
- **ICFG stitching now consumes live Magellan callsite data** (`src/cfg/icfg.rs`, `src/cli/cmds/icfg.rs`, `Cargo.toml`):
19+
- `mirage icfg` now builds against the local Magellan crate and uses `CodeGraph::direct_call_icfg_edges()` when stitching interprocedural edges.
20+
- Call edges now connect the caller's real `CallSite` block to the callee's real function-entry sentinel instead of incorrectly jumping from the caller function entry.
21+
- Return edges now connect callee `return` blocks back to the caller's real continuation block when available, with the older function-exit fallback retained only for cases where precise stitching data is unavailable.
22+
- Added a regression test that indexes real Rust code through Magellan, opens the same database through Mirage, and asserts exact callsite/resume stitching.
23+
24+
- Mirage's SQLite reader now matches Magellan's current `cfg_blocks` schema:
25+
- `cfg_blocks` reads no longer require persisted `coord_x`/`coord_y`/`coord_z` columns.
26+
- Test fixtures and local schema helpers now model Magellan's current `cfg_hash` / `statements` / `cfg_condition` shape instead of the old coordinate-heavy variant.
27+
- Coverage and backend parity tests now explicitly assert that `coord_*` columns are absent from the current schema contract.
28+
- CFG/status compatibility cleanup:
29+
- `DatabaseStatus.cfg_edges` remains a normal compatibility field for Magellan-backed status output instead of being marked deprecated while still in active use.
30+
- Legacy in-memory `coord_*` fields are now documented as analysis-time values, not persisted database columns.
31+
- Source hygiene cleanup:
32+
- Removed a dead AST CFG builder field and cleaned up stale doctest placeholders that used `unimplemented!()`.
33+
- Replaced stale wording that implied temporary or 4D-backed behavior where Mirage now only reads Magellan-managed CFG data.
34+
- Refreshed doctest examples to the current `mirage::...` crate path and removed the last warning suppressions in `src`, so the current tree passes strict clippy without `#[allow(...)]` escape hatches.
35+
36+
### Removed
37+
38+
- Deprecated internal CFG-writing compatibility path (`store_cfg`) and its self-contained tests. Mirage now treats Magellan as the sole owner of persisted CFG blocks.
39+
- Unused standalone database bootstrap helper (`create_minimal_database`); Mirage only supports reading Magellan-managed databases.
40+
- Unused `hash_changed` compatibility helper and related deprecated re-export surface that no longer participated in Mirage's live read path.
41+
842
## [1.8.0] - 2026-06-08
943

1044
### Added

Cargo.lock

Lines changed: 115 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mirage-analyzer"
3-
version = "1.8.0"
3+
version = "1.8.1"
44
edition = "2021"
55
rust-version = "1.70"
66
authors = ["Mirage Contributors"]
@@ -28,10 +28,10 @@ clap = { version = "4.5", features = ["derive", "env"] }
2828
rusqlite = { version = "0.31", features = ["bundled"] }
2929

3030
# Magellan for inter-procedural analysis (required for CFG data)
31-
magellan = { version = "4.2.0", default-features = false, features = ["sqlite-backend"] }
31+
magellan = { path = "../magellan", default-features = false, features = ["sqlite-backend"] }
3232

3333
# sqlitegraph for GraphBackend trait
34-
sqlitegraph = { version = "3.2.5", default-features = false, features = ["sqlite-backend"] }
34+
sqlitegraph = { version = "3.3.1", default-features = false, features = ["sqlite-backend"] }
3535

3636
# Serialization
3737
serde = { version = "1.0", features = ["derive"] }

0 commit comments

Comments
 (0)