Tags give the ability to mark specific points in history as being important
  • codec/bench/v1.2.7
    Release 1.2.7
    
    This is a production release of go-codec.
    
    Changes include:
    
    - support registering extension functions for time.Time
    - fix bugs with encoding/decoding very-nested slices in specific cases
    
    Please try it out and share your experiences.
  • codec/codecgen/v1.2.7
    Release 1.2.7
    
    This is a production release of go-codec.
    
    Changes include:
    
    - support registering extension functions for time.Time
    - fix bugs with encoding/decoding very-nested slices in specific cases
    
    Please try it out and share your experiences.
  • codec/v1.2.7
    Release 1.2.7
    
    This is a production release of go-codec.
    
    Changes include:
    
    - support registering extension functions for time.Time
    - fix bugs with encoding/decoding very-nested slices in specific cases
    
    Please try it out and share your experiences.
  • v1.2.7
    Release 1.2.7
    
    This is a production release of go-codec.
    
    Changes include:
    
    - support registering extension functions for time.Time
    - fix bugs with encoding/decoding very-nested slices in specific cases
    
    Please try it out and share your experiences.
  • codec/bench/v1.2.6
    Release 1.2.6
    
    This is a production release of go-codec.
    
    Changes include:
    
    - EncodeOptions.NoAddressableReadonly
    - streamline/reduce size of helper types
    - optimize side(En|De)code and (En|De)codeExt calls
    - decode a number from any number in the stream i.e.
      you can decode a float/integer/unsigned integer from any number in stream
    - clean up tests so they work completely regardless if we recover from panics
    - improve inlining of common functions
    
    Please try it out and share your experiences.
  • codec/codecgen/v1.2.6
    Release 1.2.6
    
    This is a production release of go-codec.
    
    Changes include:
    
    - EncodeOptions.NoAddressableReadonly
    - streamline/reduce size of helper types
    - optimize side(En|De)code and (En|De)codeExt calls
    - decode a number from any number in the stream i.e.
      you can decode a float/integer/unsigned integer from any number in stream
    - clean up tests so they work completely regardless if we recover from panics
    - improve inlining of common functions
    
    Please try it out and share your experiences.
  • codec/v1.2.6
    Release 1.2.6
    
    This is a production release of go-codec.
    
    Changes include:
    
    - EncodeOptions.NoAddressableReadonly
    - streamline/reduce size of helper types
    - optimize side(En|De)code and (En|De)codeExt calls
    - decode a number from any number in the stream i.e.
      you can decode a float/integer/unsigned integer from any number in stream
    - clean up tests so they work completely regardless if we recover from panics
    - improve inlining of common functions
    
    Please try it out and share your experiences.
  • v1.2.6
    Release 1.2.6
    
    This is a production release of go-codec.
    
    Changes include:
    
    - EncodeOptions.NoAddressableReadonly
    - streamline/reduce size of helper types
    - optimize side(En|De)code and (En|De)codeExt calls
    - decode a number from any number in the stream i.e.
      you can decode a float/integer/unsigned integer from any number in stream
    - clean up tests so they work completely regardless if we recover from panics
    - improve inlining of common functions
    
    Please try it out and share your experiences.
  • codec/bench/v1.2.5
    Release 1.2.5
    
    This is a production release of go-codec.
    
    This is a very important release, building upon the optimization introduced in v1.2.4.
    
    Changes include:
    
    - support gollvm in addition to gccgo in default high-performance mode
    - support codec.safe and codec.notfastpath as preferred build tags (replacing safe and notfastpath)
    - support Canonical mode with MissingFielder
    - robust handling of codecgen caveats wrt Canonical|CheckCircularRef flags and MissingFielder implementations
    - robust handling of transient values, where we track if a value has internal pointers and handle appropriately
    - reduce use of global values: all in-use values are scoped to an Encoder or Decoder
    - implement stateManager for Encoder/Decoder, supporting capture, reset and restore functions.
    - side encoding or decoding can now reuse an Encoder/Decoder, leveraging state management to
      capture its state, do something else, then restore its state and continue
    - support running all tests in parallel, so we can shake out any concurrency issues
    - Fix issue in rpc where writer was not being flushed, causing a hang where reader was
      waiting on an encoded value
    - Support shallow copies of a Handle, to support parallel execution where we need to
      temporarily change some Handler fields
    
    This is the best release yet. Please try it out and share your experiences.
  • codec/codecgen/v1.2.5
    Release 1.2.5
    
    This is a production release of go-codec.
    
    This is a very important release, building upon the optimization introduced in v1.2.4.
    
    Changes include:
    
    - support gollvm in addition to gccgo in default high-performance mode
    - support codec.safe and codec.notfastpath as preferred build tags (replacing safe and notfastpath)
    - support Canonical mode with MissingFielder
    - robust handling of codecgen caveats wrt Canonical|CheckCircularRef flags and MissingFielder implementations
    - robust handling of transient values, where we track if a value has internal pointers and handle appropriately
    - reduce use of global values: all in-use values are scoped to an Encoder or Decoder
    - implement stateManager for Encoder/Decoder, supporting capture, reset and restore functions.
    - side encoding or decoding can now reuse an Encoder/Decoder, leveraging state management to
      capture its state, do something else, then restore its state and continue
    - support running all tests in parallel, so we can shake out any concurrency issues
    - Fix issue in rpc where writer was not being flushed, causing a hang where reader was
      waiting on an encoded value
    - Support shallow copies of a Handle, to support parallel execution where we need to
      temporarily change some Handler fields
    
    This is the best release yet. Please try it out and share your experiences.
  • codec/v1.2.5
    Release 1.2.5
    
    This is a production release of go-codec.
    
    This is a very important release, building upon the optimization introduced in v1.2.4.
    
    Changes include:
    
    - support gollvm in addition to gccgo in default high-performance mode
    - support codec.safe and codec.notfastpath as preferred build tags (replacing safe and notfastpath)
    - support Canonical mode with MissingFielder
    - robust handling of codecgen caveats wrt Canonical|CheckCircularRef flags and MissingFielder implementations
    - robust handling of transient values, where we track if a value has internal pointers and handle appropriately
    - reduce use of global values: all in-use values are scoped to an Encoder or Decoder
    - implement stateManager for Encoder/Decoder, supporting capture, reset and restore functions.
    - side encoding or decoding can now reuse an Encoder/Decoder, leveraging state management to
      capture its state, do something else, then restore its state and continue
    - support running all tests in parallel, so we can shake out any concurrency issues
    - Fix issue in rpc where writer was not being flushed, causing a hang where reader was
      waiting on an encoded value
    - Support shallow copies of a Handle, to support parallel execution where we need to
      temporarily change some Handler fields
    
    This is the best release yet. Please try it out and share your experiences.
  • v1.2.5
    Release 1.2.5
    
    This is a production release of go-codec.
    
    This is a very important release, building upon the optimization introduced in v1.2.4.
    
    Changes include:
    
    - support gollvm in addition to gccgo in default high-performance mode
    - support codec.safe and codec.notfastpath as preferred build tags (replacing safe and notfastpath)
    - support Canonical mode with MissingFielder
    - robust handling of codecgen caveats wrt Canonical|CheckCircularRef flags and MissingFielder implementations
    - robust handling of transient values, where we track if a value has internal pointers and handle appropriately
    - reduce use of global values: all in-use values are scoped to an Encoder or Decoder
    - implement stateManager for Encoder/Decoder, supporting capture, reset and restore functions.
    - side encoding or decoding can now reuse an Encoder/Decoder, leveraging state management to
      capture its state, do something else, then restore its state and continue
    - support running all tests in parallel, so we can shake out any concurrency issues
    - Fix issue in rpc where writer was not being flushed, causing a hang where reader was
      waiting on an encoded value
    - Support shallow copies of a Handle, to support parallel execution where we need to
      temporarily change some Handler fields
    
    This is the best release yet. Please try it out and share your experiences.
  • codec/bench/v1.2.4
    Release 1.2.4
    
    This is a production release of go-codec.
    
    This is a very important release, which focused on optimization across the board to
    ensure that go-codec is the most performant library for popular encoding formats.
    
    Optimizations across the board include:
    
    - optimization by eliding allocation where not necessary e.g.
      - when encoding non-addressable value with ptr receiver
      - map iteration/access
      - decoding floats
      - creating slices or sub-slices (removing temporary slice allocated on heap)
      - decoding map keys if both key and value kinds are scalars
      - decoding map values if value kind is a scalar
    - better reuse of pool'ed []byte(s)
    - leveraging mapXXX_fastXXX calls where possible
    - better inlining (where applicable) e.g. arrayStart, mapStart, etc
    - support complex numbers (where we treat complex numbers as floats with imaginary part = 0)
    - optimize encoding and decoding arrays, including using fast-paths for slices as applicable
    - use runtime's growslice algorithm when growing arrays for better performance
    - optimize nextValueBytes and swallow so they do not allocate when applicable e.g.
      do not allocate/copy bytes if swallow is called or you were decoding from a []byte (just return a sub-slice)
    - optimize isEmptyStruct to just compare if value == zero'es (instead of field by field),
      simulating comparing to zero value.
    
    To guarantee better fairness in benchmarking, we did the following:
    - use common types in benchmarks and common methods to ensure fairness in benchmarks
    - run benchmarks with ZeroCopy=true and (MapValue|Interface|SliceElement)Reset = true,
      aligning with how other libraries operate by default
    
    With these changes, we have reflection-based mode performing within 25% of codecgen,
    with similar allocation numbers as codecgen. For example, encoding typically has just 1
    allocation without codecgen (just as in codecgen).
    
    This is the best release yet. Please try it out and share your experiences.
  • codec/codecgen/v1.2.4
    Release 1.2.4
    
    This is a production release of go-codec.
    
    This is a very important release, which focused on optimization across the board to
    ensure that go-codec is the most performant library for popular encoding formats.
    
    Optimizations across the board include:
    
    - optimization by eliding allocation where not necessary e.g.
      - when encoding non-addressable value with ptr receiver
      - map iteration/access
      - decoding floats
      - creating slices or sub-slices (removing temporary slice allocated on heap)
      - decoding map keys if both key and value kinds are scalars
      - decoding map values if value kind is a scalar
    - better reuse of pool'ed []byte(s)
    - leveraging mapXXX_fastXXX calls where possible
    - better inlining (where applicable) e.g. arrayStart, mapStart, etc
    - support complex numbers (where we treat complex numbers as floats with imaginary part = 0)
    - optimize encoding and decoding arrays, including using fast-paths for slices as applicable
    - use runtime's growslice algorithm when growing arrays for better performance
    - optimize nextValueBytes and swallow so they do not allocate when applicable e.g.
      do not allocate/copy bytes if swallow is called or you were decoding from a []byte (just return a sub-slice)
    - optimize isEmptyStruct to just compare if value == zero'es (instead of field by field),
      simulating comparing to zero value.
    
    To guarantee better fairness in benchmarking, we did the following:
    - use common types in benchmarks and common methods to ensure fairness in benchmarks
    - run benchmarks with ZeroCopy=true and (MapValue|Interface|SliceElement)Reset = true,
      aligning with how other libraries operate by default
    
    With these changes, we have reflection-based mode performing within 25% of codecgen,
    with similar allocation numbers as codecgen. For example, encoding typically has just 1
    allocation without codecgen (just as in codecgen).
    
    This is the best release yet. Please try it out and share your experiences.
  • codec/v1.2.4
    Release 1.2.4
    
    This is a production release of go-codec.
    
    This is a very important release, which focused on optimization across the board to
    ensure that go-codec is the most performant library for popular encoding formats.
    
    Optimizations across the board include:
    
    - optimization by eliding allocation where not necessary e.g.
      - when encoding non-addressable value with ptr receiver
      - map iteration/access
      - decoding floats
      - creating slices or sub-slices (removing temporary slice allocated on heap)
      - decoding map keys if both key and value kinds are scalars
      - decoding map values if value kind is a scalar
    - better reuse of pool'ed []byte(s)
    - leveraging mapXXX_fastXXX calls where possible
    - better inlining (where applicable) e.g. arrayStart, mapStart, etc
    - support complex numbers (where we treat complex numbers as floats with imaginary part = 0)
    - optimize encoding and decoding arrays, including using fast-paths for slices as applicable
    - use runtime's growslice algorithm when growing arrays for better performance
    - optimize nextValueBytes and swallow so they do not allocate when applicable e.g.
      do not allocate/copy bytes if swallow is called or you were decoding from a []byte (just return a sub-slice)
    - optimize isEmptyStruct to just compare if value == zero'es (instead of field by field),
      simulating comparing to zero value.
    
    To guarantee better fairness in benchmarking, we did the following:
    - use common types in benchmarks and common methods to ensure fairness in benchmarks
    - run benchmarks with ZeroCopy=true and (MapValue|Interface|SliceElement)Reset = true,
      aligning with how other libraries operate by default
    
    With these changes, we have reflection-based mode performing within 25% of codecgen,
    with similar allocation numbers as codecgen. For example, encoding typically has just 1
    allocation without codecgen (just as in codecgen).
    
    This is the best release yet. Please try it out and share your experiences.
  • v1.2.4
    Release 1.2.4
    
    This is a production release of go-codec.
    
    This is a very important release, which focused on optimization across the board to
    ensure that go-codec is the most performant library for popular encoding formats.
    
    Optimizations across the board include:
    
    - optimization by eliding allocation where not necessary e.g.
      - when encoding non-addressable value with ptr receiver
      - map iteration/access
      - decoding floats
      - creating slices or sub-slices (removing temporary slice allocated on heap)
      - decoding map keys if both key and value kinds are scalars
      - decoding map values if value kind is a scalar
    - better reuse of pool'ed []byte(s)
    - leveraging mapXXX_fastXXX calls where possible
    - better inlining (where applicable) e.g. arrayStart, mapStart, etc
    - support complex numbers (where we treat complex numbers as floats with imaginary part = 0)
    - optimize encoding and decoding arrays, including using fast-paths for slices as applicable
    - use runtime's growslice algorithm when growing arrays for better performance
    - optimize nextValueBytes and swallow so they do not allocate when applicable e.g.
      do not allocate/copy bytes if swallow is called or you were decoding from a []byte (just return a sub-slice)
    - optimize isEmptyStruct to just compare if value == zero'es (instead of field by field),
      simulating comparing to zero value.
    
    To guarantee better fairness in benchmarking, we did the following:
    - use common types in benchmarks and common methods to ensure fairness in benchmarks
    - run benchmarks with ZeroCopy=true and (MapValue|Interface|SliceElement)Reset = true,
      aligning with how other libraries operate by default
    
    With these changes, we have reflection-based mode performing within 25% of codecgen,
    with similar allocation numbers as codecgen. For example, encoding typically has just 1
    allocation without codecgen (just as in codecgen).
    
    This is the best release yet. Please try it out and share your experiences.
  • codec/bench/v1.2.3
    Release 1.2.3
    
    This is a production release of go-codec.
    
    This optimizes decoding for *zero-copy* mode when decoding from a string or []byte.
    
    With this mode, we see 50% reduction in allocation in both codecgen and normal execution,
    and this gives performance better than other libraries (easyjson, json-iterator, etc)
    while providing much more features and supported formats (json, cbor, msgpack, simple, etc).
  • codec/codecgen/v1.2.3
    Release 1.2.3
    
    This is a production release of go-codec.
    
    This optimizes decoding for *zero-copy* mode when decoding from a string or []byte.
    
    With this mode, we see 50% reduction in allocation in both codecgen and normal execution,
    and this gives performance better than other libraries (easyjson, json-iterator, etc)
    while providing much more features and supported formats (json, cbor, msgpack, simple, etc).
  • codec/v1.2.3
    Release 1.2.3
    
    This is a production release of go-codec.
    
    This optimizes decoding for *zero-copy* mode when decoding from a string or []byte.
    
    With this mode, we see 50% reduction in allocation in both codecgen and normal execution,
    and this gives performance better than other libraries (easyjson, json-iterator, etc)
    while providing much more features and supported formats (json, cbor, msgpack, simple, etc).
  • v1.2.3
    Release 1.2.3
    
    This is a production release of go-codec.
    
    This optimizes decoding for *zero-copy* mode when decoding from a string or []byte.
    
    With this mode, we see 50% reduction in allocation in both codecgen and normal execution,
    and this gives performance better than other libraries (easyjson, json-iterator, etc)
    while providing much more features and supported formats (json, cbor, msgpack, simple, etc).