La salida comprimida difiere de Ir a la implementación de Ruby

Estoy implementando un programa que desinfla un archivo en un bloc git y lo almacena adecuadamente.

Tengo unruby implementación de referencia que se basa enun artículo del libro de git

Estoy intentando implementar esto en goaqu

in embargo, me encuentro con un problema en el que los datos comprimidos almacenados difieren ligeramente con cada implementación.

vbindiff muestra que los primeros 2 bytes son idénticos (como se ejecuta desdeeste script de prueba) (Si estoy leyendo esto bien). Estos bytes almacenan el método de compresión y las banderas, y las banderas respectivamente (segúnhttps: //tools.ietf.org/html/rfc195). El tercer byte es donde comienza la diferencia, este es el ID del diccionario o el inicio de los datos de entrada originales. Los datos permanecen similares hasta cerca del final del archivo. Supongo que esta es probablemente la diferencia en la suma de comprobación ADLER32.

arece que tanto las implementaciones go y Ruby de zlib no pasan un diccionario a zlib de forma predeterminada (segúngo zlib source yruby zlib source)

Los datos parecen idénticos.

No estoy seguro de si hay un error de implementación en las bibliotecas o si solo me falta algo.

¿Por qué son diferentes estas salidas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta