Skip to content

yes: Add zero copy fast-path#11294

Open
oech3 wants to merge 1 commit intouutils:mainfrom
oech3:yes-splice
Open

yes: Add zero copy fast-path#11294
oech3 wants to merge 1 commit intouutils:mainfrom
oech3:yes-splice

Conversation

@oech3
Copy link
Contributor

@oech3 oech3 commented Mar 11, 2026

target/release/yes-main |pv>/dev/null
^C.9GiB 0:00:08 [4.96GiB/s]
target/release/yes-zero |pv>/dev/null
^C.4GiB 0:00:09 [10.4GiB/s]

[Edit]

target/release/yes|pv >/dev/null
^C60GiB 0:00:13 [21.2GiB/s]

@github-actions
Copy link

GNU testsuite comparison:

Skip an intermittent issue tests/tty/tty-eof (fails in this run but passes in the 'main' branch)
Congrats! The gnu test tests/pr/bounded-memory is now passing!

@oech3

This comment was marked as outdated.

@oech3 oech3 marked this pull request as ready for review March 11, 2026 15:48
@oech3 oech3 force-pushed the yes-splice branch 5 times, most recently from 4623b6c to 04d18e0 Compare March 11, 2026 19:15
@github-actions
Copy link

GNU testsuite comparison:

Skip an intermittent issue tests/pr/bounded-memory (was skipped on 'main', now failing)

@xtqqczze
Copy link
Contributor

What is the impact on binaries size?

@oech3
Copy link
Contributor Author

oech3 commented Mar 12, 2026

+3240 byte. But why is size high prior more than perf? Also rustix is already dep of clap. I can restrict this to 64bit glibc if size is really important.

@github-actions
Copy link

GNU testsuite comparison:

Skip an intermittent issue tests/pr/bounded-memory (fails in this run but passes in the 'main' branch)
Congrats! The gnu test tests/rm/isatty is no longer failing!
Note: The gnu test tests/cp/link-heap is now being skipped but was previously passing.
Congrats! The gnu test tests/seq/seq-epipe is now passing!

@xtqqczze
Copy link
Contributor

I guess we want this for parity with coreutils/coreutils@2b1c059

Was the implementation not possible using nix instead of rustix?

@oech3
Copy link
Contributor Author

oech3 commented Mar 12, 2026

I was considering zero-copy before GNU do (just lacking time to do...).
nix is depending on rustix which means we could drop nix dep in the future (see #9549).

@github-actions
Copy link

GNU testsuite comparison:

GNU test failed: tests/tail/pipe-f. tests/tail/pipe-f is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/cut/bounded-memory (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/date/date-locale-hour (fails in this run but passes in the 'main' branch)
Note: The gnu test tests/csplit/csplit-heap is now being skipped but was previously passing.

@github-actions
Copy link

GNU testsuite comparison:

Skip an intermittent issue tests/pr/bounded-memory (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/date/date-locale-hour (passes in this run but fails in the 'main' branch)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants