Skip to content

Make gogo optional at compile time#50

Merged
dmcgowan merged 2 commits intocontainerd:mainfrom
cpuguy83:remove_gogo
Oct 31, 2024
Merged

Make gogo optional at compile time#50
dmcgowan merged 2 commits intocontainerd:mainfrom
cpuguy83:remove_gogo

Conversation

@cpuguy83
Copy link
Member

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.

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]>
@cpuguy83
Copy link
Member Author

I added a 2nd commit which abstracts gogo support behind an unexported handler type.
Gogo is available by default in the 2nd commit but can be compiled out with the !no_gogo tag.

@cpuguy83 cpuguy83 changed the title Remove gogo registry Make gogo optional at compile time Oct 15, 2024
Copy link
Member

@dims dims left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

i like the pattern! we use it a few places including cadvisor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants