What's Changed
- Add CMake files, dummy sources, clang-format & github format check by @Bronek in #2
- Add basic monadic operations by @Bronek in #3
- Add coverage reporting, small updates in README by @Bronek in #7
- Add clang to github workflow by @Bronek in #9
- Move clang options to CMake file by @Bronek in #10
- Upgrade clang format by @Bronek in #12
- Major refactor by @Bronek in #11
- Rewrite
not_tuple, add FWD macro by @Bronek in #13 - Split
inspect_errorfrominspectby @Bronek in #15 - Define concepts by @Bronek in #17
- Remove unused concept similar_expected by @Bronek in #19
- Yet another take at retry coverage report upload by @Bronek in #20
- Filter operation by @godexsoft in #14
- Reformat for 120 columns by @Bronek in #24
- Add simple examples for filter by @godexsoft in #26
- Add overload utility by @Bronek in #27
- Rename
closuretopackand refactor by @Bronek in #28 - Use static_check util by @godexsoft in #25
- Implement polyfills for expected and optional by @Bronek in #29
- Use static_check util in a few more places by @godexsoft in #30
- Add
[[nodiscard]]by @Bronek in #31 - Implement pack support by @Bronek in #32
- Switch type discriminator to std::in_place_type by @Bronek in #33
- Upgrade gcovr by @Bronek in #37
- Implement choice monad by @Bronek in #36
- Update codecov badge by @Bronek in #42
- Switch coverage to unit tests only by @Bronek in #43
- Extend
invoketo supportsumandpackby @Bronek in #44 - Add license scan report and status by @fossabot in #46
- Add workflow for license compliance, update codecov workflow by @Bronek in #47
- Fix gcc-13 compilation error on MacOS/Nix by @Bronek in #48
- Switch coverage to lcov by @Bronek in #49
- Send native gcov files to codecov by @Bronek in #50
- Add support for sum to other monads by @Bronek in #38
- Upgrade to clang 18 by @Bronek in #57
- Use CMake FetchContent for Catch2 by @godexsoft in #56
- Remove unused includes by @Bronek in #58
- Remove support for [](std::in_place_type, T) functions by @Bronek in #59
- Update ISC wording by @Bronek in #64
- Update readme with devcontainer reference by @Bronek in #65
- Define
sum<>unit by @Bronek in #60 - Improve gcov command line by @Bronek in #68
- Improve sum support in optional by @Bronek in #67
- Update README.md by @Bronek in #70
- Add Ripple to Acknowledgments section by @Bronek in #71
- Implement multi-dispatch by @Bronek in #69
- Add lift functions by @Bronek in #73
- Add support for multidispatch in
fn::invokeandfn::invoke_rby @Bronek in #72 - Swap functor arguments by @Bronek in #74
- Add
value_orfunctor by @Bronek in #75 - Add identity lift function by @Bronek in #76
- Experimental Nix support by @godexsoft in #77
- Update clang-format to version 18 by @Bronek in #79
- Make tooling available thru nix by @godexsoft in #78
- Add build workflow for nix by @Bronek in #81
- Enable clang build in nix workflow by @Bronek in #82
- Doxygen/znai integration by @godexsoft in #35
- Bump Catch2 version, minor build fix by @Bronek in #87
- Upgrade workflows by @Bronek in #90
- Switch to default runners by @Bronek in #91
- Add CI containers by @Bronek in #92
- Fix CI workflow by @Bronek in #93
- Switch Dockerfiles from -slim to full Debian image by @Bronek in #94
- Try different runner by @Bronek in #96
- Compatibility with Windows x64 data model. by @InCom-0 in #97
- Fix Catch2.cmake by @Bronek in #99
- Tests cleanup by @Bronek in #89
- Add pre-commit support, and fix end of line and file issues by @Twon in #120
- Replace clang-format with pre-commit by @Bronek in #123
- Replace edge wish sha by @Bronek in #124
- Change tag for ci-build by @Bronek in #125
- Update suffix tag by @Bronek in #126
- Update docs image, move it to hub.docker.com/u/libfn by @Bronek in #129
- Install Catch2 in docs image by @Bronek in #130
- Switch pre-commit base image to bookworm-slim by @Bronek in #131
- Refactor CI workflows by @Bronek in #132
- Add sparse checkout by @Bronek in #133
- Set shell in actions by @Bronek in #134
- Fix platform by @Bronek in #135
- Add labels and libfn.org/ci by @Bronek in #136
- Fix labels by @Bronek in #137
- Documentation updates by @Bronek in #138
- Fix main index page by @Bronek in #139
- Add missing ci/index by @Bronek in #140
- Fix footer by @Bronek in #141
- Exclude ci/ from license scan by @Bronek in #142
- Update README.md by @Bronek in #143
- Add more compilers by @Bronek in #145
- Upgrade to Doxygen 1.12.0 by @Bronek in #146
- Build doxygen from sources for arm64 by @Bronek in #147
- Move doxygen build by @Bronek in #148
- Dockerfile improvements for Catch2 by @Bronek in #149
- Allow manual coverage run by @Bronek in #151
- Run coverage on every push to main by @Bronek in #152
- Refactor, move
include/functionaltoinclude/fnby @Bronek in #150 - Add curl & jq to CI images by @Bronek in #154
- Update runners on ci- workflows by @Bronek in #157
- Update workflow runners, add clang-20 by @Bronek in #158
- Disable image generation workflows outside of
mainbranch by @Bronek in #159 - Add
discardfunctor by @godexsoft in #162 - Add gcc-15 to ci-build by @Bronek in #163
- Add gcc-15 to build by @Bronek in #164
- Coverage options by @Bronek in #165
- Move containers to
libfn.azurecr.ioby @Bronek in #166 - Complete switch to libfn.azurecr.io by @Bronek in #167
- Add comment in ci-build.yml by @Bronek in #168
- Upgrade to stable nix pkgs by @godexsoft in #170
- C++20 compatible polyfill for
<expected>by @Bronek in #155 - Add
has_error()to expected by @Bronek in #171 - CI platform upgrades (clang-21) by @Bronek in #172
- Add clang-21 to build by @Bronek in #173
- Fix monadic functions for move-only types by @Bronek in #174
- Improve support for move only types by @Bronek in #175
- Add polygon puzzle to examples by @Bronek in #177
- Add .clangd by @Bronek in #178
- Add clang-22 and fix CI actions by @Bronek in #179
- Run new clang versions on Trixie by @Bronek in #180
- Fix clang-22 CI build by @Bronek in #181
- Upgrade clang builds to version 22, upgrade macOS builds by @Bronek in #182
- Improve and refactor
examples/polygonby @Bronek in #184 - Add
gcc-16to build images by @Bronek in #185 - Fix ci/gcc/Dockerfile by @Bronek in #186
- Fix ci-build workflow by @Bronek in #187
- Add gcc-16 to builds workflow by @Bronek in #188
- Fixes and code cleanup for
include/pfn/expected.hppby @Bronek in #189 - Upgrade clang-format to 22 by @Bronek in #190
- Fix
pfn::expected<void, E>constructor fromexpected<void, G>by @Bronek in #191 - Refactor
pfn::expectedto move storage to a separate class by @Bronek in #192 - Add all dependencies of gnupg to CI by @Bronek in #195
- Add all dependencies of gnupg by @Bronek in #196
- Complete Catch2 upgrade to 3.14.0 by @Bronek in #197
- Add unzip to CI images by @Bronek in #198
- Switch SonarCloud to workflow by @Bronek in #194
- Add gcovr to build images by @Bronek in #200
- Fix
pip installin gcc images by @Bronek in #201 - Add coverage to sonarcloud workflow, overall build improvements by @Bronek in #199
- More refactoring of
pfn::expectedby @Bronek in #193 - More refactoring of
pfn::expectedby @Bronek in #203 - Remove noexcept from
~_storage()by @Bronek in #204 - Add sanitizers to clang by @Bronek in #206
- Cleanup in cmake/CompilationOptions.cmake by @Bronek in #205
- Add
valgrindandpre-committo gcc / clang images by @Bronek in #207 - Add
sonarcloud-pr-scanfor PRs from forks by @Bronek in #208 - Switch clangd to
compile_commands.jsonin project root by @Bronek in #209 - Improve comment by @Bronek in #211
- Add conan to CI images by @Bronek in #213
- Add CI images for clang with libstdc++ by @Bronek in #214
- Add CI images with Bazel by @Bronek in #215
- CI images improvements by @Bronek in #216
- Fix ci-docs by @Bronek in #217
- Add C++20 compilation mode, add packaging for conan and vcpkg with tests. by @Bronek in #212
- Packaging and workflows improvements by @Bronek in #218
- Bump actions/checkout from 4.3.1 to 6.0.3 by @dependabot[bot] in #219
- Bump actions/download-artifact from 4.3.0 to 8.0.1 in /.github/actions/merge-ci-images by @dependabot[bot] in #224
- Bump actions/deploy-pages from 4.0.5 to 5.0.0 by @dependabot[bot] in #223
- Bump actions/configure-pages from 4.0.0 to 6.0.0 by @dependabot[bot] in #220
- Bump actions/download-artifact from 4.3.0 to 8.0.1 by @dependabot[bot] in #221
- Bump cachix/install-nix-action from 30 to 31 by @dependabot[bot] in #222
- Add more compilers on MacOS, refactor
CompilationOptions.cmakeby @Bronek in #225 - Fix
_invoke_type_result_resultfallback name invariadic_union.hppby @Bronek in #226 - Migrate build jobs to WarpBuild by @Bronek in #227
- Always construct
_storage_union_tvia explicit ctor; remove uninitialized default by @Bronek in #228 - Fixed default template parameters for
value_or/operator=inpfn::expectedby @Bronek in #236 - Bump SonarSource/sonarqube-scan-action from 8.1.0 to 8.2.0 by @dependabot[bot] in #229
- Bump actions/upload-pages-artifact from 3.0.1 to 5.0.0 by @dependabot[bot] in #230
- Bump codecov/codecov-action from 4.6.0 to 7.0.0 by @dependabot[bot] in #232
- Bump docker/metadata-action from 5.10.0 to 6.1.0 in /.github/actions/merge-ci-images by @dependabot[bot] in #235
- Bump actions/upload-artifact from 4.6.2 to 7.0.1 in /.github/actions/build-ci-image by @dependabot[bot] in #234
- Bump docker/metadata-action from 5.10.0 to 6.1.0 in /.github/actions/build-ci-image by @dependabot[bot] in #233
- Install Node.js 24 from nodesource by @Bronek in #237
- Pin libfn.azurecr.io CI images to commit SHA by @Bronek in #238
- Bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #231
- ci: make non-ci workflows fork-friendly by @Bronek in #239
- Make
codecovandsonarcloudworkflows fork-friendly by @Bronek in #240 - docs: de-duplicate toolchain setup and clarify versioning pointer in README by @Bronek in #248
- Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #241
- Bump docker/login-action from 3.7.0 to 4.2.0 in /.github/actions/build-ci-image by @dependabot[bot] in #242
- Bump docker/setup-qemu-action from 3.7.0 to 4.1.0 in /.github/actions/build-ci-image by @dependabot[bot] in #243
- Bump docker/build-push-action from 6.19.2 to 7.2.0 in /.github/actions/build-ci-image by @dependabot[bot] in #244
- Bump docker/setup-buildx-action from 3.12.0 to 4.1.0 in /.github/actions/build-ci-image by @dependabot[bot] in #245
- Bump docker/login-action from 3.7.0 to 4.2.0 in /.github/actions/merge-ci-images by @dependabot[bot] in #246
- Bump docker/setup-buildx-action from 3.12.0 to 4.1.0 in /.github/actions/merge-ci-images by @dependabot[bot] in #247
- Fix the pr-scan post-step crash and SonarCloud blame failure by @Bronek in #249
- Full support for C++20 compilers by @Bronek in #202
- Suppress SonarCloud cpp:S5145 and cpp:S3659 false positives by @Bronek in #251
- Update
CLAUDE.mdC++20 status, feature+tests convention, streamlining by @Bronek in #252 - Implement
optionalC++26 polyfill by @Bronek in #176 - Rebase
fn::optionalontopfn's base and enforcefnsuperset ofpfnby @Bronek in #253 - Make the docs Pages deploy safe to re-run by @Bronek in #255
- Make the in-place constructors of
sumandchoiceexplicit; clear the SonarQube issue backlog by @Bronek in #256 - Implement P3168
optionalrange support by @Bronek in #257 - Packaging fixes: Bazel 9 support, document options required by consumers, set options in
conanby @Bronek in #259 - Add x64-windows/MSVC lane to the vcpkg package test by @Bronek in #258
- Switch GNU sanitizers to dynamic linking, enable GCC ubsan by @Bronek in #269
- Add CHANGELOG.md, add
examples/readmeand display it in README.md, CLAUDE.md update by @Bronek in #267 - Bump fossas/fossa-action from 1.9.0 to 2.0.0 by @dependabot[bot] in #260
- Bump docker/login-action from 4.2.0 to 4.4.0 in /.github/actions/build-ci-image by @dependabot[bot] in #261
- Bump docker/metadata-action from 6.1.0 to 6.2.0 in /.github/actions/build-ci-image by @dependabot[bot] in #262
- Bump docker/build-push-action from 7.2.0 to 7.3.0 in /.github/actions/build-ci-image by @dependabot[bot] in #263
- Bump docker/setup-qemu-action from 4.1.0 to 4.2.0 in /.github/actions/build-ci-image by @dependabot[bot] in #264
- Bump docker/metadata-action from 6.1.0 to 6.2.0 in /.github/actions/merge-ci-images by @dependabot[bot] in #265
- Bump docker/login-action from 4.2.0 to 4.4.0 in /.github/actions/merge-ci-images by @dependabot[bot] in #266
- Fix
operator&for non-void expected carrying thesum<>unit error by @Bronek in #271 - Add the RPN calculator example by @Bronek in #270
- Implement the tuple protocol for
fn::packby @Bronek in #274 - Add the associated
expectedtypes into namespacefnby @Bronek in #275 - Broaden the feature-and-tests commit rule to cover fixes by @Bronek in #288
- Switch codecov ingestion to the
gcovraggregate report by @Bronek in #292 - Fix ambiguous partial specialization when appending a
sumto apackby @Bronek in #295 - Constrain
in_place_typeconstruction ofsumandchoiceon the argument list by @Bronek in #296 - Constrain the callback of the sum-case
transformandtransform_errorby @Bronek in #297 - Give
sum_valueandsum_erroranoexceptspecification by @Bronek in #298 - Let C++20 rewriting synthesize
sum'soperator!=by @Bronek in #299 - Compute a real
noexceptfor thesum,packandchoicesurface by @Bronek in #300 - Propagate
noexceptthrough the verbs andoperator|by @Bronek in #301 - Make
operator&promise only what joining actually promises by @Bronek in #302 - Constrain the relocating verbs on what they actually relocate by @Bronek in #303
- Add assignment to
sum, with the strong exception guarantee by @Bronek in #304 - Ask of a
sumalternative the same question its initialization answers by @Bronek in #305 - Answer
convertible_to_unexpectedfor void instead of hard-erroring by @Bronek in #306 - Drop the caller when a callback's result has no place in a sum by @Bronek in #307
- Clean up unit tests: uniform coverage, then uniform structure by @Bronek in #286
- Run linux package tests on arm64 runners by @Bronek in #313
- Assign the held alternative with its own
operator=by @Bronek in #312 - Add widening assignment to
sumandchoiceby @Bronek in #317 - Bump docker/setup-buildx-action from 4.1.0 to 4.2.0 in /.github/actions/merge-ci-images by @dependabot[bot] in #316
- Bump docker/setup-buildx-action from 4.1.0 to 4.2.0 in /.github/actions/build-ci-image by @dependabot[bot] in #315
- Bump cachix/install-nix-action from 31.10.6 to 31.10.7 by @dependabot[bot] in #314
- Make
optionalandexpectedassignment conditionally trivial by @Bronek in #320 - Add a value
operator=tosumandchoiceby @Bronek in #322 - Add
emplacetosumandchoiceby @Bronek in #324 - Add the C++26
applytrait family topfnby @Bronek in #327 - Rename
invoketoapplyby @Bronek in #329 - Pin unpacking of tuple-like sum alternatives in apply by @Bronek in #330
- Reject a nested pack element in pack by @Bronek in #333
- Fix the pack docs reference and validate docs on pull requests by @Bronek in #331
- Build pull request coverage at the head, and pin it by @Bronek in #334
- Diagnose sort-key collisions in type normalization by @Bronek in #336
- Refer to test dimensions where they are defined by @Bronek in #335
- Add apply_type and apply_type_r to sum and choice by @Bronek in #337
- Run the codecov jobs on whatever the platform provides by @Bronek in #338
- Run the sonarcloud jobs on arm64 by @Bronek in #340
- Add the apply family to optional and expected, with trailing arguments throughout by @Bronek in #343
- Answer, short-circuit and dispatch over an empty sum side by @Bronek in #345
- Rename sum to copack by @Bronek in #348
- Collapse differing choice results of and_then into the superset by @Bronek in #353
- Remove macOS 14 support by @Bronek in #355
- Add just and curate the verbs across the identity cluster by @Bronek in #354
- Join heterogeneous expected and optional branches in and_then and or_else by @Bronek in #356
- Answer instead of asserting in the and_then functor's cluster probe by @Bronek in #358
- Wrap the library in the ABI-versioning inline namespace by @Bronek in #360
- Pin pfn to the mode-less ABI namespace by @Bronek in #361
- Add the LIBFN_CXX26 std::type_order mode by @Bronek in #362
- Bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #363
- Bump SonarSource/sonarqube-scan-action from 8.2.0 to 8.2.1 by @dependabot[bot] in #365
- Bump cachix/install-nix-action from 31.10.7 to 31.11.0 by @dependabot[bot] in #364
- Make just construction implicit and rename fn::identity to fn::conjoin by @Bronek in #366
- Short-circuit the join over an uninhabited value side by @Bronek in #369
- Add the disjunction and admit the identity cluster in both operators by @Bronek in #370
- Add CHANGELOG entries for #366, #369 and #370 by @Bronek in #371
- Review and tighten the unit tests since the #85 cleanup by @Bronek in #373
- Add explicit element types to
as_packby @Bronek in #375 - Add carrier conversions through or_else and and_then by @Bronek in #378
- Add CHANGELOG entries for #375, #377 and #376 by @Bronek in #379
- Deduce the expected operand of the comparison against a value by @Bronek in #382
- Reach the uninhabited value side, split the folds, and compare packs by @Bronek in #383
- Conjoin two ungraded error types into their sum by @Bronek in #385
- Bump docker/login-action from 4.4.0 to 4.5.2 in /.github/actions/merge-ci-images by @dependabot[bot] in #387
- Bump docker/login-action from 4.4.0 to 4.5.2 in /.github/actions/build-ci-image by @dependabot[bot] in #386
- Fill in the Doxygen stanzas across include/fn and include/pfn by @Bronek in #388
- Put python and znai 1.91 in the docs image by @Bronek in #389
- Repin the CI images onto the refreshed build by @Bronek in #390
- Add TYPE_ALGEBRA by @Bronek in #359
- Restore the operator listings and drop the unneeded exemptions by @Bronek in #391
- Carry the C++26 requirement to conan consumers of fn_cxx26 by @Bronek in #397
- Document how to build, name the C++26 entry point, and fix the docs-site alerts by @Bronek in #395
- Bump docker/login-action from 4.5.2 to 4.6.0 in /.github/actions/build-ci-image by @dependabot[bot] in #399
- Bump docker/login-action from 4.5.2 to 4.6.0 in /.github/actions/merge-ci-images by @dependabot[bot] in #400
- Open the 0.1 release cycle at 0.1.0-rc1 by @Bronek in #398
- Bump cachix/install-nix-action from 31.11.0 to 31.11.1 by @dependabot[bot] in #401
- Open the 0.1.0 release cycle by @Bronek in #403
New Contributors
- @godexsoft made their first contribution in #14
- @fossabot made their first contribution in #46
- @InCom-0 made their first contribution in #97
- @Twon made their first contribution in #120
- @dependabot[bot] made their first contribution in #219
Full Changelog: https://github.com/libfn/functional/commits/v0.1.0