Releases: alandefreitas/futures
Releases · alandefreitas/futures
v0.1.5
🚀 Features
- ✨ support C++14
- 💫 concepts: C++20 uses concepts
- executor:
- ✨
execution_context
traits - 💫
execute
free-function - 🌟 library
thread_pool
- ✨
- 💫 iterator concept traits
- 🌟
futures::future_status
- ✨ throw: support no exceptions
- config:
- 🌟 symbol visibility macros
- ✨ public config
- 💫 modules: main headers for modules
⚡️ Performance
- allocator:
- default pool allocator used for eager futures
- use
boost.core
for allocator traits
- adaptors: continuation tags
- traits: simplify traits to improve compile-time
- tuple algorithm: use mp11 algorithms for tuples
- operation state: use never valueless
variant2
- empty base: use
boost.core
- operation states: use compressed tuples
- schedule: eager vs deferred benchmark
♻️ Refactor
- concepts: traits are the ones defined in terms of concepts
- traits:
future_like
traitsvoid_t
usesmake_void
(required by some older GCC versions)- future-like traits infer defaults from member functions
- partitioner:
- split headers
- concept is
partitioner_for
(🚨 BREAKING)- The concept used to be called
partitioner
- The concept used to be called
- templates:
- use terse concept syntax
- public functions use concepts
- This improves documentation while private functions use a single syntax for C++14 and C++20
- use
class
keyword to define templates
- executor:
- built-in
asio_executor
concept- This avoids including
asio
headers, which is what takes the longest in our time-traces
- This avoids including
- executors are
class
es (notstruct
s)
- built-in
- execute: only const executors are supported
- executors are const but execution contexts are usually not and can't execute anything
- includes: std includes removed
- algorithm: parallel algorithms filter forward iterators
- future:
- fundamental future types are
extern template
- use
boost.core
noncopyable
- fundamental future types are
- core:
- no dependencies on
std::future
at all- Even
future_status
is replaced without inclusion
- Even
- no dependencies on
- exceptions:
future
s always throw native exceptions- use boost
throw_exception
- deps: fetched asio is installed as bundled
- continue: template continuations support
- error: make error code is private
- config:
- require macros
- public config macros
- asio: compiled futures uses compiled asio
- split implementation files
- detail: regular
void
- adaptors:
- use
mp11
algorithm traits - next future traits
- use
- futures: move main module to root
📖 Documentation
- doxygen:
- update exclude folders
- namespace cppreference links
- adaptors indicate implementation detail types
- future.hpp is always parsed first
- disable autolink
- traits use std aliases
- benchmark: eager future benchmark has 30000 replicates
- template: not made with mdsplit
- algorithm_traits: trait derived classes
- readme: update badges
- macros:
- FUTURES_PREFER_STANDALONE_ASIO is in config reference
- doxygen does not expand requires
- add table of macros
- index:
- coverage badge
- update GHA badge
- banner has no link to self
- mkdocs: reference links are lowercase
- javadocs: fix javadocs typos
- when_any: result type has briefs
- reference:
- use default doxybook templates
- simplify indexes
- exception safety section
- refactor javadoc
- modules: launch module has no submodules
- snippets: snippets as unit tests
- badges: center badges
- motivation:
- merge motivation section
- simplify abstract
- mermaid: remove mkdocs-mermaid2-plugin
- quickstart:
- fix typo
- reflect bundled deps
- style: update banner
- abstract: improve code reuse
🎨 Style
- clang-format:
- exclude bundled directories
- insert braces
- set qualifier alignment
- update brace wrapping for classes
- rename root directories
📦️ Build
- linter:
- create glob includes
- fix unreachable headers
- print stats
- bundle deps
- If dependencies are not found, then use the bundled ones
- bundle standalone Asio
- This significantly reduces the number of bundled Boost dependencies
- dev-mode:
- clang flame graphs
- warning as error option
- amalgamator:
- remove single header build
- keep comments in bundled deps
🧪 Tests
- time-trace: clang version 9 for time-trace
- coverage: coverage includes tests
- integration: integration tests
- algorithm: split algorithm tests
- unit:
- aggregate headers
- bundle catch2
- tests per public header
🚦 Continuous Integration
- docs:
- doxygen from source
- cache doxybook installation
- cache doxygen
- use doxybook develop in the general case
- workflow concurrency
- enable docs workflow in develop
- build:
- apt-get has no cache
- coverage disables Release
- build jobs run on all branches
- check conventional commit
- junit test
- update macos
- update actions
- no header package
- time-trace: combine time-trace results
- matrix:
- c++ standards
- test bundled dependencies
- deps: cache dependencies
- config: test all compiler variants
- codecov: setup codecov
🏗️ Chores
- bump version to 0.1.5
- examples: include macros
v0.1.4
🚀 Features
- ✨ concepts: C++20 uses concepts
- config:
- 💫 symbol visibility macros
- 🌟 public config
- ✨ modules: main headers for modules
⚡️ Performance
- allocator:
- default pool allocator
- use boost.core
- adaptors: continuation tags
- traits: simplify traits
- tuple algorithm: use mp11
- operation state: use never valueless variant
- empty base: use boost.core
- operation states: compressed tuples
♻️ Refactor
- continue: template continuations support
- error: make error code is private
- config:
- require macros
- public config macros
- asio: compiled futures uses compiled asio
- split implementation files
- detail: regular void
- exceptions: use boost throw_exception
- future: use boost.core noncopyable
- adaptors:
- mp11 algorithm traits
- next future traits
- templates: use class keyword to define templates
- futures: move main module to root
📖 Documentation
- modules: launch module has no submodules
- snippets: snippets as unit tests
- doxygen: traits use std aliases
- badges: center badges
- motivation:
- merge motivation section
- simplify abstract
- reference:
- exception safety section
- refactor javadoc
- mermaid: remove mkdocs-mermaid2-plugin
- quickstart:
- fix typo
- reflect bundled deps
- macros: add table of macros
- style: update banner
- abstract: improve code reuse
🎨 Style
- rename root directories
- clang-format:
- insert braces
- set qualifier alignment
- update brace wrapping for classes
📦️ Build
- linter:
- create glob includes
- fix unreachable headers
- print stats
- print stats
- bundle standalone Asio
- bundle deps
- dev-mode:
- clang flame graphs
- warning as error option
- amalgator: remove single header build
- amalgamator: keep comments in bundled deps
🧪 Tests
- integration: integration tests
- algorithm: split algorithm tests
- unit:
- aggregate headers
- bundle catch2
- tests per public header
🚦 Continuous Integration
- build:
- build jobs run on all branches
- check conventional commit
- junit test
- update macos
- update actions
- no header package
- matrix:
- c++ standards
- test bundled dependencies
- deps: cache dependencies
- config: test all compiler variants
- codecov: setup codecov
🏗️ Chores
- examples: include macros
Full Changelog: v0.1.3...v0.1.4
v0.1.3
constexpr
algorithms- More efficient deferred and ready futures
- Better Asio + CMake integration
- Stress tests
- Better CMake integration
- Single-header workflow
v0.1.2
- Algorithm traits
- Lock-free algorithms
- Reduce build dependencies
- Inline deferred futures
- Atomic continuations
- GDB pretty printers
- Variant inline storage and operation state
v0.1.1
- Basic lock-free eager futures
- Support for single-header version
- Dependency on small containers removed
Initial release
v0.1.0 Add sync waiting functions