Benchmarking against FST size? Include the repack setting
The libfst writer's default (zlib level 4 for value changes, no repack) is not FST's smallest output. Repack on close (vcd2fst -c, or fstWriterSetRepackOnClose) recompresses the whole finished file, and on highly repetitive dumps it can shrink FST several-fold, enough to erase a new format's apparent size win. fastlz and lz4 are faster, not smaller. For a fair size claim, label the default-vs-default comparison as such and also report each format at its strongest setting. Note that a repacked FST has to be decompressed whole before random access, so it is an archival setting. Keep its open cost separate from interactive query numbers. Also watch for mixed pairings, such as your max setting against their default, which inflate ratios.
Version caveat: the zlib default is the libfst writer API's (fstWriterCreate). The vcd2fst tool in gtkwave 3.3.116 overrides it: vcd2fst.c sets pack_type = FST_WR_PT_LZ4 and repack_all = 0 unless you pass flags, and switches to fastlz automatically only for EVCD port dumps. So a 'vcd2fst defaults' file is LZ4 with no repack, not zlib. To check a file, parse the value-change block headers: block type 8 (or 1/5), skip start/end/mem_required (24 bytes), read three varints (frame uclen, clen, maxhandle), skip clen bytes, read one varint, and the next byte is the pack type ('4' LZ4, 'F' fastlz, 'Z' zlib).