Releases: reach2sayan/FastCast
Releases · reach2sayan/FastCast
Release list
FastCast 1.1.1
Full Changelog: v1.1.0...v1.1.1
FastCast 1.1.0
Added
- C++11 support. The header now compiles from C++11 upward (previously C++20 was
required because ofrequiresclauses,if constexprand the_v/_ttrait aliases).
Overload selection usesstd::enable_if; the static/dynamic split uses tag dispatch. fast_cast<void *>(p)(andconst void *) now returns the most-derived object, exactly
likedynamic_cast<void *>. Previously it silently degraded tostatic_cast<void *>.- Fallback to plain
dynamic_caston ABIs where the vtable-pointer trick is not known to
hold (FASTCAST_SUPPORTEDundefined), instead of defining nothing. FASTCAST_CPLUSPLUS(language version detection that also works on MSVC without
/Zc:__cplusplus) andFASTCAST_NO_GLOBAL_USING(opt out of the globalusings).noexcepton the pointer andshared_ptroverloads.- The static path is
constexprin every supported standard; the reference overload from
C++14; the dynamic path from C++23. - CMake:
install()rules and aFastCastConfig.cmakepackage (find_package(FastCast)→
FastCast::FastCast), CPack tarball/zip packaging,FASTCAST_BUILD_EXAMPLES,
FASTCAST_INSTALL,FASTCAST_WARNINGS_AS_ERRORSandFASTCAST_ENABLE_SANITIZERSoptions.
The project version is read from the header macros. - Tests: coverage for
shared_ptr,const,void *, cross-casts with non-zero offsets,
virtual bases, sibling subobjects of the same type, cache alternation between success and
failure, cache churn across many types, casting during construction, a randomised parity
test againstdynamic_cast, multi-threaded correctness, compile-time type/noexcept/
constexprchecks, and compile-failure tests for thestatic_asserts. examples/basic.cpp, built and run byctest.- CI: GCC, Clang, AppleClang and MSVC at C++11/14/17/20/23 with warnings as errors;
ASan + UBSan jobs; an install +find_packagejob; aclang-formatcheck; a tag-driven
release workflow that attaches the packaged tarball, zip and single header.
Changed
std::bytereplaced byunsigned charin the pointer arithmetic (C++11).- Benchmark: duplicate benchmark registrations removed;
volatilecompound assignments
(deprecated in C++20) rewritten. - README rewritten: installation options, API reference, semantics vs
dynamic_cast, how
the cache works, caveats, support matrix, testing and release instructions.
Full Changelog: v1.0.0...v1.1.0
FastCast 1.0.0
Full and final release. Header-only high-performance polymorphic cast alternative to dynamic_cast.
- Pointer, reference, and std::shared_ptr casting
- Compile-time fast paths for identity and static_cast-safe conversions
- Per-thread vtable offset caching with failure caching
- C++17 minimum (C++23 constexpr enhancements)