Skip to content

v0.7.0 — measurement, data access, and the generic seam

Latest

Choose a tag to compare

@thatsme thatsme released this 28 Jul 05:21

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 textarea renders 1.8x faster while editing and 3.3x faster
    redrawing unchanged content. A single render called visual_rows/2 three
    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.
  • table accepts rows: fn offset, limit -> rows, so a query- or
    stream-backed table is asked only for what fits on screen. :offset is
    app-owned, since keyset pagination has no row index to centre on.
  • Sub.source/3 — subscribe to anything that delivers Erlang messages. This
    removed Sub.pubsub from the roadmap: Phoenix.PubSub delivers to whichever
    process called subscribe, which is exactly what source/3 arranges, 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.