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.0.0 is the first public release — until now callonce lived only as a proposal draft and an internal dependency.

Releases

VersionDateSourceChecksums
1.0.02026-09.tar.gz · .zip.tar.gz.sha256 · .zip.sha256

Each archive contains the full source tree — src/memoized_invoke.hh, test/, examples/, CMakeLists.txt, Doxyfile.in, the Conan recipe and LICENSE. Extract and follow the installation guide; nothing beyond a C++20 compiler and CMake 3.20+ is required to build the tests and examples.

Verifying a download

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

Then extract and follow the installation guide.

Release notes

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.