- Scheme 69.6%
- Shell 16%
- C 5.8%
- Python 4.7%
- Makefile 3.7%
- Other 0.2%
| .builds | ||
| .jerboa | ||
| docs | ||
| scripts | ||
| src/sed | ||
| support | ||
| tests | ||
| .gitignore | ||
| .jerbuild | ||
| AGENTS.md | ||
| jpkg.lock | ||
| jpkg.policy.sexp | ||
| jpkg.sexp | ||
| LICENSE | ||
| main.ss | ||
| Makefile | ||
| README.md | ||
| SECURITY.md | ||
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:
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=1is set; - sed script file reads/writes (
r,R,w,W,s///w) are disabled unlessJSED_ALLOW_SCRIPT_FILE_IO=1is set; --sandboxdisables 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_CHARSandJSED_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; -icreates 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
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.