You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/RELEASE_NOTES/v11.17.0.md
+12-9Lines changed: 12 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,18 +45,21 @@ We are excited to showcase a new demo application developed in cooperation with
45
45
***Virtual File Tree:** A `TreeList` navigation component that dynamically reflects the state of the in-memory Git repository.
46
46
47
47
### ⚛️ Core Refactoring: Architectural Precision
48
-
We performed a massive, deep-dive refactoring of the core rendering pipeline and worker architecture. These changes eliminate race conditions, reduce memory overhead, and ensure buttery-smooth performance.
48
+
We executed a massive, deep-dive refactoring of the core rendering pipeline and worker architecture. These changes eliminate race conditions, reduce memory overhead, and ensure deterministic state synchronization.
49
49
50
-
***Rendering Pipeline:**
51
-
***Unified Update Strategy:** We merged the manual DOM update path (`App.applyDeltas`) with the VDOM update pipeline. Both now use a standardized `updateVdom` action, ensuring consistent `requestAnimationFrame` synchronization across the board.
52
-
***Read/Write Queues:** The Main thread (`Neo.Main`) now strictly enforces a consolidated **Read/Write** queue model, replacing the legacy triple-queue system. This maximizes DOM batching efficiency.
53
-
***Zero-Delta Optimization:**`Neo.worker.Manager` now intelligently intercepts and drops "empty" updates before they needlessly occupy the main thread.
54
-
***AutoMount as Delta:** The "magic" `autoMount` process has been transformed into a standard `insertNode` delta operation, unifying the mounting logic.
55
-
***Mount Refactor:**`mount()` is now a direct, lightweight alias for `initVnode(true)`, removing the legacy `VdomLifecycle` overhead for unmounted components.
50
+
***Rendering Pipeline Unification:**
51
+
***Unified Update Strategy:** Previously, manual DOM updates (`App.applyDeltas`) and VDOM updates used separate communication channels (`updateDom` vs `updateVdom`). We have merged them into a single `updateVdom` pipeline. Now, every DOM change—whether from a VDOM diff or a direct delta—benefits from the same `requestAnimationFrame` synchronization and Promise-based reply mechanism.
52
+
***Read/Write Queue Model:** We overhauled the Main thread's task management (`Neo.Main`). The legacy triple-queue system (`read`, `update`, `write`) has been consolidated into a strict **Read/Write** model. This aligns with modern DOM batching best practices (preventing layout thrashing) and simplifies the execution flow.
53
+
***Zero-Delta Optimization:** The `WorkerManager` now intelligently inspects VDOM diffs before they leave the worker thread. "Empty" updates (zero deltas) are intercepted and dropped immediately, preventing them from clogging the Main thread's message queue.
54
+
55
+
***Mounting & Lifecycle:**
56
+
***AutoMount as Delta:** The `autoMount` process, which previously used a special "magic placeholder" logic, has been transformed into a standard `insertNode` delta operation. This unifies the mounting logic with the rest of the delta update system.
57
+
***Mount Refactor:**`mount()` is now a direct, lightweight alias for `initVnode(true)`. We removed the `hasUnmountedVdomChanges` mechanism from `VdomLifecycle`, eliminating the overhead of tracking state changes for unmounted components.
56
58
57
59
***State & Scroll Management:**
58
-
***Save Scroll Position:**`scrollTop` and `scrollLeft` are now first-class citizens in the VNode structure. This allows scroll state to be captured live (`onScrollCapture`) and **automatically restored** when components are moved or re-mounted (e.g., during drag-and-drop or tab switching).
59
-
***Grid Scroll Sync:** Fixed a critical race condition in Buffered Grids by enforcing bidirectional synchronization of scroll state between the Main thread and VDOM worker.
60
+
***Bidirectional Scroll Sync:** We addressed a critical race condition in the Buffered Grid where rapid scrolling caused flickering. The new architecture enforces **bidirectional synchronization**:
61
+
1.**Preservation:** When the VDOM worker calculates a patch, it now respects the *live* scroll position captured by the Main thread (`onScrollCapture`), preventing stale VDOM state from resetting the browser's scroll position.
62
+
2.**First-Class State:**`scrollTop` and `scrollLeft` are now first-class properties in the VNode structure, ensuring they are preserved during component moves (e.g., drag-and-drop).
60
63
61
64
***Architecture & Memory:**
62
65
***Explicit Window IDs:** We are migrating away from the ambiguous `'main'` destination string. Cross-worker communication now prioritizes explicit `windowId` routing, essential for robust Multi-Window applications.
0 commit comments