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

YACLib / YACLib / 30641923209
99%

Build:
DEFAULT BRANCH: main
Ran 31 Jul 2026 03:36PM UTC
Jobs 1
Files 88
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

31 Jul 2026 03:12PM UTC coverage: 99.434%. Remained the same
30641923209

push

github

web-flow
Mark Future/Promise/Task/InstrusivePtr by [[clang::trivial_abi]] (#278)

### Purpose

#248

### Related Information

- [ ] Design document: ...
- [x] Bench PR: 

I ran the following
[benchmark](https://gist.github.com/Shpana/143a0c2a7aad031cae40a7c1055592ee).
In the benchmark, the vector is filled with a large number of
`Futures`/`Promises`/etc; then `shrink_to_fit` and `reserve` are
repeated many times to force the vector to reallocate a buffer.

The results are presented in the table

| Type | IntrusivePtrs | Tasks | Futures | Promises | Contracts |

|:------------------|--------------:|-------------:|-------------:|-------------:|-------------:|
| baseline | 37089ms | 43720ms | 46707ms | 42157ms | 90228ms |
| | 37075ms | 43797ms | 46749ms | 42244ms | 89861ms |
| | 36915ms | 44378ms | 47247ms | 42175ms | 89653ms |
| | 36930ms | 43638ms | 46558ms | 42173ms | 90420ms |
| | 38055ms | 45715ms | 49415ms | 44220ms | 93900ms |
| baseline (avg) | **37212ms** | **44249ms** | **47335ms** | **42593ms**
| **90812ms** |
| | | | | | |
| trivial_abi | 37105ms | 43970ms | 46348ms | 42991ms | 89400ms |
| | 37119ms | 43804ms | 46500ms | 42005ms | 90960ms |
| | 37437ms | 43838ms | 46272ms | 42261ms | 90138ms |
| | 37164ms | 43775ms | 46552ms | 42026ms | 89541ms |
| | 37145ms | 43829ms | 46154ms | 41949ms | 88813ms |
| trivial_abi (avg) | **37194ms** | **43843ms** | **46365ms** |
**42246ms** | **89770ms** |
| diff (avg) | -0.04% | -0.9% | -2.0% | -0.8% | -1.1% |

According
[to](https://libcxx.llvm.org/DesignDocs/UniquePtrTrivialAbi.html),
performance should increase by about 1%.

I don't exactly know why the benchmark for `IntrusivePtr` doesn't show
sufficient performance difference, but attribute applies correctly 1)
All conditions match
https://clang.llvm.org/docs/AttributeReference.html#trivial-abi; 2)
`static_assert(__is_trivially_relocatable(Future<int>), "")` doesn't
fail; 3) [Check
assembly](https://gist.github.com/Shpana/2363ebf90cd4267ce9bb021cadec911e)

### T... (continued)

2110 of 2122 relevant lines covered (99.43%)

1808702.43 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30641923209.1 31 Jul 2026 03:36PM UTC 88
99.43
GitHub Action Run
Source Files on build 30641923209
  • Tree
  • List 88
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 173697b7 on github
  • Prev Build on main (#27293293670)
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