~ober/jerboa-sed
Imported from ~/mine/jerboa-sed
about
# jerboa-sed Jerboa `sed` implementation and standalone `jsed` CLI. ## Security Status This repository is not a production-supported public release yet. It now has a local release gate: ```sh make verify make target-evidence make release-evidence ``` `make release-evidence` records SBOM/toolchain/PCRE2 evidence and a two-pass binary reproducibility report using a cleanly prewarmed generated-library input snapshot for the generated `jsed` binary. It also captures the deterministic 512-case parser corpus evidence and target sed proof status. Production support requires marker-complete target proof through `JSED_TARGET_PROOF_FILE` with `JSED_REQUIRE_TARGET_PROOF=1`. Secure defaults: - sed script shell execution is disabled unless `JSED_ALLOW_SHELL=1` is set; - sed script file reads/writes (`r`, `R`, `w`, `W`, `s///w`) are disabled unless `JSED_ALLOW_SCRIPT_FILE_IO=1` is set; - `--sandbox` disables both script shell and script file effects even when the opt-in environment variables are set; - script text and input records are capped by `JSED_MAX_SCRIPT_CHARS` and `JSED_MAX_INPUT_LINE_CHARS`, both defaulting to 1 MiB; - compiled syntax trees are capped by `JSED_MAX_COMMANDS` (65,536 by default, with a hard configuration ceiling of 1,000,000 nodes), including labels and block containers; - `-i` creates an unpredictable same-directory file with exclusive, no-symlink-following descriptor operations, preserves owner/mode, syncs file and directory data, verifies source/temp identities, and atomically renames. A source symlink or unavailable native helper fails closed. CLI input files, `-f` script files, and explicit `-i` in-place edits are treated as caller intent and are still supported with path validation and taint checks. ## Build And Test ```sh make parser-corpus make test make verify ``` `jsed` depends on the platform `libpcre2-8` runtime library. Standalone builds also link `support/secure-inplace.c`. Programs embedding the `(sed main)` library must link and register the `jsed_secure_inplace_*` symbols listed in `support/ffi-symbols.list` to enable `-i`; without them, ordinary stream editing works but in-place editing is rejected.
recent commits
- Document local mine repository authority fc64f75 Jaime Fournier
- Use FreeBSD Forgejo CI runner bfbce27 user
- Set up Forgejo CI/CD policy da6a86c Jaime Fournier
- Update Jerboa release references 8fae4ce Jaime Fournier
- Update jpkg metadata for Forgejo 7983300 Jaime Fournier
- docs: remove jerboa-emacs restriction f495017 Jaime Fournier
- Remove GitHub workflow metadata 87d0ced Jaime Fournier
- jpkg: complete binary package setup 7851b56 Jaime Fournier
- build: add #!chezscheme to generated .sls wrappers for Chez syntax extensions d0d1f32 Jaime Fournier
- update AGENTS.md 7383065 Jaime Fournier