Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update module github.com/ugorji/go/codec to v1.2.7 #22

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented May 26, 2022

Mend Renovate

This PR contains the following updates:

Package Type Update Change
github.com/ugorji/go/codec require minor v1.1.7 -> v1.2.7

Release Notes

ugorji/go

v1.2.7

Compare Source

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.6

Compare Source

This is a production release of go-codec.

Changes include:

  • support EncodeOptions.NoAddressableReadonly option
  • 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.5

Compare Source

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.4

Compare Source

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.3

Compare Source

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.2

Compare Source

This is a production release of go-codec.

This includes a fix for decoding into nested anonymous fields (github issue #​350).

v1.2.1

Compare Source

This is a production release of go-codec.

This includes a fix for codecgen when using omitempty (github issue #​344).

v1.2.0

Compare Source

This is a production release of go-codec.

Today marks 1 full year after the 11th day of the 11th month of last year,
a very very special day in my life.

On this very special day, we release the latest patch release of v1.1 and it
matches with the first release of v1.2.0 of go-codec.

This release should be about 10% faster during decode than previous releases.

Beyond performance, the focus was on cleaning up the codebase while maintaining support
for much earlier releases of go, and supporting gccgo.

Changes

  • support gccgo
  • improve performance in looking up fast-path functions or cached struct information
  • optimize json's encoding and decoding of numbers (integers and floats) and strings
  • optimize base reading primitive functions, to reduce pointer-chasing
  • optimize map iteration and lookup

See benchmark results run on a very complicated struct full of embedded types, with multiple nested levels.
Each struct value encodes as 47K of tightly packed json or 37K of binary msgpack or cbor.

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we continue to achieve that!

v1.1.14

Compare Source

This is a production release of go-codec.

Today marks 1 full year after the 11th day of the 11th month of last year,
a very very special day in my life.

On this very special day, we release the latest patch release of v1.1 and it
matches with the first release of v1.2 of go-codec.

This release should be about 10% faster during decode than previous releases.

Beyond performance, the focus was on cleaning up the codebase while maintaining support
for much earlier releases of go, and supporting gccgo.

Changes

  • support gccgo
  • improve performance in looking up fast-path functions or cached struct information
  • optimize json's encoding and decoding of numbers (integers and floats) and strings
  • optimize base reading primitive functions, to reduce pointer-chasing
  • optimize map iteration and lookup

See benchmark results run on a very complicated struct full of embedded types, with multiple nested levels.
Each struct value encodes as 47K of tightly packed json or 37K of binary msgpack or cbor.

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we continue to achieve that!

v1.1.13

Compare Source

This is a production release of go-codec.

This release should be about 10% faster during decode than previous releases.

Changes

  • 10% faster on decode and encoding if omitempty is configured
  • improved performance in looking up struct field values when decoding structs
  • codecgen: support generating reduced code for json only, omitempty support, or to_array support
  • omitempty: support for IsCodecEmpty, a custom way of checking if a value is empty
  • omitempty: optimize comparing to zero'es to check if a value is empty
  • stack overflow/circular references: optimize check by push/popping a stack

See benchmark results run on a very complicated struct full of embedded types, with multiple nested levels.
Each struct value encodes as 47K of tightly packed json or 37K of binary msgpack or cbor.

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we continue to achieve that!

v1.1.12

Compare Source

UPDATE: v1.1.12 includes fix for a race detector issue #​336.

This is a production release of go-codec.

Today marks 11 months after the 11th day of the 11th month of last year.

On this very special day, we release v1.1.11 of go-codec.

This day holds a special place in my heart on a very personal level.

I hope you enjoy the immense effort put into refining and cleaning
out the edges go-codec, delivered in v1.1.11

The quality and performance should shine across:

  • binary size
  • performance/speed
  • memory use
  • feature rich (more than any other library in the go ecosystem)

See benchmark results run on a very complicated struct full of embedded types, with multiple nested levels.
Each struct value encodes as 47K of tightly packed json or 37K of binary msgpack or cbor.

High level benefits include

  • significantly expanded test suite, bringing code coverage to 92%
  • remove limits on struct embedding
  • optimize struct field access, json parsing, free list usage, etc
  • multiple performance improvements across the board

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we continue to achieve that!

v1.1.11

Compare Source

UPDATE: v1.1.1 introduced a race detector issue #​336, which has now been fixed in v1.1.12. Please upgrade.

This is a production release of go-codec.

Today marks 11 months after the 11th day of the 11th month of last year.

On this very special day, we release v1.1.11 of go-codec.

This day holds a special place in my heart on a very personal level.

I hope you enjoy the immense effort put into refining and cleaning
out the edges go-codec, delivered in v1.1.11

The quality and performance should shine across:

  • binary size
  • performance/speed
  • memory use
  • feature rich (more than any other library in the go ecosystem)

See benchmark results run on a very complicated struct full of embedded types, with multiple nested levels.
Each struct value encodes as 47K of tightly packed json or 37K of binary msgpack or cbor.

High level benefits include:

  • significantly expanded test suite, bringing code coverage to 92%
  • remove limits on struct embedding
  • optimize struct field access, json parsing, free list usage, etc
  • multiple performance improvements across the board

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we continue to achieve that!

v1.1.10

Compare Source

This is a production release of go-codec.

The main benefits are much expanded testing and associated code fixes, re-factoring and performance improvements:

  • removed some code cruft
  • expand tests and fix issues around extensions support in codecgen
  • clean up codebase for easier maintenance
  • and many general performance improvements ...

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we continue to achieve that!

v1.1.9

Compare Source

This is a production release of go-codec.

The main benefits are streamlined go modules support, re-factoring and performance improvements:

  • removed some code cruft
  • moved codec/bench into its own module, so it's requirements do not pollute the core library dependencies
  • implement reading the next value in the stream natively, provided by each format's handle
  • remove mode of reading the next value in the stream by decoding into a throwaway value and tracking bytes read
  • clean up code to enable better inlining for better performance
  • fix and expand tests to get richer code coverage;
    go test -cover reports > 90%
  • and many general performance improvements ...

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we continue to achieve that!

v1.1.8

Compare Source

This is a production release of go-codec.

The main benefits are a number of bug fixes and some performance improvements:

  • reduce binary size by 30% by reducing types for which we generate fast-path functions
  • support OptimumSize encode option: cbor uses to encode floats in smallest size e.g. binary16
  • decode stream nil value in mapping as a nil pointer in memory (previously set to zero value)
  • validate that malformed streams can be decoded without causing stack overflow or out of memory errors
  • json: return EOF in all scenarios when end of stream is reached (previously returned other error sometimes)
  • json: handle malformed unicode correctly in corner cases
  • and some general performance improvements ...

The main goal has always been to provide the most feature-rich and performant package
for encoding and decoding of multiple popular binary and text formats in a consistent way.

We believe we have achieved that!


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled due to failing status checks.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Mend Renovate. View repository job log here.

@renovate
Copy link
Contributor Author

renovate bot commented May 26, 2022

⚠ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: core/go.sum
Command failed: docker run --rm --name=renovate_go --label=renovate_child -v "/mnt/renovate/gh/synapsecns/sanguine":"/mnt/renovate/gh/synapsecns/sanguine" -v "/tmp/renovate-cache":"/tmp/renovate-cache" -e GOPATH -e GOPROXY -e GOFLAGS -e CGO_ENABLED -e GIT_CONFIG_KEY_0 -e GIT_CONFIG_VALUE_0 -e GIT_CONFIG_KEY_1 -e GIT_CONFIG_VALUE_1 -e GIT_CONFIG_KEY_2 -e GIT_CONFIG_VALUE_2 -e GIT_CONFIG_COUNT -e GIT_CONFIG_KEY_3 -e GIT_CONFIG_VALUE_3 -e GIT_CONFIG_KEY_4 -e GIT_CONFIG_VALUE_4 -e GIT_CONFIG_KEY_5 -e GIT_CONFIG_VALUE_5 -w "/mnt/renovate/gh/synapsecns/sanguine/core" docker.io/renovate/go:1.18.3 bash -l -c "go get -d -t ./... && go mod tidy && go mod tidy"
go: github.com/synapsecns/synapse-node@v0.242.0 (replaced by github.com/synapsecns/synapse-node@v0.242.1-0.20220523175312-65a2f2613b1f): version "v0.242.1-0.20220523175312-65a2f2613b1f" invalid: git ls-remote -q origin in /tmp/renovate-cache/others/go/pkg/mod/cache/vcs/3e75e1e2fbeeb2b654166e167a0f137fec3490f9171955c080bb5fb208042d68: exit status 128:
	remote: Repository not found.
	fatal: repository 'https://github.com/synapsecns/synapse-node/' not found

@renovate renovate bot force-pushed the renovate/github.com-ugorji-go-codec-1.x branch from 221591a to 9a72a47 Compare May 26, 2022 05:14
@renovate renovate bot force-pushed the renovate/github.com-ugorji-go-codec-1.x branch 3 times, most recently from 6a2e491 to 9413271 Compare June 4, 2022 07:16
@renovate renovate bot force-pushed the renovate/github.com-ugorji-go-codec-1.x branch from 9413271 to 1cb070a Compare June 4, 2022 12:08
@github-actions
Copy link

This PR is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 5 days.

@github-actions github-actions bot added the Stale label Jun 19, 2022
@github-actions github-actions bot closed this Jun 25, 2022
@renovate
Copy link
Contributor Author

renovate bot commented Jun 25, 2022

Renovate Ignore Notification

As this PR has been closed unmerged, Renovate will now ignore this update (v1.2.7). You will still receive a PR once a newer version is released, so if you wish to permanently ignore this dependency, please add it to the ignoreDeps array of your renovate config.

If this PR was closed by mistake or you changed your mind, you can simply rename this PR and you will soon get a fresh replacement PR opened.

@renovate renovate bot deleted the renovate/github.com-ugorji-go-codec-1.x branch June 25, 2022 02:18
abtestingalpha added a commit that referenced this pull request Jan 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant