Skip to content

Latest commit

 

History

History
67 lines (64 loc) · 2.5 KB

TODO

File metadata and controls

67 lines (64 loc) · 2.5 KB

-*- mode: org -*-

add documentation for the library

basic documentation for ENCODE/DECODE

extended documentation on incremental encoding/decoding

add decoding gray streams

Hard because we really want to decode groups at a time. But ascii85 screws that paradigm up with variable-sized groups.

fix ascii85 encoding

Must SHRINK-VECTOR on NIL destination in case we encoded ‘z’.

line-breaking encoded output

This is probably really only doable for encoding to freshly-consed vectors. Certainly it’s much more doable for clients with the upcoming async interface.

compiler macros for optimizing constant-format versions of encode/decode

The trick will be to do this without adding too much bloat. Will probably only do this for a NIL destination, as that’s the case where we have the most to win from inlining the writer closure.

testing

separate encode/decode tests

tests for encoding to octet vectors

tests for encoding to streams

tests for encoding to fill-pointered things

tests for decoding strings

tests for decoding to fill-pointered things

tests for decoding to streams

Going to be hard because there’s not a standard interface for octet streams.

still not sure the decoding interface is right

Trying to do minimal allocation; might have to just suck it up and admit that we are going to over-allocate fairly often.

Especially in the ascii85 case, over-allocation is just a fact of life.

figure out how to make the library fast for non-CMUCL/SBCL

We might just have to accept a bit of code bloat everyplace else, by duplicating logic/functions for simple vs. non-simple. I don’t want to restrict clients to always using simple arrays everywhere.

CCL looks like it ought to be able to get around this, but I can’t find the magic call.

ignoring whitespace when decoding

We are definitely going to over-allocate if we permit whitespace.

other formats

Python’s binascii module has a few we might consider adding.

convert to async API

encode

base16

base32

base64

base85

ascii85

decode

base16

base32

base64

base85

ascii85