From 8c3612fb638d356579c446de68421288164484dc Mon Sep 17 00:00:00 2001 From: Brent Traut Date: Wed, 30 Sep 2026 02:04:12 +0000 Subject: [PATCH] Use `memrchr` to find newlines in reverse JSONL scans (#49444) Replace the byte-by-byte reverse newline search with `memchr::memrchr` and add `memchr` as a dependency of `codex-rollout`. GitOrigin-RevId: b07e42e15efb0d63d7b00ee9a2ee29c446f4cf59 --- codex-rs/Cargo.lock | 1 + codex-rs/rollout/Cargo.toml | 1 + codex-rs/rollout/src/reverse_jsonl_scanner.rs | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index a26f2fd61e..10a8c44279 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -4432,6 +4432,7 @@ dependencies = [ "codex-utils-absolute-path", "codex-utils-path", "codex-utils-process", + "memchr", "pretty_assertions", "regex", "serde", diff --git a/codex-rs/rollout/Cargo.toml b/codex-rs/rollout/Cargo.toml index 8981dd9662..fb2b5b39e4 100644 --- a/codex-rs/rollout/Cargo.toml +++ b/codex-rs/rollout/Cargo.toml @@ -25,6 +25,7 @@ codex-protocol = { workspace = true } codex-state = { workspace = true } codex-utils-absolute-path = { workspace = true } codex-utils-path = { workspace = true } +memchr = { workspace = true } regex = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } diff --git a/codex-rs/rollout/src/reverse_jsonl_scanner.rs b/codex-rs/rollout/src/reverse_jsonl_scanner.rs index 9e0a836bee..ed0daed295 100644 --- a/codex-rs/rollout/src/reverse_jsonl_scanner.rs +++ b/codex-rs/rollout/src/reverse_jsonl_scanner.rs @@ -95,7 +95,7 @@ where } let chunk = &self.chunk[..self.chunk_position]; - if let Some(newline_position) = chunk.iter().rposition(|byte| *byte == b'\n') { + if let Some(newline_position) = memchr::memrchr(b'\n', chunk) { let fragment = &chunk[newline_position + 1..]; if !self.discarding_oversized_record { if self.max_record_bytes.is_some_and(|max_record_bytes| {