lumbda/www
russell@unturf.com cdb4fc9715
asm streaming: recycle the 64 KB output buffer after each flush
A throttled forever-counter on the asm tier ran for ~5.7 s and
then trapped 'index out of bounds' — the WAT writes output to a
fixed 64 KB region at 0x10000–0x1FFFF, and a fast (display X)
(newline) loop accumulates faster than the buffer can drain. After
about 6,400 ticks at ~10 chars each,  overflowed the
region into the source buffer at 0x20000 and the next i32.store8
fell off linear memory.

Fix is a contract change on emit_chunk: its signature picks up an
i32 return — 1 tells the WAT to recycle (zero output_len AND
flush_start), 0 keeps the original 'just advance flush_start'
semantics so callers that read lumbda_output_ptr/len after eval
still see the full buffer.

The asm loader returns 1 from emit_chunk, accumulating every
flushed slice into refs.accumulated. evalLisp's return value is now
refs.accumulated + the trailing (still-unflushed) buffer slice
rather than just the lumbda_output_ptr/len slice — caller still
gets the complete output, the WAT-side buffer just keeps recycling.

Test stubs already declared emit_chunk() {} which returns
undefined — JS->wasm i32 coercion turns that into 0, preserving
the no-recycle behavior they expected. unit/integration suites
(31 tests total) still pass.

Trailing flush in lumbda_eval also honors the return value: if the
host consumed, zero both offsets so the final lumbda_output_ptr/len
read returns 0 bytes (loader already accumulated the trailing
slice — no need to re-deliver). Earlier draft of this patch
double-emitted the trailing slice because we read it through both
the emit_chunk path and the final-buffer path.
2026-06-15 06:36:00 -04:00
..
fonts/chunkfive www: ChunkFive for logo/titles; normalize asm references to "GNU asm" 2026-04-19 16:08:02 -04:00
playground asm streaming: recycle the 64 KB output buffer after each flush 2026-06-15 06:36:00 -04:00
repl asm streaming: recycle the 64 KB output buffer after each flush 2026-06-15 06:36:00 -04:00
404.html www/: static docroot for lumbda.com 2026-04-19 11:21:56 -04:00
bend.html bend: dual-port worker (8320 wire + 8321 http) — playground onramp 2026-06-14 17:32:46 -04:00
index.html playground: free-form code option + encrypted vault, single-scroll layout 2026-06-14 12:56:25 -04:00
lumbda-logo-green.png www + whitepaper: adopt custom λ mark from MPS, green, 3× wordmark size 2026-04-19 17:32:43 -04:00
lumbda-logo.png www + whitepaper: adopt custom λ mark from MPS, green, 3× wordmark size 2026-04-19 17:32:43 -04:00
lumbda-whitepaper.html www: HTML whitepaper + prose rewrite avoiding "to be" and "the" 2026-04-19 16:23:56 -04:00
lumbda-whitepaper.pdf www: canonical slug /lumbda-whitepaper.pdf + embed uncloseai.js 2026-04-19 16:17:43 -04:00
robots.txt www/: static docroot for lumbda.com 2026-04-19 11:21:56 -04:00
style.css logo: revert artwork to source orientation (was over-flipped) 2026-04-19 17:42:14 -04:00