• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nebkat / dart-bjdata
85%

Build:
DEFAULT BRANCH: main
Repo Added 02 Oct 2025 09:26PM UTC
Files 12
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • bjdata-draft-4-soa
  • main
  • nd-array-decoding

13 Sep 2026 09:12PM UTC coverage: 84.81% (+15.2%) from 69.61%
34783141233

push

github

nebkat
feat: Choose type markers by size rather than by Dart type

Adds BjdataConfig.compactTypes, on by default, letting the encoder write a
value as whatever type stores it in the fewest bytes instead of the one its
Dart type implies. Values are always preserved exactly; what can change is the
Dart type they decode back to, which is what the setting turns off.

A List<int> of small numbers is written as a uint8 array, halving it. A
Uint32List whose values all fit a byte is written as uint8, quartering it. A
Float64List whose values all survive float16 is written as float16, and so is
a scalar double, which took nine bytes to say 1.0.

Which form wins is genuinely data-dependent rather than a rule of thumb: a
strong type must be wide enough for its largest value and pays that width
throughout, while a generic array stores each value at its own width. So both
are measured for plain lists, and [1, 2, 3, 1000000] stays generic because a
uint32 array of it would be larger. Typed data is only ever narrowed, never
turned generic: passing a Uint32List is itself a request for a typed array, and
a generic array beats one only on a handful of elements.

Nothing is re-typed unless that saves bytes. A positive Int64List is left as
int64 rather than swapped for the same-width uint64, a tie leaves the encoding
alone, an empty buffer keeps its type, and byte is never re-chosen since it is
already the narrowest width and the specification gives it a meaning of its own.

Floats narrow only where every value survives the narrower type unchanged, so
a column of real measurements stays float64 while a column of halves does not.

Packed table columns and N-dimensional arrays narrow too. A column has no Dart
type implying a width, so it is always as narrow as its values allow, as it
already was for integers.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

167 of 172 new or added lines in 6 files covered. (97.09%)

96 existing lines in 4 files now uncovered.

1139 of 1343 relevant lines covered (84.81%)

1.55 hits per line

Relevant lines Covered
Build:
Build:
1343 RELEVANT LINES 1139 COVERED LINES
1.55 HITS PER LINE
Source Files on main
  • Tree
  • List 12
  • Changed 6
  • Source Changed 6
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
34783141233 main feat: Choose type markers by size rather than by Dart type Adds BjdataConfig.compactTypes, on by default, letting the encoder write a value as whatever type stores it in the fewest bytes instead of the one its Dart type implies. Values are always... push 13 Sep 2026 09:14PM UTC nebkat github
84.81
34782965160 bjdata-draft-4-soa Merge 395e946f1 into 9f089f355 Pull #2 13 Sep 2026 09:10PM UTC web-flow github
84.81
34777224814 bjdata-draft-4-soa Merge 25053e669 into 9f089f355 Pull #2 13 Sep 2026 07:18PM UTC web-flow github
84.38
34777030814 bjdata-draft-4-soa Merge 69d1e93d8 into 9f089f355 Pull #2 13 Sep 2026 07:15PM UTC web-flow github
84.38
34776824898 bjdata-draft-4-soa Merge ee2b73f51 into 9f089f355 Pull #2 13 Sep 2026 07:11PM UTC web-flow github
84.38
34774812854 bjdata-draft-4-soa Merge a1906e802 into 9f089f355 Pull #2 13 Sep 2026 06:31PM UTC web-flow github
84.31
34773046213 bjdata-draft-4-soa Merge 7ef21d8b8 into 9f089f355 Pull #2 13 Sep 2026 05:56PM UTC web-flow github
84.38
34743517291 bjdata-draft-4-soa Merge e2abe7d7c into 9f089f355 Pull #2 13 Sep 2026 06:46AM UTC web-flow github
84.36
33981760136 main docs: Fix swapped int16/uint16 markers in README The type tables listed `u` as int16 and `I` as uint16; it is the other way round, matching the specification and `BjdataMarker`. Also correct the `int` marker set, which had the same swap and was m... push 05 Sep 2026 05:43PM UTC nebkat github
69.61
32915377642 bjdata-draft-4-soa Merge 53ff1b35f into a82a0bc01 Pull #2 26 Aug 2026 12:32AM UTC web-flow github
84.5
See All Builds (19)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc