decoder/parser: remove generics
benchmark: explicitly use pooled allocator
writer: clean up + discard state on finish()
benchmark: use ascii string