Click to show more history...
* Version 0.5 is released. Except for various performance improvements, including spinlock, context switch,
and new run queue for coroutine scheduling, we have re-implemented the HTTP module so that there is no `boost` dependency anymore.
* Version 0.4 has come, bringing us these three major features:
1. Support coroutine local variables. Similar to the C++11 `thread_local` keyword. See [doc](doc/thread-local.md).
2. Support running on macOS platform, both Intel x86_64 and Apple M1 included.
3. Support LLVM Clang/Apple Clang/GCC compilers.
* Photon 0.3 was released on 2 Sep 2022. Except for bug fixes and improvements, a new `photon_std` namespace is added.
Developers can search for `std::thread`, `std::mutex` in their own projects, and replace them all into the equivalents of `photon_std::`.
It's a quick way to transform thread-based programs to coroutine-based ones.
* Photon 0.2 was released on 28 Jul 2022. This release was mainly focused on network socket, security context and multi-vcpu support.
We re-worked the `WorkPool` so it's more friendly now to write multi-vcpu programs.
* Made the first tag on 27 Jul 2022. Fix the compatibility for ARM CPU. Throughly compared the TCP echo server performance with other libs.
## Introduction
Photon is a C++ library designed to augment the operating system in terms of
high-performance concurrent I/O programming. Photon is collected from Alibaba
Cloud Storage team's internal code base. It has been extensively tested and
used in production, and is the same code they depend on in their daily lives.
Photon features a highly efficient user-space threading model, implemented as
coroutines with multi-core CPU support, driven by a variety of asynchronous
event engines such as ```epoll```, ```io_uring```, and ```kqueue```, etc.
These event engines are abstracted behind a lightweight, unified interface.
Built on this foundation, Photon provides a comprehensive set of high-level
abstractions for networking and file I/O operations, leveraging both kernel-based
system calls and high-performance user-space frameworks like DPDK and SPDK.
Furthermore, Photon includes entirely new, ground-up implementations of key
distributed system components, including RPC, HTTP client and server, and
Redis client, etc., delivering significantly higher performance and efficiency
compared to existing solutions. The architecture of Photon is illustrated below: