Library

brpc 1.18.0

Version1.18.0
Repositoryapache/brpc ↗
Stars★ 17,611
Released2026-09-17

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".

Release notes

Apache bRPC 1.18.0 broadens protocol coverage and platform support, and significantly hardens parsers and transport internals against malformed or malicious input.

## Features

- Add MySQL client protocol with clean-room auth, text protocol, transactions and prepared statements by @rajvarun77 (#3330)
- Support TLSv1.3 by @neilxxxxx (#3319)
- Support Protobuf v35 by @wasphin (#3429)
- Support flow-controlled gRPC client requests by @wasphin (#3430)
- Add TLS peer name verification for clients by @wwbmmm (#3408)
- Support checksumming the attachment together with the body by @yanglimingcn (#3407)
- Support RDMA handshake protocol V3 by @chenBright (#3350, #3326)
- Support end-to-end ECE negotiation in RDMA handshake V3 by @chenBright (#3352)
- Interconnect via UBShmTransport based on LD/ST shared-memory semantics by @zchuango (#3290)
- Add Power-of-Two-Choices Peak-EWMA (p2c) load balancer by @rajvarun77 (#3367)
- Add bounded-load consistent hashing (c_murmurhash_bl) load balancer by @rajvarun77 (#3502)
- Add IOBuf<->std::iostream adapters for zero-copy I/O by @chenBright (#3341)
- Add RISC-V Zvbc vector CRC32C acceleration by @Felix-Gong (#3332)
- Support LeakSanitizer by @chenBright (#3361)

## Bugfixes

- Apply auth check to builtin requests on public port by @wwbmmm (#3308)
- Fix HPACK dynamic table size update recursive decoding by @wwbmmm (#3343)
- Fix inline redis protocol consuming HTTP/2 connection preface by @rajvarun77 (#3338)
- Fix HTTPS pooled client crash on unexpected SSL EOF by @Felix-Gong (#3316)
- Fix rpcz root client span lifetime by @lh2debug-2 (#3421)
- Bound SSL handshake to prevent leaked ESTABLISHED sockets by @yerixu (#3296)
- Fix static initialization order fiasco in AdaptiveMaxConcurrency by @Felix-Gong (#3315)
- Set socket buffer options before connect by @howzi (#3368)
- Guard SO_BINDTODEVICE by @daeho-ro (#3320)
- Fix race when falling back from RDMA to TCP by @legionxiong (#3406)
- Fix RDMA handshake failing the socket instead of falling back to TCP by @chenBright (#3424)
- Fix RDMA PollCq missing recv CQEs after re-arming the CQs by @chenBright (#3425)
- Fix data race on Socket::_read_buf of RDMA server by @chenBright (#3505)
- Fix late selective_channel retry after EndRPC by @hjwsm1989 (#3359)
- Fix StreamCreate failure handling by @ljcjclljc (#3357)
- Fix SetHostSocket when add stream failed by @lo-tk (#3386)
- Fix host_socket not set for extra streams on client side by @chenBright (#3373)
- Fix SelectiveChannel response copy for non-reflectable messages by @zchuango (#3514)
- Fix WeightedRandomizedLoadBalancer skipping the last server by @Nas01010101 (#3426)
- Refactor sharded priority queue with per-ED shard by @yannan-wyn (#3270)
- Fix bthread_interrupt was scheduled to the wrong tag group by @chenBright (#3351)
- Fix potential bvar deadlock by running describe()/dump() outside the global VarMap lock by @chenBright (#3470)
- Hide libunwind's _Unwind_* symbols under Bazel to fix bthread_tracer crash by @chenBright (#3297)
- Fix empty Redis command array parsing by @wwbmmm (#3354)
- Fix SOFA PBRPC parser not limiting metadata size by @wwbmmm (#3449)
- Fix bug when parsing zero-length string field in mcpack2pb by @wwbmmm (#3450)
- Fix RTMP abort message deleting the chunk stream being parsed by @wwbmmm (#3452)
- Fix streaming RPC frame validation by @wasphin (#3481)
- Fix out-of-bounds read parsing AVC SPS in ParseSPS by @ubeddulla (#3371)
- Fix char-signedness out-of-bounds read in url and header lookup tables by @ubeddulla (#3376)
- Fix use-after-free of the new block in SingleIOBuf::assign by @ubeddulla (#3397)
- Fix exp-golomb bit position in avc_nalu_read_uev by @ubeddulla (#3483)
- Bound exp-golomb suffix read to bitstream in avc_nalu_read_uev by @sahvx655-wq (#3334)
- Prevent leaked SocketMap references during Channel reinitialization by @darion-yaphet (#3433)
- Render /vars as an HTML name-value table by @darion-yaphet (#3413)
- Re…

Share this resource


Discovered 2026-09-18 Source GitHub Archive 2026-09 →