v0.7.0 — measurement, data access, and the generic seam
Not the milestone originally planned under this number. What shipped is the work
that turned out to be ready — and three of the five items changed a plan rather
than executing one, which is the case for having a benchmark at all.
Added:
Harlock.Bench— render and diff timing over five canonical scenarios,
reporting percentiles rather than a mean, because a frame budget is about the
slow frames. Public, so app authors can measure their own views.- Wrapped
textarearenders 1.8x faster while editing and 3.3x faster
redrawing unchanged content. A single render calledvisual_rows/2three
times; it now keeps a one-entry memo keyed by the value itself, which cannot
go stale because a hit requires the key to match. tableacceptsrows: fn offset, limit -> rows, so a query- or
stream-backed table is asked only for what fits on screen.:offsetis
app-owned, since keyset pagination has no row index to centre on.Sub.source/3— subscribe to anything that delivers Erlang messages. This
removedSub.pubsubfrom the roadmap: Phoenix.PubSub delivers to whichever
process calledsubscribe, which is exactly whatsource/3arranges, and a
named constructor would have added a web-framework dependency to a terminal
UI library.- Property tests for the layout solver — twelve properties over generated
constraint lists. One of them was wrong before the solver was.
Also: a terminal reporting 0x0 no longer renders an empty frame, and the NIF
Makefile no longer confuses build host with build target.
Remaining pre-1.0 hardening moves to v0.8, which is closed to new features.
Full notes in CHANGELOG.md.