- Added a performance optimization, where the atomic invalidate index load can be avoided after writing wraps
- Fixed an omission where the invalidate index was sharing a cacheline with other members, leading to unnecessary performance loss
- Added a performance optimization, where the atomic read index load can be avoided after reading wraps
- A critical linear space calculation bug that could cause data corruption was fixed
- Added the ability to configure the library through CMake
- Performance and code conciseness improvements
- A critical bug where valid data would be invalidated if the write ended exactly on the end of the buffer was fixed - @KOLANICH in lfbb_cpp
- Set
LFBB_MULTICORE_HOSTED
tofalse
by default. This is a more embedded-friendly configuration which doesn't impact hosted platforms performance significantly if the library is left unconfigured but avoids wasting space on embedded devices. When using the library on hosted platforms passingLFBB_MULTICORE_HOSTED
astrue
is now advised for maximum performance.
- Improved performance by using a write_wrapped flag instead of infering write wraps
- Refactored for performance improvements and code quality
- Improved documentation in regards to configuration
- Switched away from needing a configuration header to defining configuration options by the build system or before library inclusion
- Documentation and configuration header improvements
- Important documentation fixes regarding multicore vs DMA use
- Switched to using C11 standard alignas specifier instead of manually adding padding to the structure for cacheline alignment
- Added optional cacheline alignment enabling multicore safe use on hosted environments and embedded environments that do not manually invalidate cache or disable data buffer caching with the MPU/MMU in a lock free manner
- Switched to hierarchical CMake setup with tests conditionally pulled in if the library is not pulled in as a dependency
- Improved readability of ReadAcquire
- Initial release