Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions Documentations/Evolutions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
| [0003](0003-generic-type-specialization.md) | 泛型类型特化 | In Progress | 用户在 Inspector 的 Specialization tab 为泛型类型选定具体类型组合,特化结果作为 sidebar 子节点呈现,泛型参数被替换且 metadata 字段填上真实数值。 |
| [0004](0004-differentiable-box-lazy-cellvm.md) | DifferentiableBox 与 Lazy Cell ViewModel 渲染范式 | Draft | 在 `RuntimeViewerArchitectures` 引入 `DifferentiableBox<Model>`,把任意 `Hashable` 领域模型适配为 DifferenceKit 的 `Differentiable`,使表格与大纲视图的 Rx 数据源走「轻量身份元素 + cell 级惰性 ViewModel」。 |
| [0006](0006-mcp-transport-bind-failure-teardown.md) | MCP Transport 绑定失败的资源回收与状态如实化 | Implemented | 绑定失败改为显式 `start()` 判定:失败即回收 transport(线程 56→0)、`serverState` 如实 `.stopped`、端口文件带所有权守卫不误删他人文件。残余 5.57 MiB 为上游 SwiftMCP adapter↔engine 引用环,与线程数硬编码一并列为上游跟进项。 |
| [0007](0007-objc-relationship-index-returns-to-application.md) | ObjC 关系索引归还应用侧 | In Progress | MachOObjCSection 0003 的下游适配:库不再存继承 / 遵守反向表,改由应用在 `prepare()` 期间从 `ObjCIndexingEvent` 事件流重建。核心风险是事件 handler 目前条件安装(7 处 section 创建仅 1 处传进度流),不解耦会让后台索引的 image 静默失去关系数据。同批次删除只写不读的工厂聚合。 |

> 0000 与 0001 采用早期格式,正文没有状态字段,此处如实标为「未标注」。按「旧文档原地不动」的约定不回填。

Expand Down
2 changes: 1 addition & 1 deletion Documentations/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

## 提案(Evolutions)

见 [`Evolutions/README.md`](Evolutions/README.md)。当前 5 篇:Bonjour 可靠性、IDA 兼容导出、后台索引、泛型类型特化、DifferentiableBox 渲染范式。
见 [`Evolutions/README.md`](Evolutions/README.md)。当前 7 篇:Bonjour 可靠性、IDA 兼容导出、后台索引、泛型类型特化、DifferentiableBox 渲染范式、MCP Transport 绑定失败回收、ObjC 关系索引归还应用侧

## 设计与实现计划(Plans,归档)

Expand Down
54 changes: 27 additions & 27 deletions RuntimeViewerCore/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 22 additions & 4 deletions RuntimeViewerCore/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ let package = Package(
),
remote: .package(
url: "https://github.com/MxIris-Reverse-Engineering/MachOKit",
exact: "0.51.101",
exact: "0.52.100",
),
),
.package(
Expand All @@ -94,7 +94,7 @@ let package = Package(
),
remote: .package(
url: "https://github.com/MxIris-Reverse-Engineering/MachOObjCSection",
exact: "0.7.103",
exact: "0.8.103",
),
Comment on lines 95 to 98
),
.package(
Expand All @@ -104,7 +104,17 @@ let package = Package(
),
remote: .package(
url: "https://github.com/MxIris-Reverse-Engineering/MachOSwiftSection",
exact: "0.14.1",
exact: "0.15.0",
),
),
.package(
local: .package(
path: "../../swift-semantic-string",
isRelative: true,
),
remote: .package(
url: "https://github.com/MxIris-Reverse-Engineering/swift-semantic-string",
from: "0.3.0",
),
),
.package(
Expand Down Expand Up @@ -173,8 +183,13 @@ let package = Package(
"RuntimeViewerCommunication",
.product(name: "MachOKit", package: "MachOKit"),
.product(name: "MachOObjCSection", package: "MachOObjCSection"),
.product(name: "ObjCDeclarationRendering", package: "MachOObjCSection"),
.product(name: "ObjCIndexing", package: "MachOObjCSection"),
.product(name: "ObjCInterface", package: "MachOObjCSection"),
.product(name: "MachOSwiftSection", package: "MachOSwiftSection"),
.product(name: "OutputTransformer", package: "MachOSwiftSection"),
.product(name: "OutputTransformer", package: "swift-semantic-string"),
.product(name: "ObjCOutputTransformer", package: "MachOObjCSection"),
.product(name: "SwiftOutputTransformer", package: "MachOSwiftSection"),
.product(name: "SwiftDeclaration", package: "MachOSwiftSection"),
.product(name: "SwiftDeclarationRendering", package: "MachOSwiftSection"),
.product(name: "SwiftIndexing", package: "MachOSwiftSection"),
Expand Down Expand Up @@ -225,6 +240,9 @@ let package = Package(
dependencies: [
"RuntimeViewerCore",
"RuntimeViewerCommunication",
.product(name: "OutputTransformer", package: "swift-semantic-string"),
.product(name: "ObjCOutputTransformer", package: "MachOObjCSection"),
.product(name: "SwiftOutputTransformer", package: "MachOSwiftSection"),
],
),
.testTarget(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import Foundation
import ObjCIndexing

extension ObjCIndexingEvent.Phase {
/// The RuntimeViewer loading phase this indexing phase maps onto.
///
/// The library names its phases without the `ObjC` qualifier — it only
/// ever indexes Objective-C — while `RuntimeObjectsLoadingProgress.Phase`
/// spans both the ObjC and Swift halves of a load, so it keeps the
/// qualifier to stay unambiguous.
var loadingPhase: RuntimeObjectsLoadingProgress.Phase {
switch self {
case .indexingSubclasses: .indexingObjCSubclasses
case .loadingClasses: .loadingObjCClasses
case .loadingProtocols: .loadingObjCProtocols
case .indexingConformances: .indexingObjCConformances
case .loadingCategories: .loadingObjCCategories
}
}
}
Loading
Loading