Repository navigation
Harden resource lifetimes and reduce renderer snapshot memory - #117
Merged
elcritch merged 5 commits intoSep 25, 2026
Merged
Conversation
Restore shared-runner coverage and fix container removal, tab sizing, table redraws, terminal errors, and modal cleanup. Add repeated process-resource checks, diagnostics, an import coverage guard, and ARC/ORC sanitizer jobs. Stream URL assets with bounded bytes, admission, and concurrency. Compact unchanged renderer frame metadata to reduce queued incremental snapshots. Keep native rendering on the UI thread under ORC until its cross-thread ownership is safe. Update PLAN.md and document measurements and remaining aggregate cache work. Validated on macOS/arm64 with Nim 2.2.12: - atlas-run tests: four runners and 1,463 tests passed. - ARC and ORC ownership sanitizer subsets: 90 tests passed each. - Example bundle compiled; memory benchmark completed. - Import coverage, workflow syntax, formatting, and whitespace checks passed.
This was referenced Sep 25, 2026
elcritch
added a commit
that referenced
this pull request
Sep 25, 2026
* Fix clipped Moe help close glyph * Improve Kosmo Git diff review and Moe logging * Fix Kosmo X11 Backspace and Tab text input * Test Kosmo Return and help resize regressions * Harden resource lifetimes and reduce renderer snapshot memory (#117) * Harden Merenda resource lifetimes and reduce snapshot memory Restore shared-runner coverage and fix container removal, tab sizing, table redraws, terminal errors, and modal cleanup. Add repeated process-resource checks, diagnostics, an import coverage guard, and ARC/ORC sanitizer jobs. Stream URL assets with bounded bytes, admission, and concurrency. Compact unchanged renderer frame metadata to reduce queued incremental snapshots. Keep native rendering on the UI thread under ORC until its cross-thread ownership is safe. Update PLAN.md and document measurements and remaining aggregate cache work. Validated on macOS/arm64 with Nim 2.2.12: - atlas-run tests: four runners and 1,463 tests passed. - ARC and ORC ownership sanitizer subsets: 90 tests passed each. - Example bundle compiled; memory benchmark completed. - Import coverage, workflow syntax, formatting, and whitespace checks passed. * Convert shared test import checker to NimScript * Restore ORC renderer threads and preserve window lifetime * Remove experimental native dynlib support * Focus the work plan on near-term workstreams * Filter native control text across input backends * Update render tests for shared glyph views * Reuse Chronos worker and stabilize column sizing test * Disconnect Git status proxies before teardown * Use platform shortcut modifiers in Kosmo search test * Use platform shortcuts in Kosmo search coverage * Keep Kosmo shortcuts working in focused terminals * Use platform shortcut modifiers in Kosmo tab tests * Scope sanitizer suppressions to static font caches * Suppress Nim ORC runtime function-type UBSan diagnostic * Scope ORC leak checks around dependency and lifetime allocations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
URL downloads previously buffered entire bodies before enforcing size limits, unchanged views inflated queued renderer snapshots, and renderer teardown could acknowledge release before GPU work and renderer destruction finished. This change bounds asset loading, reduces incremental snapshot storage, and preserves window lifetime through renderer cleanup.
RChan, including ownership-safe replacement and channel teardown.useNativeDynlibmode, dynlib staging task,sharedlibdependency feature, fallback renderer/resource paths, and conditional test exclusions. FigDraw is compiled directly into the app; the obsolete define reports a migration error.Tracks FigDraw branch
fix/acyclic-render-ownershipfrom elcritch/figdraw#96 until release 0.43.0. That dependency patch leaves two explicit acyclic markers on recursive render trees, breaks the Siwin window/callback/renderer cycle with a borrowed window, and adds GPU completion operations. Renderer and backend types remain cycle-capable.Validated locally on macOS/arm64 with Nim 2.2.12:
atlas-run testsafter removing dynlib support: all four runners passed, with 1,467 tests and no failures or skips.Linux/X11 sanitizer jobs are configured but were not run locally. Vulkan validation was unavailable because the local workspace lacks
pkg/vulkan. Windows/X11 OS-driven close notification ordering still needs an earlier barrier in Siwin.Depends on #114; this PR targets its branch to isolate the reliability and memory changes.