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

gaissmai / bart / 40369200251
95%
main: 95%

Build:
Build:
LAST BUILD BRANCH: devel
DEFAULT BRANCH: main
Ran 26 Oct 2026 05:30PM UTC
Jobs 1
Files 15
Run time 1min
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

26 Oct 2026 05:24PM UTC coverage: 94.741% (+0.2%) from 94.583%
40369200251

Pull #440

github

gaissmai
refactor: Remove bart.Fast, rely on the rank cache in sparse.Array256

sparse.Array256 carries its own rank cache now, so a rank needs one
popcount instead of four. Get and MustGet take about 35-45% less time
than the former Rank based versions (microbenchmarks, AMD EPYC 9275F)
and are inlinable. This makes the per-node [256]uint8 cache of
bart.Fast redundant.

Remove the Fast table and FastNode together with their generated code,
tests, example, benchmarks, generator entries and NODETYPES.md.
bart.Table and bart.Lite remain.

Keep bart.Fast as a deprecated generic type alias for bart.Table, so
existing code keeps compiling. The alias carries a //go:fix inline
directive, "go fix ./..." (Go 1.26 or later) rewrites bart.Fast to
bart.Table.

Lookups:
- Contains, Lookup and lookupPrefixLPM call Children.Get(octet) instead
  of Children.Test(octet) followed by MustGetChild(octet).
- Contains: drop the "longest-prefix matching" wording from the doc,
  the method reports any match.

Node code:
- Move InsertChild, GetChild, MustGetChild, DeleteChild and ChildCount
  into the common template, they are identical for all node types.
- Generate AllIndices, LookupIdx and Lookup for LiteNode too and drop
  the SKIP_LITE markers. LiteNode.MustGetPrefix returns the zero value.
- Write the BartNode prefix methods by hand in bart.go.
- Rename LiteNode.Prefixes.Count to the unexported count.

Tests and benchmarks:
- Rename the Bart benchmarks to Table and add Lite counterparts,
  remove the Fast benchmarks.
- Drop BitSet256.Rank from the must-inline list, it is no longer on the
  lookup path.
- Run the sparse.Array256 subtests in parallel.

README: describe the two remaining tables, remove the Fast comparison
and the NODETYPES.md link, use Lite.Contains for the benchmark teaser.
Pull Request #440: Deprecate Fast as a Table alias and cache sparse-array ranks

86 of 88 new or added lines in 8 files covered. (97.73%)

2 existing lines in 1 file now uncovered.

3819 of 4031 relevant lines covered (94.74%)

0.95 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
93.07
-0.05% internal/nodes/litemethodsgenerated.go

Coverage Regressions

Lines Coverage ∆ File
2
97.3
-2.7% internal/sparse/array256.go
Jobs
ID Job ID Ran Files Coverage
1 40369200251.1 26 Oct 2026 05:30PM UTC 15
94.74
GitHub Action Run
Source Files on build 40369200251
  • Tree
  • List 15
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #440
  • PR Base - main (#37041164765)
  • Delete
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