Skip to content

perf: Hot reload no longer holds the Editor's main thread after a compile to capture sources or to list assemblies - #3293

Merged
hatayama merged 16 commits into
mainfrom
perf/hot-reload-capture-off-main-thread
Oct 12, 2026
Merged

hatayama merged 16 commits into
mainfrom
perf/hot-reload-capture-off-main-thread

Conversation

@hatayama

@hatayama hatayama commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

Merge status

User Impact

Before After PR
After each compile, the domain load ran the whole capture on the main thread: 975 ms after a body edit and 1435 ms after a file add or remove on the trial project The main thread reads the capture's inputs (7 ms) and the copy runs on a pool thread. get-compile-status holds the compile's completion until the capture ends (at most 30 s), so commands sent after uloop compile behave as before #3280, #3282, #3283, #3285
The capture asked Unity for the assembly list, and the Package Manager about each assembly and source, all main thread only The capture lists the compiled dlls on disk, reads each changed assembly's sources from its PDB, and answers package questions from one package list read with its inputs #3282, #3283
After each domain reload, the first step that needed the compilation assembly list called CompilationPipeline.GetAssemblies() on the main thread, usually in the warm-up The list is rebuilt on a pool thread from the list the previous domain saved, the dlls on disk and their PDBs. The warm-ups wait for the rebuild. When it kept nothing, they skip the items that need the list instead of asking Unity, and the first hot reload asks Unity #3279, #3281, #3286, #3288
A pause point re-armed on the first update tick after a reload waited for the whole capture It no longer waits for the capture when the file on disk matches the compiled PDB #3280, #3285
— New debug log entries: hot_reload_compilation_list_reconstructed (with reconstructMs, backgroundMs, mainThreadWaitMs), _saved, _save_skipped, _save_failed, and the capture breakdown's listing, PDB and compiler-PDB figures. docs/vibe-logs.md describes them #3281, #3283, #3286, #3291, #3292

Changes in behavior

  • Read-only package assemblies are classified by the first source their PDB lists, instead of the first source Unity lists. For an assembly whose sources span locations through an asmref, the two can differ: on the trial project 331 assemblies are classified read-only, against 335 on the first phase's head.

Known limitations

  • After a package update renames a package folder, the saved list names reference paths that are gone. The first domain after the update therefore refuses the rebuilt list (reference_missing), its first hot reload asks Unity on the main thread, and that hot reload saves a new list. The domains after it rebuild the list again. The other reasons that come from an old saved list heal the same way.
  • The compiler's PDB is found only while Library/Bee holds the compiler's output of the same build. Without it, an assembly whose PDB was rewritten has no snapshot of its files without a method body until its next compile, so an edit to only such a file is not picked up when --files is omitted, and the rebuild refuses the list (pdb_documents_incomplete).

Verification

  • CI on 935ead91 (dispatched on the integration branch): Unity EditMode Tests (2022.3.62f3, 6000.3.15f1, 6000.5.8f1, latest 6000.7, and the Release code optimization leg) and Unity Compile Check (2022.3.62f1, 6000.5.4f1) passed.
  • The cross-check tests rebuild every compiled assembly of the development project from its PDB and compare each entry with CompilationPipeline.GetAssemblies() in every field. They also compare the sources the capture lists with Unity's for every assembly:
Unity Rebuilt From the compiler's PDB Refused Listed (Unity) Mismatches
2022.3 115 2 0 115 (115) 0
6000.3 130 4 0 130 (130) 0
6000.5 135 5 0 135 (135) 0
6000.7 129 7 0 129 (129) 0
  • Trial project, medians on 935ead91 (body edit ×3, file add or remove ×3):
