A C++20 microservice bootstrapping framework focused on dependency injection, event queueing, and thread confinement for high-performance, low-latency applications.
Ichor is a C++20 microservice bootstrapping framework that provides dependency injection, event queueing, and thread confinement to build scalable and maintainable services. It abstracts modern I/O approaches like io_uring and Windows IoRing, allowing developers to swap implementations without modifying user code. The framework focuses on performance, memory safety, and reducing coupling between components to support long-term software projects.
C++ developers building high-performance, low-latency microservices or networked applications who need robust dependency management and thread safety. It's particularly suited for teams prioritizing API stability and maintainability over decades.
Developers choose Ichor for its integrated approach to dependency injection and event-driven architecture, which reduces vendor lock-in compared to alternatives like Boost. It offers strong thread confinement to prevent data races, detailed control over coroutine debugging, and performance benchmarks that aim to surpass libraries like Boost.Beast.
C++20 Microservice Bootstrapping Framework
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Abstracts io_uring and Windows IoRing, allowing swaps without modifying user code, which future-proofs applications against I/O implementation changes.
Reduces data race risks by defining which thread a class instance runs on, eliminating the need for manual lock management in Ichor-managed threads.
Provides robust service lifecycle management, automatically cleaning up dependent services when dependencies are removed at runtime, enhancing maintainability.
Aims to match or exceed libraries like Boost.Beast in benchmarks, with low-latency goals demonstrated in Ichor's own benchmark directory.
Leverages C++20 concepts and RAII to catch errors early, guiding correct usage and reducing runtime issues in long-lived projects.
As a personal project, Ichor lacks the extensive testing (e.g., fuzzing) and community support of Boost, and features like Kafka or OpenTracing are only on the roadmap.
Requires modern C++20 compilers and dependencies like Boost.Beast for some services, making initial setup harder than drop-in solutions, and it's tailored for specific high-performance use cases.
Partial support for OSX Monterey and no baremetal/RTOS support limits portability; workarounds are needed for MSVC bugs, as noted in the README.
Documentation is in a docs directory with minimal examples, and advanced features like realtime scheduling or pubsub interfaces lack detailed guides, relying on user contribution.