github GitoxideLabs/gitoxide gix-filter-v0.35.0
gix-filter v0.35.0

one day ago

Changed (BREAKING)

  • migrate errors to gix-error

    rubberstamp

  • raise MSRV to Rust 1.88

    The newly published dua-core 3.3 release used by linked-worktree removal
    requires Rust 1.88, so raise every workspace crate and the advertised badge
    together.

    Keep the MSRV checks buildable by selecting the latest sysinfo and rusqlite
    release lines that support Rust 1.88.

Bug Fixes

  • reap long-running filter processes

    A gix-filter shutdown test deliberately selected the non-waiting mode, so cargo nextest reported its child as leaked. Unobserved State drops likewise closed the
    pipes without reaping the process.

    Keep shutdown(WaitForProcesses) as the explicit, status-reporting path and use
    it in all workspace callers. Drain the process map during explicit shutdown so
    State can also wait for any remaining children on Drop while ignoring errors.

    This matches Git’s sub-process.c cleanup: subprocess_exit_handler closes both
    pipes and calls finish_command() to wait for completion.

Bug Fixes (BREAKING)

  • propagate long-running filter shutdown failures

    BREAKING CHANGE: State::shutdown() now takes &mut self and returns
    shutdown::Outcome; Mode::Ignore is renamed to Mode::Zombify.

    A long-running process filter can finish its protocol work and still exit
    unsuccessfully during teardown. Returning raw ExitStatus values made that
    failure easy to overlook, while consuming State made explicit cleanup awkward
    for owners that reuse a filter pipeline.

    Keep State reusable after shutdown(), return an Outcome that preserves
    every observed status, and add Outcome::into_result() to turn the
    first unsuccessful exit into a structured error. Rename Mode::Ignore to
    Mode::Zombify so opting out of wait() makes the resulting Unix process
    lifecycle explicit.

    Git considers a completed conversion successful even if a long-running
    process filter exits non-zero after EOF, so Outcome::into_result()
    isn't actually called.

Commit Statistics

  • 11 commits contributed to the release over the course of 33 calendar days.
  • 34 days passed between releases.
  • 4 commits were understood as conventional.
  • 1 unique issue was worked on: #2947

Commit Details

view details
  • #2947
    • Propagate long-running filter shutdown failures (fe0178c)
    • Reap long-running filter processes (a1c6bda)
  • Uncategorized
    • Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
    • Use borrowed error inspection throughout the workspace (daf73b5)
    • Migrate errors to gix-error (4662901)
    • Merge pull request #2949 from GitoxideLabs/error-conversion-review (a095334)
    • Raise MSRV to Rust 1.88 (4b42e0c)
    • Merge pull request #2955 from GitoxideLabs/transport-url-encoding (7e35849)
    • Release gix-path v0.12.6, gix-error v0.3.2, gix-command v0.10.1, gix-transport v0.59.2 (888677a)
    • Merge pull request #2946 from GitoxideLabs/fix-filter-leak (88c810e)
    • Merge pull request #2933 from GitoxideLabs/report-august (b8914ff)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.