Skip to content

Propagate reader I/O errors and some polishing - #689

Merged
wcampbell0x2a merged 9 commits into
masterfrom
sharksforarms/reader-errors-pr
Nov 1, 2026
Merged

wcampbell0x2a merged 9 commits into
masterfrom
sharksforarms/reader-errors-pr

Conversation

@sharksforarms

Copy link
Copy Markdown
Owner
  • (Breaking) Replace Reader::end() with fallible Reader::try_end() and propagate I/O errors through bit reads and read_all collection parsing
  • Expand the test feature matrix and add regression coverage for renamed dependencies, no-bits behavior, and padding expectations
  • Some more cleanup, see commits

@sharksforarms
sharksforarms force-pushed the sharksforarms/reader-errors-pr branch 2 times, most recently from 939030f to ad5aae3 Compare October 18, 2026 14:40
@sharksforarms
sharksforarms added this pull request to stack #692 October 18, 2026 18:40
@sharksforarms
sharksforarms force-pushed the sharksforarms/reader-errors-pr branch from ad5aae3 to e322a12 Compare October 18, 2026 18:41
@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Gungraun Benchmark (bebits_callgrind) for 65e86bf

Click to view benchmark
Test Base PR %
bebits_callgrind::read_group::be_tm_primary_header_11_fields bytes (cursor()) Instructions 96 95 -1.04%
bebits_callgrind::read_group::be_tm_primary_header_11_fields bytes (cursor()) Estimated Cycles 461 426 -7.59%
bebits_callgrind::read_group::be_six_bytes_aligned bytes (cursor()) Instructions 58 58 0.00%
bebits_callgrind::read_group::be_six_bytes_aligned bytes (cursor()) Estimated Cycles 284 284 0.00%
bebits_callgrind::read_group::be_one_bit_in_u64 bytes (cursor()) Instructions 20 20 0.00%
bebits_callgrind::read_group::be_one_bit_in_u64 bytes (cursor()) Estimated Cycles 135 135 0.00%
bebits_callgrind::read_group::be_tm_primary_header_x128 bytes (Cursor :: new(stream_vec())) Instructions 14,462 14,462 0.00%
bebits_callgrind::read_group::be_tm_primary_header_x128 bytes (Cursor :: new(stream_vec())) Estimated Cycles 16,927 16,893 -0.20%
bebits_callgrind::read_group::be_six_bytes_aligned_x128 bytes (Cursor :: new(stream_vec())) Instructions 7,424 7,424 0.00%
bebits_callgrind::read_group::be_six_bytes_aligned_x128 bytes (Cursor :: new(stream_vec())) Estimated Cycles 11,767 11,767 0.00%
bebits_callgrind::read_group::be_one_bit_in_u64_x1024 bytes (Cursor :: new(stream_vec())) Instructions 3,913 3,913 0.00%
bebits_callgrind::read_group::be_one_bit_in_u64_x1024 bytes (Cursor :: new(stream_vec())) Estimated Cycles 4,652 4,652 0.00%
bebits_callgrind::read_group::be_byte_arrays_x96 bytes (Cursor :: new(stream_vec())) Instructions 3,967 3,967 0.00%
bebits_callgrind::read_group::be_byte_arrays_x96 bytes (Cursor :: new(stream_vec())) Estimated Cycles 5,714 5,714 0.00%
bebits_callgrind::write_group::be_write_tm_primary_header_11_fields header (header()) Instructions 485 485 0.00%
bebits_callgrind::write_group::be_write_tm_primary_header_11_fields header (header()) Estimated Cycles 2,345 2,337 -0.34%
bebits_callgrind::write_group::be_write_six_bytes_aligned six (six()) Instructions 505 505 0.00%
bebits_callgrind::write_group::be_write_six_bytes_aligned six (six()) Estimated Cycles 2,320 2,256 -2.76%
bebits_callgrind::write_group::be_write_tm_primary_header_x128 header (header()) Instructions 29,771 29,771 0.00%
bebits_callgrind::write_group::be_write_tm_primary_header_x128 header (header()) Estimated Cycles 38,518 38,412 -0.28%
bebits_callgrind::write_group::be_write_six_bytes_aligned_x128 six (six()) Instructions 32,717 32,717 0.00%
bebits_callgrind::write_group::be_write_six_bytes_aligned_x128 six (six()) Estimated Cycles 46,855 46,821 -0.07%
bebits_callgrind::write_group::be_write_byte_arrays_x96 addresses (addresses()) Instructions 9,068 9,068 0.00%
bebits_callgrind::write_group::be_write_byte_arrays_x96 addresses (addresses()) Estimated Cycles 13,397 13,393 -0.03%

Gungraun Benchmark (deku_callgrind) for 65e86bf

