Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0ca8e14
feat(serder): NonCanonical error variant for the strict read path (#142)
joeldsouzax Jul 10, 2026
b6c10c4
feat(serder): strict canonical scanner core (#142)
joeldsouzax Jul 10, 2026
4688264
fix(serder): canonical scanner review fixes — precise UTF-8 offset, p…
joeldsouzax Jul 10, 2026
f67f9f9
feat(serder): canonical value grammars — arrays, tholder, count, seal…
joeldsouzax Jul 10, 2026
6fa4a67
refactor(serder): dedupe canonical array grammar loops (#142)
joeldsouzax Jul 10, 2026
34707f8
feat(serder): per-ilk strict grammars with fixed-offset version valid…
joeldsouzax Jul 10, 2026
9cd8b87
fix(serder): version-string parse must never panic on non-ASCII bytes…
joeldsouzax Jul 10, 2026
12f3547
feat(serder): offset-based SAID verification — copy-once, fill spans,…
joeldsouzax Jul 10, 2026
8991b1e
feat(serder)!: rewire deserializers onto the strict canonical parser …
joeldsouzax Jul 10, 2026
600635c
feat(serder)!: verify_said goes strict and returns Result<(), SerderE…
joeldsouzax Jul 10, 2026
e44e2aa
docs(serder): document verify_said's explicit digest-code contract (#…
joeldsouzax Jul 10, 2026
f4dbb8f
refactor(serder): extract shared event proptest strategies (#142)
joeldsouzax Jul 10, 2026
7edd725
test(serder): strict-vs-reference read-path differential and mutation…
joeldsouzax Jul 10, 2026
d2e14b1
test(serder): pin strict read-path allocation count (#142)
joeldsouzax Jul 10, 2026
b3e1a43
bench(serder): deserialize_event throughput for CodSpeed (#142)
joeldsouzax Jul 10, 2026
5aa206d
ci(fuzz): strict serder deserialize fuzz target for both engines (#142)
joeldsouzax Jul 10, 2026
9aae37c
docs(serder): describe the strict canonical read path (#142)
joeldsouzax Jul 10, 2026
9fee41b
docs(plan): #142 strict canonical read-path implementation plan
joeldsouzax Jul 10, 2026
bc684b2
fix(docs): correct scanner test literal in plan doc to match source (…
joeldsouzax Jul 10, 2026
40e520c
test(serder): deterministic per-variant coverage matrix for the stric…
joeldsouzax Jul 10, 2026
dedb299
docs(serder): cross-reference variant-matrix tests with the suites th…
joeldsouzax Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/fuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ jobs:
- stream_parse_version_string
- stream_parse_version_string_v2
- qb64_qb2_roundtrip
- serder_deserialize_event
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -167,6 +168,7 @@ jobs:
- stream_parse_version_string
- stream_parse_version_string_v2
- qb64_qb2_roundtrip
- serder_deserialize_event
env:
# AFL++ refuses to run under a locked-down CI sandbox without these.
AFL_SKIP_CPUFREQ: "1"
Expand Down
18 changes: 16 additions & 2 deletions cesr/benches/serder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use cesr::core::matter::builder::MatterBuilder;
use cesr::core::matter::code::{DigestCode, VerKeyCode};
use cesr::core::primitives::{Prefixer, Saider, Seqner, Tholder};
use cesr::keri::{ConfigTrait, Identifier, InceptionEvent, InteractionEvent, Seal};
use cesr::serder::{DirectJson, EventRef, SerdeJson, serialize_with};
use cesr::serder::{DirectJson, EventRef, SerdeJson, deserialize_event, serialize_with};
use core::hint::black_box;
use criterion::{Criterion, criterion_group, criterion_main};

Expand Down Expand Up @@ -104,5 +104,19 @@ fn bench_serialize(c: &mut Criterion) {
group.finish();
}

criterion_group!(benches, bench_serialize);
fn bench_deserialize(c: &mut Criterion) {
let icp = fixture_icp();
let Ok(serialized) = serialize_with(&SerdeJson, EventRef::Inception(&icp)) else {
unreachable!("fixture_icp always serializes")
};
let bytes = serialized.as_bytes();

let mut group = c.benchmark_group("serder_deserialize");
group.bench_function("icp", |b| {
b.iter(|| deserialize_event(black_box(bytes)));
});
group.finish();
}

criterion_group!(benches, bench_serialize, bench_deserialize);
criterion_main!(benches);
Loading
Loading