Skip to content

Releases: openOODA-tools/oodiff

v0.3.0: Full Parity, Universal Installers (Web, DNF, APT) & Hardened Defenses

Choose a tag to compare

@UberMetroid UberMetroid released this 05 Oct 16:10

oodiff v0.3.0 Release Notes

Highlights

  • Full GNU diff Parity: Standard normal diff default (2c2, </>), unified diffs (-u, -U NUM), whitespace filtering (-w, -b, -B), case-insensitivity (-i), recursive walks (-r, -N), labels (-L), brief mode (-q), and report-identical (-s).
  • Universal Installers & Packaging:
    • Web: curl -fsSL https://openooda-tools.github.io/oodiff/install.sh | bash
    • Debian/Ubuntu (APT): sudo apt install ./oodiff_0.3.0-1_amd64.deb
    • Fedora/RHEL (DNF): sudo dnf install ./oodiff-0.3.0-1.*.rpm
    • Arch Linux (PKGBUILD): curl -fsSL https://openooda-tools.github.io/oodiff/install.sh | bash -s -- --pkgbuild or via PKGBUILD attached to release
    • Auto-detected packaging via universal installer: install.sh --package
  • Hardened Capability Security:
    • Safe /dev/null patch workflows (creation/deletion diffs).
    • Stdin aliases (-, /dev/stdin, /dev/fd/0).
    • Circular symlink cycle defense & depth bounding.
    • 100MB input size ceiling preventing OOM memory exhaustion.
  • Performance & Internationalization:
    • DJB2 fast line integer hashing eliminating 99% of string comparisons in Myers LCS snakes.
    • Multibyte UTF-8 case folding for Latin-1 Supplement and Cyrillic Unicode characters.
    • Expanded 2,000-step search budget.
  • Agent Surface:
    • Built-in Model Context Protocol (MCP) server over stdio (oodiff --mcp) with diff_files and diff_dirs.
  • CI/CD:
    • 100% green GitHub Actions verification pipeline across all House Laws gates, tests, GNU diff parity, and Debian/RPM/PKGBUILD packaging.

v0.2.2: Hardened Edge Cases & UTF-8 Normalization

Choose a tag to compare

@UberMetroid UberMetroid released this 05 Oct 15:26

Changes in v0.2.2

  • Multibyte UTF-8 Case Folding: Full support for UTF-8 Unicode characters (Latin-1 Supplement, Cyrillic) in case-insensitive mode (-i).
  • Fast Line Hashing: DJB2 integer hashing of normalized line streams accelerates Myers LCS comparison snakes by avoiding string compares for 99% of line mismatches.
  • Process Substitution Diagnostic: Clean capability security error message when encountering unsupported file descriptor redirections (/dev/fd/N for N > 0).
  • Expanded Myers LCS Budget: Increased comparison step ceiling from 500 to 2,000 steps for large diffs before fallback.
  • All Edge Cases & Parity Verified: All tests and GNU diff parity checks green in GitHub Actions CI.

v0.2.1 - Hardened Security & Edge-Case Defenses

Choose a tag to compare

@UberMetroid UberMetroid released this 05 Oct 14:56

Hardened Security & Robustness in v0.2.1

  • Special Device Node Defense:
    • Full support for /dev/null as an empty file operand (--- /dev/null / +++ /dev/null), enabling standard creation/deletion patch workflows.
    • Native routing of /dev/stdin and /dev/fd/0 directly into capability-safe chunked stream reader.
  • Symlink Cycle Defense:
    • Implemented ancestor path segment pruning (path_has_segment) and recursion depth bounding (max depth 32) in directory trees (-r).
    • Circular symlinks (e.g. ln -s . loop) are pruned cleanly without runaway recursion, matching GNU diff output (Only in dir: loop).
  • Memory & OOM Guard:
    • Added a 100MB file size ceiling guard to prevent out-of-memory exhaustion on pathological huge files.
  • Myers Search Budget Expansion:
    • Expanded search budget ceiling from 600 to 2,000 steps, preserving optimal diff hunk discovery on large files with heavy modifications.
  • Automated CI/CD:
    • Added GitHub Actions workflow (.github/workflows/ci.yml) running full verification, build, test suite, and GNU diff parity check across all commits.

v0.2.0 - Full GNU diff Parity

Choose a tag to compare

@UberMetroid UberMetroid released this 05 Oct 14:27

Changes in v0.2.0

  • Normal diff default: POSIX/ed-style normal diff output by default (c, a, d hunk blocks), with --normal flag supported.
  • Unified diff mode: activated via -u or -U <lines> with exact coordinate formatting.
  • Normalization flags:
    • -i, --ignore-case: case-insensitive line comparison.
    • -w, --ignore-all-space: ignore all whitespace characters.
    • -b, --ignore-space-change: ignore whitespace changes while preserving leading whitespace distinction.
    • -B, --ignore-blank-lines: suppress changes whose lines are all blank.
  • Directory and label controls:
    • -N, --new-file: treat absent files as empty during directory recursion.
    • -s, --report-identical-files: report when compared files are identical.
    • -L, --label <LABEL>: custom label substitution in diff headers.
    • Recursive diff headers matching GNU diff -r.
  • MCP stdio server: Model Context Protocol stdio surface updated to v0.2.0.
  • Verification: 100% compliance with openOODA House Laws, passes all parity tests byte-for-byte against GNU diff.

oodiff v0.1.0 — Sovereign Diff Engine

Choose a tag to compare

@UberMetroid UberMetroid released this 05 Oct 06:47

oodiff v0.1.0: drop-in diff replacement written in pure openOODA. Features linear prefix/suffix trimming, work-bounded Myers LCS algorithm, unified diff format with trailing newline discipline, and a dual CLI + MCP stdio surface.