## Summary This PR implements advisory file locking for the message history using Rust 1.89+ stabilized std::fs::File locking APIs, eliminating the need for external dependencies. ## Key Changes - **Stable API Usage**: Uses std::fs::File::try_lock() and try_lock_shared() APIs stabilized in Rust 1.89 - **Cross-Platform Compatibility**: - Unix systems use try_lock_shared() for advisory read locks - Windows systems use try_lock() due to different lock semantics - **Retry Logic**: Maintains existing retry behavior for concurrent access scenarios - **No External Dependencies**: Removes need for external file locking crates ## Technical Details The implementation provides advisory file locking to prevent corruption when multiple Codex processes attempt to write to the message history file simultaneously. The locking is platform-aware to handle differences in Windows vs Unix file locking behavior. ## Testing - ✅ Builds successfully on all platforms - ✅ Existing message history tests pass - ✅ File locking retry logic verified Related to discussion in #2773 about using stabilized Rust APIs instead of external dependencies. --------- Co-authored-by: Michael Bolin <bolinfest@gmail.com>
codex-core
This crate implements the business logic for Codex. It is designed to be used by the various Codex UIs written in Rust.
Dependencies
Note that codex-core makes some assumptions about certain helper utilities being available in the environment. Currently, this
macOS
Expects /usr/bin/sandbox-exec to be present.
Linux
Expects the binary containing codex-core to run the equivalent of codex debug landlock when arg0 is codex-linux-sandbox. See the codex-arg0 crate for details.
All Platforms
Expects the binary containing codex-core to simulate the virtual apply_patch CLI when arg1 is --codex-run-as-apply-patch. See the codex-arg0 crate for details.