Repository navigation
sheet.fill: a formula filled down a column by the kernel JIT [skip ci] - #378
Merged
Merged
Conversation
ymote
force-pushed
the
feat/sheets-engine-service
branch
from
October 8, 2026 08:41
5847816 to
76e1d7a
Compare
ymote
force-pushed
the
feat/sheet-fill-kernel
branch
from
October 8, 2026 08:41
fe78cd9 to
f8668d9
Compare
ymote
force-pushed
the
feat/sheets-engine-service
branch
from
October 8, 2026 09:27
76e1d7a to
53a354c
Compare
ymote
force-pushed
the
feat/sheet-fill-kernel
branch
from
October 8, 2026 09:27
f8668d9 to
470ed7e
Compare
ymote
force-pushed
the
feat/sheets-engine-service
branch
from
October 8, 2026 09:31
53a354c to
ff2d18c
Compare
ymote
force-pushed
the
feat/sheet-fill-kernel
branch
from
October 8, 2026 09:31
470ed7e to
bf650ce
Compare
ymote
force-pushed
the
feat/sheets-engine-service
branch
from
October 8, 2026 09:52
ff2d18c to
fe6f602
Compare
ymote
force-pushed
the
feat/sheet-fill-kernel
branch
from
October 8, 2026 09:52
bf650ce to
47bcca4
Compare
The numeric subset of gridcraft's own parsed formula AST (arithmetic, @-intersected column refs, SIN/COS/EXP/LN/SQRT/ABS/MIN/MAX) lowers to an f64 Splash compute kernel -- compiled once per formula text, cached on the workbook, split across threads from 65536 rows -- and anything outside it falls back to the engine's evaluator row by row, so fill always computes what recalc would; `accelerated` in the reply says which path ran. Measured by the probe this productionizes (M-series, 1M rows): the evaluator 505 ms, the f64 kernel 2.9 ms on 8 threads (173x), agreeing to 1e-9. f64 buffers bind as the compute crate's word pairs (low word first), packed around input_u32/output_u32. cargo test -p octosense-sheets-service: 7 tests, including kernel-vs- evaluator parity on 10k rows in the service itself, the cached second fill, and the honest unaccelerated fallback (CONCAT). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ymote
force-pushed
the
feat/sheet-fill-kernel
branch
from
October 8, 2026 10:08
47bcca4 to
b1c7cbb
Compare
Contributor
Author
|
Local CI passed on b1c7cbb ( GitHub would run for this PR: desktop.yml, phone.yml, apps.yml. Merged on this local pass (macOS runner queue); GitHub CI runs on the merge commit on main.
Notes:
Native GitHub acceptance passed on the same head: embedded-browser.yml. |
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.
Stacked on #377 (do NOT delete that branch on merge — retarget this to main first; the #108 lesson). Phase 2's first slice of ADR 0013.
sheet.fill {book, column, rows, formula}: the numeric subset of gridcraft's parsed AST (arithmetic,@-column refs, SIN/COS/EXP/LN/SQRT/ABS/MIN/MAX) lowers to an f64 Splash compute kernel — compiled once per formula text, cached per workbook, threaded from 65k rows — and anything outside the subset falls back to the engine's evaluator row by row, sofillalways computes exactly what recalc would (acceleratedin the reply tells the truth).Measured by the probe this productionizes: 1M rows, evaluator 505 ms → f64 kernel 2.9 ms on 8 threads (173×), agreeing to 1e-9. f64 buffers bind as the compute crate's word pairs (low first) over
input_u32/output_u32.Tests: 7 (service total), including in-service kernel-vs-evaluator parity on 10k rows, the cached second fill, and the honest CONCAT fallback.
setup.py --check --cargoandnative_apps.py --checkpass (compute crate rides the existing makepad pin +.sourcespatch).🤖 Generated with Claude Code