Body edit File add or remove
Main thread time at the domain load 7 ms 7 ms
Capture on the pool thread 384 ms 1444 ms
Rebuilt list kept yes yes (23 assemblies read from the compiler's PDB)
Snapshot files reused from the previous compile 1292 10054 (same as main)
  • The first hot reload after a compile took 1982 ms against a 1002 ms median for the next three (1.98×). An edit to only a file without a method body in an assembly whose PDB is rewritten is picked up without --files.
  • Cost to the compile itself: in one Editor session, compiles with hot reload and pause point enabled and disabled in the tool settings were alternated (4 each). With both disabled, neither the capture nor the rebuild runs. The domain reload took a median 11.91 s enabled and 11.97 s disabled, so the background work adds no measurable time to the reload.

Closes #3222

…s branch's tree

The squash commit has the same tree as 974a2b5, which this branch already contains, so the merge records it without changing any file.
…compiled files instead of asking Unity on the main thread (#3283)
…blies whose debug symbols a post-processor rewrote (#3291)
@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: hatayama/unity-cli-loop/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 134e5aea-4131-45ef-bba3-8e19b893871c

📥 Commits

Reviewing files that changed from the base of the PR and between 12492b5 and 935ead9.


⛔ Files ignored due to path filters (25)
  • Assets/Tests/Editor/HotReload/CecilPdbRewrite.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadCaptureAssemblyEnumeratorTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssemblyListStoreTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssemblyReconstructionCrossCheckTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssemblyReconstructionTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadCompilerOutputDocumentsTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadLiveSourceBomFixture.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadLiveSourceVerificationTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPdbCompilationInfoTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadSnapshotCaptureInputsTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadSnapshotLookupPathTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotCaptureTestDoubles.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCaptureAssembly.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCaptureAssemblyEnumerator.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblyListStore.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblyRebuilder.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblyReconstruction.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationListRefill.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilerOutputDocuments.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPackageFolderMatch.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPdbCompilationInfo.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSavedCompilationList.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSnapshotCaptureInputs.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSnapshotLookupPath.cs.meta is excluded by none and included by none
  • Packages/src/Editor/ToolContracts/HotReloadSnapshotCaptureCoordination.cs.meta is excluded by none and included by none

📒 Files selected for processing (92)
  • Assets/Tests/Editor/CompileStatusBridgeCommandTests.cs
  • Assets/Tests/Editor/HotReload/CecilPdbRewrite.cs
  • Assets/Tests/Editor/HotReload/HotReloadCaptureAssemblyEnumeratorTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssembliesTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssemblyCacheTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssemblyListStoreTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssemblyReconstructionCrossCheckTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompilationAssemblyReconstructionTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompiledSourceCrossCheckTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompilerOutputDocumentsTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompositionRootTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadDefaultFilesTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadDomainTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadEditorStartupTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadIncrementalSnapshotCaptureTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadLiveSourceBomFixture.cs
  • Assets/Tests/Editor/HotReload/HotReloadLiveSourceVerificationTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPatcherContractTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPatcherTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPdbCompilationInfoTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPdbDocumentIndexTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPdbDocumentTableTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPublicizedTargetWarmUpItemTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSharedCompilerWarmUpReferenceSourceTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSnapshotAssemblyEnumerationTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSnapshotCaptureInputsTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSnapshotEditedDuringCompileTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSnapshotLookupPathTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotCaptureTestDoubles.cs
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotCaptureTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotterTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadTransformWorkerWarmUpItemTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadWarmUpContextSourceTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadWarmUpE2ETests.cs
  • Assets/Tests/Editor/HotReload/HotReloadWarmUpEditorHooksTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadWarmUpItemsTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadWarmUpTestDoubles.cs
  • Assets/Tests/Editor/HotReload/HotReloadWarmUpTests.cs
  • Assets/Tests/Editor/HotReload/PausePointScriptPathFormTests.cs
  • Packages/src/Editor/FirstPartyTools/FirstPartyToolsEditorStartup.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadCallSiteWarmUpItem.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadCompositionRoot.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadEditorStartup.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadGroupProcessor.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadPdbDocumentWarmUpItem.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadPublicizedTargetWarmUpItem.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadReferencedMethodSetWarmUpItem.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadSharedCompilerWarmUpReferenceSource.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadTools.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadTransformWorkerWarmUpItem.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadWarmUp.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadWarmUpContext.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadWarmUpContextSource.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadWarmUpEditorHooks.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadWarmUpItemOutcome.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadWorkerNoticeAppender.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/IHotReloadWarmUpItem.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Patching/HotReloadPausePointPort.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCaptureAssembly.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCaptureAssemblyEnumerator.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblies.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblyCache.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblyListStore.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblyRebuilder.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssemblyReconstruction.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationListRefill.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompiledSourceMap.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilerOutputDocuments.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadConstants.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPackageFolderMatch.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPdbCompilationInfo.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPdbDocumentIndex.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPdbDocumentTable.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSavedCompilationList.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSnapshotCaptureInputs.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSnapshotCaptureStats.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSnapshotLookupPath.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSnapshotMissReason.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSnapshotSourceCheck.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceBaseline.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotCapture.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotCopier.Incremental.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotCopier.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotLayout.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotter.Stamp.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotter.cs
  • Packages/src/Editor/Infrastructure/Api/CompileStatusBridgeCommand.cs
  • Packages/src/Editor/ToolContracts/HotReloadSnapshotCaptureCoordination.cs
  • docs/adr/0014-capture-the-hot-reload-source-snapshot-off-the-main-thread.md
  • docs/hot-reload.md
  • docs/vibe-logs.md

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.



📝 Walkthrough
📝 Walkthrough

Walkthrough

The change moves hot-reload source snapshot capture to a background task, adds DLL/PDB-based source discovery and compilation-list reconstruction, and coordinates capture and compilation-list readiness with compile status, pause points, and warm-up.

Changes

Hot-reload source capture

Layer / File(s) Summary
PDB-based source discovery and snapshot capture
Packages/src/Editor/FirstPartyTools/HotReload/Shared/*, Assets/Tests/Editor/HotReload/*
Snapshot capture enumerates compiled DLL/PDB pairs, reads source documents from PDBs, and can use matching compiler output when a PDB has lost documents. Source checks account for package roots, and capture records immutable-package markers and DLL stamps.
Background capture and reader coordination
Packages/src/Editor/FirstPartyTools/HotReload/HotReloadEditorStartup.cs, HotReloadCompositionRoot.cs, Patching/HotReloadPausePointPort.cs, Packages/src/Editor/Infrastructure/Api/CompileStatusBridgeCommand.cs, Packages/src/Editor/ToolContracts/HotReloadSnapshotCaptureCoordination.cs, Assets/Tests/Editor/HotReload/*, Assets/Tests/Editor/CompileStatusBridgeCommandTests.cs, docs/*
Capture starts asynchronously, supports waiting and cancellation, and holds compile completion for up to 30 seconds. Pause points can use PDB-verified live source while capture is in flight. Compile-status responses include the capture-hold state.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~60 minutes

Change: Feature

Compilation-list reconstruction

Layer / File(s) Summary
Persisted compilation-list reconstruction
Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadCompilationAssembly*.cs, HotReloadSavedCompilationList.cs, HotReloadCompilationListRefill.cs, HotReloadConstants.cs, Assets/Tests/Editor/HotReload/HotReloadCompilationAssembly*Tests.cs, docs/vibe-logs.md
The change saves compilation assembly and reference metadata, validates saved lists, and reconstructs changed assemblies from PDBs. Refill checks cache generations and compilation status before keeping and saving the rebuilt list.
Compilation-list-aware warm-up
Packages/src/Editor/FirstPartyTools/HotReload/HotReloadEditorStartup.cs, HotReloadWarmUp*.cs, IHotReloadWarmUpItem.cs, HotReload*WarmUpItem.cs, HotReloadSharedCompilerWarmUpReferenceSource.cs, Assets/Tests/Editor/HotReload/HotReload*WarmUp*Tests.cs
Startup waits for compilation-list refill before starting warm-up. Warm-up items declare whether they need the list, and list-dependent items are skipped when the list is unavailable.

Sequence Diagram(s)

sequenceDiagram
  participant HotReloadEditorStartup
  participant HotReloadSourceSnapshotCapture
  participant HotReloadSnapshotCaptureInputs
  participant HotReloadSourceSnapshotter
  participant HotReloadCaptureAssemblyEnumerator
  participant CompileStatusBridgeCommand
  HotReloadEditorStartup->>HotReloadSourceSnapshotCapture: StartIfNeeded
  HotReloadSourceSnapshotCapture->>HotReloadSnapshotCaptureInputs: ReadOnMainThread
  HotReloadSourceSnapshotCapture->>HotReloadSourceSnapshotter: Run capture on a background task
  HotReloadSourceSnapshotter->>HotReloadCaptureAssemblyEnumerator: List DLL/PDB candidates and read sources
  CompileStatusBridgeCommand->>HotReloadSourceSnapshotCapture: Read compile-completion hold state
Loading

Possibly related PRs

  • hatayama/unity-cli-loop#2117: Introduced PDB-validated source snapshots and startup capture, which this change updates to use background capture and coordination.

Merge Risk: ⚪ Minimal · up to 935ea

This change moves hot-reload snapshot capture off the main thread and rebuilds the compilation list from saved data. Compile-status holds are capped at 30 seconds, and list-dependent warm-up work is skipped when no list is kept. The review found no concrete defect, so the change appears ready to merge.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 935ea

The inspected paths retain compiled-build checks, source verification, and reader coordination. No introduced security vulnerability was established. Interruption behavior and trust in local build metadata remain important limitations of this assessment.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The inspected exposure is concentrated in the Editor process, its compiled build files, and filesystem locations readable under its existing identity. PDB-derived paths influence source reads; snapshot destination filenames are hashes, so document-path traversal does not directly become destination-path traversal. No additional privilege grant was established.

Trust Boundaries and Controls

  • observed — PDB build identifiers and source checksums provide consistency checks, not authentication of local build metadata. Source mapping uses lexical project/package prefixes; the filesystem helper subsequently canonicalizes the path without checking containment. The mapper's acceptance rules predate this PR, while PDB-based snapshot enumeration is new.

Resilience and Maintainability Implications

  • observed — Compile-start and reload hooks signal capture cancellation without draining the task. Cancellation is checked between assembly candidates, while an individual assembly copy, cleanup, and stamp publication receive no cancellation token. This leaves interruption containment dependent on domain teardown and execution ordering; overlapping successor writers were not demonstrated.

Hardening Proposals

  • proposed — Consider checking canonical source-path containment against the intended project and registered package roots before copying PDB-derived documents. This would reduce reliance on metadata path hygiene; it is a hardening proposal, not an established privilege-escalation finding.
  • proposed — Validate interruption and writer handoff on supported Unity runtimes, including cancellation during the final assembly and reload during temporary-directory publication. If domain teardown does not guarantee writer termination, use an explicit handoff or ownership mechanism.

Pre-merge checks | Passed 4 | Inconclusive 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage Inconclusive Docstring coverage is 61.98% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 313 functions across 50 files. (42 skippe… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly summarizes the primary change: moving hot-reload source capture and assembly listing off the Editor main thread after compilation.
Description check Passed The description directly explains the changes, performance impact, behavior, limitations, and verification results for off-main-thread hot-reload capture and compilation-list rebuilding.

Full details: Docstring Coverage

Explanation

Docstring coverage is 61.98% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 313 functions across 50 files. (42 skipped: 3 unsupported, 39 over the file limit.)


✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hatayama
hatayama merged commit f3ed577 into main Oct 12, 2026
31 checks passed
@hatayama
hatayama deleted the perf/hot-reload-capture-off-main-thread branch October 12, 2026 09:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Source snapshot capture blocks the main thread for ~2 s after each script compile in a large project

1 participant