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

vbpf / prevail / 28972716456
87%

Build:
DEFAULT BRANCH: main
Ran 08 Jul 2026 08:27PM UTC
Jobs 2
Files 79
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

08 Jul 2026 08:16PM UTC coverage: 86.611% (+0.1%) from 86.497%
28972716456

push

github

web-flow
Replace Boost.Multiprecision with a portable int128 (#1189 phase 1) (#1190)

Phase 1 of #1189 (hide Boost from prevail's public headers). num_big.hpp used
boost::multiprecision::int128_t/uint128_t on compilers without a native __int128
(MSVC), which leaked Boost.Multiprecision into the public ABI and forced MSVC
consumers of the installed library to have Boost.

Add a Boost-free 128-bit integer (arith/num_int128.hpp): two-limb unsigned/signed
types with two's-complement semantics matching __int128 exactly (wrap-around
add/sub/mul, truncation-toward-zero div/mod via binary long division, arithmetic
right shift, signed/unsigned compares, narrowing conversions), all constexpr.
GCC/Clang keep using native __int128; the fallback is used only where there is no
builtin. The __builtin_*_overflow paths are now gated on PREVAIL_HAS_NATIVE_INT128
rather than __GNUC__.

Validation:
- test_int128.cpp checks every operation against native __int128 as an oracle
  over a large value/shift matrix (407,992 assertions).
- Built the whole suite with -DPREVAIL_FORCE_CUSTOM_INT128 (custom type used
  throughout the verifier): results are bit-identical to the native build
  (1811 cases, 417,410 assertions, 0 real failures).
- The MSVC (build_windows) CI already compiles and runs this path on the real
  target.

Boost is still a dependency via bitset_domain (dynamic_bitset) and zone_domain/
adapt_sgraph (flat_map), so find_dependency(Boost) stays for now; those are the
remaining #1189 phases.

- num_int128.hpp: include <concepts> (std::integral) and <compare> (operator<=>
  result types) so the installed header compiles standalone rather than relying
  on transitive includes.
- test_int128.cpp: the signed oracle computed a+b / -a / a<<s etc. in signed
  __int128, which is UB on overflow (e.g. -INT128_MIN). Two's-complement add/
  sub/mul/negate/left-shift share the unsigned bit pattern, so compute those
  expectations in unsigned (ua/ub); signed >> and / % stay signed (well-... (continued)

103 of 105 new or added lines in 1 file covered. (98.1%)

9263 of 10695 relevant lines covered (86.61%)

6421158.68 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
98.1
src/arith/num_int128.hpp
Jobs
ID Job ID Ran Files Coverage
1 run-Release - 28972716456.1 08 Jul 2026 08:27PM UTC 79
85.72
GitHub Action Run
2 run-Debug - 28972716456.2 08 Jul 2026 09:20PM UTC 77
84.91
GitHub Action Run
Source Files on build 28972716456
  • Tree
  • List 79
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28972716456
  • 0a43de77 on github
  • Prev Build on main (#28958483115)
  • Next Build on main (#28980383561)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc