* `restrict` for strings * isStr has issue with casting to a non-compatible type under strict-aliasing * security issue with line buffer resizing, ensure that the line is not so large that the length value overflows. OOM error if it is. * replace most uint32_ts with usizes * reorder structs for packing * move the tag to outer struct? * remove freeIfSome, free already does that check * consider arena allocation for both rust and C versions * isStr should return a bool, otherwise it doesn't clarify anything * remove snowman