Make gogo optional at compile time#50
Merged
dmcgowan merged 2 commits intocontainerd:mainfrom Oct 31, 2024
Merged
Conversation
Since containerd is not using gogo anymore it seems like we should remove the depenency on gogo here since gogo is a fairly large dependency and is also unaintained. This also gets imported by the runc shim and adds a fair amount to the binary size (in terms of percentage of the whole size). I did keep a fallback test in that still imports gogo and continues to work. The test marshals a type with gogo and then unmarshals it by typeurl. This is why gogo is still in the go.mod Not sure if this is worthwhile or not. This may need a module version bump since some functions will behave differently now. Signed-off-by: Brian Goff <[email protected]>
A handler is an unexported type that is used to abstract external type registries, such as gogoproto. This allows us to add back gogo support but allow those who don't need it to compile it out with the `!no_gogo` build tag. Signed-off-by: Brian Goff <[email protected]>
Member
Author
|
I added a 2nd commit which abstracts gogo support behind an unexported |
dmcgowan
approved these changes
Oct 28, 2024
dims
approved these changes
Oct 31, 2024
Member
dims
left a comment
There was a problem hiding this comment.
LGTM
i like the pattern! we use it a few places including cadvisor
samuelkarp
approved these changes
Oct 31, 2024
This was referenced Nov 6, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Since containerd is not using gogo anymore it seems like we should remove the depenency on gogo here since gogo is a fairly large dependency and is also unaintained.
This also gets imported by the runc shim and adds a fair amount to the binary size (in terms of percentage of the whole size).
I did keep a fallback test in that still imports gogo and continues to work. The test marshals a type with gogo and then unmarshals it by typeurl.
This is why gogo is still in the go.mod
Not sure if this is worthwhile or not.
This may need a module version bump since some functions will behave differently now.