Skip to content

Production Ready Release Candidate

Pre-release
Pre-release

Choose a tag to compare

@msvetkin msvetkin released this 07 May 13:20
· 1 commit to main since this release

About

beman.monadics v1.0.0. A header-only C++20 library that generalizes monadic operations (and_then, transform, or_else, transform_error) as free functions for any "box" type — std::optional, std::expected, smart pointers, raw pointers, and user-defined types. Includes a WG21 paper draft targeting C++29 standardization.

Release Maturity

This release has a status of Under development and not yet ready for production use..

Changelog

New features and improvements

  • Core monadic operations as free functions: and_then, transform, or_else, transform_error
  • Pipe (|) syntax for chaining operations
  • box_traits extension point for adapting custom types
  • callable_adaptor for user-defined pipe-composable operations
  • Built-in support for std::optional, std::expected, raw pointers, std::shared_ptr, and enum types
  • void value type support in and_then and transform
  • Value-category preserving operations
  • Automatic trait deduction from type structure
  • WG21 paper draft (docs/paper.md)
  • Tutorial and design rationale documentation

Bug fixes

  • Fix or_else: don't allow change of value_type
  • Fix get_make_fn: check Traits::make() before Box{} for void value types
  • Fix has_value: remove noexcept requirements and add const
  • Fix CURLcode enum traits

Refactoring

  • Replace pipe_adaptor/access_key with callable_adaptor
  • Remove noexcept and update box_traits<expected> in docs/examples

Build system and CI

  • CI matrix: GCC 11–16, Clang 17–22, AppleClang, MSVC; C++20/23/26; Debug/Release/MaxSan/TSan/Coverage
  • CMake presets, FetchContent lockfile, pre-commit hooks (clang-format, gersemi, codespell)
  • Vcpkg registry support

Full Changelog: v0.1.0...v1.0.0

New Contributors