Downloads

callonce ships as source — a single header plus its tests, examples, CMake build files and the Conan recipe. There is no compiled artefact to download; the library is #include <memoized_invoke.hh>. 1.1.0.0 is the first public release — until now callonce lived only as a proposal draft and an internal dependency.

Each archive contains src/memoized_invoke.hh, examples/, CMakeLists.txt, Doxyfile.in, the Conan recipe and LICENSE. test/ is not part of it — clone the repository instead if you want to build and run the unit test suite. Extract and follow the installation guide; nothing beyond a C++20 compiler and CMake 3.20+ is required to build the examples.

Source

1.1.0.1 · 2026-09-26Latest
FileSizeSHA-256Download
.tar.gz
30.9 KB
3baf763aa8dff203f97d91bf5f104fa2343b5294078437726c5685a32acc4516.sha256
.zip
42.4 KB
70448f0ed9f9da9ec1b7654c530e2dfdfb83af041dc9df42b14def2752574a28.sha256
1.1.0.0 · 2026-09-15
FileSizeSHA-256Download
.tar.gz
31.3 KB
0fc580ae90d23bc55e6850375358a7843e72a2eb7c9281f688e0deaa96409a34.sha256
.zip
42.9 KB
ead4146e4112ad37df44d781d2ad303b99c9ca60e72d069e4c8d580c78efcb2c.sha256

Verifying a download

sha256sum -c callonce-1.1.0.0.tar.gz.sha256
# callonce-1.1.0.0.tar.gz: OK

Then extract and follow the installation guide.

Release notes

1.1.0.0 — first public release. The reference implementation for the std::memoized_invoke proposal, packaged as a standalone library.

  • memoized_invoke<ExecutionPolicy, F, Args...> — run any callable at most once per argument set, cache the result, reset(), and re-run when the arguments change. Covers free / member function pointers, lambdas, functors, std::function and std::bind_front results, with CTAD deducing every template parameter.
  • Two execution policies — single_threaded (zero overhead, the CTAD default) and lock_free (atomic CAS + C++20 atomic::wait) — selected via make_memoized.
  • Fixed: a lock_free waiter woken because the winning thread's callable threw used to fall through without running the callable itself, so the next read of the cache threw std::bad_optional_access and terminated the worker thread. check_and_call() now re-enters and retries, matching the documented "another thread can retry" contract. A 200-iteration regression test covers it. (See the blog post.)
  • A generated API reference (Doxygen — class, collaboration, include and call/caller graphs) alongside the hand-written Reference Manual, and three worked examples each with a byte-exact smoke test.

Binary packages (.deb, .rpm) are not planned — callonce is header-only, so there is nothing to package beyond the source.

See also

  • Installation — how to integrate callonce once you have the source.
  • API Documentation — the generated reference.
  • Impressum — contact information.
  • Blog — release announcements are posted here as they happen.