github SaveTheRbtz/zstd-seekable-format-go pkg/v0.10.0-rc.1
v0.10.0-rc1

pre-release7 hours ago

Breaking Changes

Reader, Writer, and Encoder are now concrete types, not interfaces.

// Before
var r seekable.Reader
r, err = seekable.NewReader(rs, dec)

// After
var r *seekable.Reader
r, err = seekable.NewReader(rs, dec)

NewWriter now returns *Writer; ConcurrentWriter was removed. Use *Writer directly for Write, WriteMany, and Close.

// Before
var w seekable.ConcurrentWriter
w, err = seekable.NewWriter(dst, enc)

// After
var w *seekable.Writer
w, err = seekable.NewWriter(dst, enc)

Decoder and NewDecoder were removed. Use NewSeekTable for byte-oriented seek-table inspection.

// Before
d, err := seekable.NewDecoder(seekTableFrame, dec)
entry := d.GetIndexByDecompOffset(off)
size := d.Size()

// After
table, err := seekable.NewSeekTable(seekTableFrame)
entry, ok := table.EntryByDecompressedOffset(off)
size := table.Size()

Reader seek-table inspection moved from Decoder-style methods to Reader.SeekTable.

// Before
entry := d.GetIndexByID(id)
n := d.NumFrames()

// After
table, err := r.SeekTable()
entry, ok := table.EntryByID(id)
n := table.NumFrames()

The env subpackage was removed. Environment interfaces and frame metadata now live in the main package.

// Before
import "github.com/SaveTheRbtz/zstd-seekable-format-go/pkg/env"

func (e customEnv) GetFrameByIndex(entry env.FrameOffsetEntry) ([]byte, error)

// After
func (e customEnv) GetFrameByIndex(entry seekable.FrameOffsetEntry) ([]byte, error)

FrameOffsetEntry field names changed to full names.

// Before
entry.CompOffset
entry.DecompOffset
entry.CompSize
entry.DecompSize

// After
entry.CompressedOffset
entry.DecompressedOffset
entry.CompressedSize
entry.DecompressedSize

Reader and writer option names were expanded.

// Before
seekable.WithRLogger(logger)
seekable.WithREnvironment(env)
seekable.WithWLogger(logger)
seekable.WithWEnvironment(env)

// After
seekable.WithReaderLogger(logger)
seekable.WithReaderEnvironment(env)
seekable.WithWriterLogger(logger)
seekable.WithWriterEnvironment(env)

Option types were renamed.

// Before
func custom(o *seekable.rOption) {} // or seekable.wOption usage

// After
var ro seekable.ReaderOption
var wo seekable.WriterOption

WithWriteCallback now receives full frame metadata instead of only compressed size.

// Before
seekable.WithWriteCallback(func(size uint32) {
    written += uint64(size)
})

// After
seekable.WithWriteCallback(func(entry seekable.FrameOffsetEntry) {
    written += uint64(entry.CompressedSize)
})

NewReader, NewWriter, and NewEncoder now use the renamed option types and return concrete pointers.

// Before
r, err := seekable.NewReader(rs, dec, seekable.WithRLogger(logger))
e, err := seekable.NewEncoder(enc, seekable.WithWLogger(logger))

// After
r, err := seekable.NewReader(rs, dec, seekable.WithReaderLogger(logger))
e, err := seekable.NewEncoder(enc, seekable.WithWriterLogger(logger))

What's Changed

Full Changelog: pkg/v0.9.0...pkg/v0.10.0-rc.1

Don't miss a new zstd-seekable-format-go release

NewReleases is sending notifications on new releases.