Skip to content

v0.4.0

Latest
Compare
Choose a tag to compare
@Oipo Oipo released this 10 Feb 18:30
· 1 commit to main since this release
dabb63d

New Features / Significant Changes

  • Implement almost entire Etcd v2 API (user auth, roles, permissions)
  • Expand redis API implementation (strlen, multi, discard, exec, info)
  • Reduce memory usage for events significantly (>50%)
  • Reduce memory usage for services
  • Introduce non-atomic shared_ptr
  • Support requesting dependencies of the same type multiple times but with different properties (e.g. two IHttpConnection's to different addresses)
  • Support custom HTTP route matchers
    • Introduce an Ichor RegexRouteMatcher that supports capture groups for parsing e.g. /users/{id}?{queryParam1}={valueParam1}
  • Implement Small Buffer Optimization in Ichor::Any
  • Support converting Ichor::Any type and values to string for logging contents of Properties
  • Add Raspberry Pi model specific optimization flags
  • Add benchmark numbers on Raspberry Pi Model 4B
  • Add _FORTIFY_SOURCE=3 and other security related flags on non-windows builds when using hardening
  • Improve various compile/link modes, e.g. using libcpp instead of libstdc++ or creating a statically linked musl-aarch64-mimalloc build.
  • Support services having a priority lower than the default dependency priority, effectively enabling some control over which services get initialized first.
  • Have coroutines use the same priority for events as the services that create them

Third-party Libraries

  • Fork and update Mimalloc to 2.1.2
    • Forked because of this issue.
    • Allows using mimalloc with ASAN as well as on the combination of musl, aarch64
    • Use mimalloc's secure mode when hardening is turned on, even for release builds.
  • Update spdlog to v1.13.0
  • Update fmt to 10.2.1
  • Update Catch to 3.5.2
  • Update sole to 1.0.5
  • Update glaze to 2.0.6
  • Introduce CTRE 3.8.1
  • Introduce ankerl's unordered_dense 4.40, replacing std::unordered_map and abseil::btree_map entirely.
  • Remove abseil as a possible dependency (users are free to re-introduce it in their own projects, of course)

Bug Fixes

  • Fix bug when sending multiple messages with HttpConnectionService
  • Fix data race with multiple threads creating services without dependencies
  • Fix data race in coroutine IO implementation
  • Fix bug in EventStatisticsService where collected events would be thrown away because a coroutine was not being run to completion
  • Fix bug where iterators to event interceptors might get invalidated by modifying the list of interceptors inside of an event intercept handler
  • Fix bug where realtime example would always try to re-enable SMT if option to disable it was missing