Click to view benchmark
Test Base PR %
deku_callgrind::read_group::read_bytes bytes (cursor(& [0x01; 1 + 2 + 4])) Instructions 42 42 0.00%
deku_callgrind::read_group::read_bytes bytes (cursor(& [0x01; 1 + 2 + 4])) Estimated Cycles 229 229 0.00%
deku_callgrind::read_group::read_bits bits (cursor(& [0x01; 1])) Instructions 10,837 10,847 +0.09%
deku_callgrind::read_group::read_bits bits (cursor(& [0x01; 1])) Estimated Cycles 19,913 19,958 +0.23%
deku_callgrind::read_group::read_enum enum_variant (cursor(& [0x01; 2])) Instructions 31 31 0.00%
deku_callgrind::read_group::read_enum enum_variant (cursor(& [0x01; 2])) Estimated Cycles 184 218 +18.48%
deku_callgrind::read_group::read_vec vec (cursor(& [0x08; 8 + 1])) Instructions 367 365 -0.54%
deku_callgrind::read_group::read_vec vec (cursor(& [0x08; 8 + 1])) Estimated Cycles 1,091 1,055 -3.30%
deku_callgrind::read_group::read_bits_be_u64 be_u64 (cursor(& [0xab; 8])) Instructions 75 75 0.00%
deku_callgrind::read_group::read_bits_be_u64 be_u64 (cursor(& [0xab; 8])) Estimated Cycles 374 340 -9.09%
deku_callgrind::read_group::read_bits_be_u32 be_u32 (cursor(& [0xab; 4])) Instructions 48 48 0.00%
deku_callgrind::read_group::read_bits_be_u32 be_u32 (cursor(& [0xab; 4])) Estimated Cycles 272 204 -25.00%
deku_callgrind::read_group::read_bits_le_u64 le_u64 (cursor(& [0xab; 8])) Instructions 9,818 9,830 +0.12%
deku_callgrind::read_group::read_bits_le_u64 le_u64 (cursor(& [0xab; 8])) Estimated Cycles 17,606 17,691 +0.48%
deku_callgrind::read_group::read_all read_all (cursor(& [1u8; 1500])) Instructions 37,910 37,909 -0.00%
deku_callgrind::read_group::read_all read_all (cursor(& [1u8; 1500])) Estimated Cycles 66,449 66,460 +0.02%
deku_callgrind::read_group::read_count_specialize count_specialize (cursor(& [1u8; 1500])) Instructions 589 587 -0.34%
deku_callgrind::read_group::read_count_specialize count_specialize (cursor(& [1u8; 1500])) Estimated Cycles 2,936 2,900 -1.23%
deku_callgrind::read_group::read_count_no_specialize count_no_specialize (cursor(& [1u8; 1500])) Instructions 21,271 21,270 -0.00%
deku_callgrind::read_group::read_count_no_specialize count_no_specialize (cursor(& [1u8; 1500])) Estimated Cycles 33,911 33,876 -0.10%
deku_callgrind::write_group::write_bytes Instructions 432 433 +0.23%
deku_callgrind::write_group::write_bytes Estimated Cycles 1,972 1,973 +0.05%
deku_callgrind::write_group::write_bits Instructions 421 421 0.00%
deku_callgrind::write_group::write_bits Estimated Cycles 1,848 1,916 +3.68%
deku_callgrind::write_group::write_enum Instructions 410 411 +0.24%
deku_callgrind::write_group::write_enum Estimated Cycles 1,866 1,867 +0.05%
deku_callgrind::write_group::write_vec Instructions 4,984 4,985 +0.02%
deku_callgrind::write_group::write_vec Estimated Cycles 8,977 8,986 +0.10%

Gungraun Benchmark (protocol_pipeline_callgrind) for 65e86bf

Click to view benchmark
Test Base PR %
protocol_pipeline_callgrind::read_group::pipeline_mixed_x256 mixed (Cursor :: new(stream())) Instructions 42,477 42,477 0.00%
protocol_pipeline_callgrind::read_group::pipeline_mixed_x256 mixed (Cursor :: new(stream())) Estimated Cycles 58,007 58,007 0.00%
protocol_pipeline_callgrind::write_group::pipeline_write_mixed_x256 mixed (packets()) Instructions 88,971 88,971 0.00%
protocol_pipeline_callgrind::write_group::pipeline_write_mixed_x256 mixed (packets()) Estimated Cycles 126,777 126,709 -0.05%

@wcampbell0x2a
wcampbell0x2a merged commit ab492a4 into master Nov 1, 2026
11 checks passed
@wcampbell0x2a
wcampbell0x2a deleted the sharksforarms/reader-errors-pr branch November 1, 2026 15:58
@github-actions github-actions Bot mentioned this pull request Nov 1, 2026
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