Worker batching used to wait for 64KB / 4096 newlines before
flushing. A program like
(let loop ((n 0))
(when (zero? (modulo n 10000))
(display "Emitted at iteration: ") (display n) (newline))
(loop (+ n 1)))
emits ~25 bytes every 10K iterations, so the user saw nothing for
several seconds — fox reported "this used to work and doesn't seem
to anymore" because the first emission was buried in the batch
buffer.
Added a 100ms wall-clock check alongside the existing size /
newline thresholds. The first chunk to arrive triggers a flush
(lastFlushTime starts at 0), and low-rate streams cap at ~10
flushes/sec. High-rate streams still hit the byte / newline ceilings
first so chunk batching for tight (display) loops is unaffected.
Verified headlessly: the infinite-emitter program now shows the
first emission within a frame, subsequent ones streaming live as
the loop iterates.
|
||
|---|---|---|
| .. | ||
| fonts/chunkfive | ||
| playground | ||
| repl | ||
| 404.html | ||
| bend.html | ||
| index.html | ||
| lumbda-logo-green.png | ||
| lumbda-logo.png | ||
| lumbda-whitepaper.html | ||
| lumbda-whitepaper.pdf | ||
| robots.txt | ||
| style.css | ||