github GitoxideLabs/gitoxide gix-features-v0.49.1
gix-features v0.49.1

one hour ago

Bug Fixes

  • don't append a whole periodic() interval to every in_parallel_with_slice call
    The interrupt-watching thread sleeps out its whole interval, and
    stop_everything is only set at the end of the enclosing std::thread::scope,
    after every worker has been joined. The watcher lives in that same scope, so the
    sleep is appended to the call rather than overlapped with it: the function cannot
    return in less than one interval however little work it was given, and all of
    that interval is dead time.

    gix-pack's delta traversal asks for 50 ms and Tree::traverse is
    unconditional in write_data_iter_to_stream, so every index-pack pays it. An
    8-object 490-byte pack — a five-file commit — measured 50.22 ms as the minimum of
    101 calls, for 3 ms of process CPU, with no sample of a hundred below 45 ms.
    strace -e trace=clock_nanosleep shows exactly one 50 ms sleep per call.

    Park instead of sleeping, and unpark once there is nothing left to watch. The
    inner loop re-parks for the remaining time so a spurious wake-up cannot shorten
    the interval a caller asked for, and no mutex is needed because an unpark that
    arrives before the park_timeout is remembered by the park token. The three
    exits of the join loop — normal, consumer error, worker panic — all unpark, so a
    failure is not held open for an interval either.

Commit Statistics

  • 5 commits contributed to the release over the course of 30 calendar days.
  • 30 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Update manifests prior to release (ebe9095)
    • Merge pull request #2877 from Ignalina/fix/in-parallel-with-slice-watcher-sleep (c08cdc8)
    • Review (9fe5c02)
    • Don't append a whole periodic() interval to every in_parallel_with_slice call (5f882bc)
    • Merge pull request #2812 from GitoxideLabs/report-july (ae8845a)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.