-
Notifications
You must be signed in to change notification settings - Fork 29
Open
Milestone
Description
Required tasks:
- Use static dispatch instead of dynamic dispatch
- Use
staticinstead ofconstfor pre-defined encodings - Make
Encodingimplementation private - Add
_uninit()version to supportMaybeUninitoutputs - Move development work in
lib/v3 - Make
encode_len()return aResultsuch that{en,de}code_len()return an error (could be a newErrorKind::Overflow) in case the following arithmetic would overflow by computing the bound and documenting it (see Document length limits for which functions are guaranteed to produce the correct result #145) - Introduce explicit traits to avoid users seeing
TrueandFalse(also useful to avoid parameter ordering issues) - Restrict symbols to printable/graphical ASCII?
- Do we really need wrapping separator of up to 255 bytes? Seems like 15 would be enough.
- Add a third option for padding: NoPad, PadConcat, PadFinal (new). [context]
- Do not panic for recoverable errors, return an error instead (see avoid panic in
decode_mut#126) actually we should be no-panic on no-alloc - It should be possible to define custom encodings with
const fn - Figure out MSRV (in particular if 1.84 would solve the problem definitely)
- Update documentation once satisfied with the design
- Update OSS-Fuzz to also fuzz
lib/v3
Optional tasks:
- Consider whether wrapping should be limited to multiple of the decoding block (use case)
- Identify and fix performance regression with "wrap" functions
- Add SIMD support (see SIMD optimization #95)
- Consider whether a "short input" engine for base58, nix-base32, etc would be worth it (see Support Nix base32 #110)
After release:
- Update OSS-Fuzz if needed
dzmitry-lahoda
Metadata
Metadata
Assignees
Labels
No labels