> Along with that, many of the performance boosts that are provided by gogo have been addressed in the official Go lib, golang/protobuf <https://github.com/golang/protobuf>, as of v1.4.0 <https://blog.golang.org/protobuf-apiv2>.
This surprised me a little, and sounds awesome - but I can't find any more information about it. Does v1.4.0 generate code for the serialisation / deserialisation function or still rely on Golang reflection? Does it allow for the neat tricks to get rid of pointers and all the allocations? Anything I can read about this would be super useful. > Off the top of my head, I would think checking in with the Cortex and Thanos projects is probably a good idea, I know both have a good amount of optimizations optimizing allocations, so it would be good to check that these would still be possible. >From a Cortex PoV, we have copies of these protos so I don't think this would be too much of a problem, but I'd defer to people who know better than me. Cheers Tom On Wed, Apr 28, 2021 at 10:07 AM Frederic Branczyk <[email protected]> wrote: > I'd be very happy with this. One consideration that we should take > (certainly not blocking this but should keep in mind) is how this would > affect immediate downstream users. Off the top of my head, I would think > checking in with the Cortex and Thanos projects is probably a good idea, I > know both have a good amount of optimizations optimizing allocations, so it > would be good to check that these would still be possible. > > On Tue, 27 Apr 2021 at 22:51, Austin Cawley-Edwards < > [email protected]> wrote: > >> >> Hi all, >> >> The protobuf library used in Prometheus, gogo/protobuf >> <https://github.com/gogo/protobuf>, is no longer actively maintained >> (activity largely stopped pre-2020, looking for new ownership >> <https://github.com/gogo/protobuf/issues/691>). Along with that, many of >> the performance boosts that are provided by gogo have been addressed in the >> official Go lib, golang/protobuf <https://github.com/golang/protobuf>, >> as of v1.4.0 <https://blog.golang.org/protobuf-apiv2>. >> >> Many projects that used gogo/protobuf have since switched to the official >> lib (ex: Istio <https://github.com/istio/istio/pull/17132>, Envoyproxy >> <https://github.com/envoyproxy/go-control-plane/issues/213>), largely >> for eco-system compatibility reasons now that performance is not a factor. >> The gogo-compiled protobufs are not compatible with any golang-compiled >> protobufs, and vice-versa. This makes consuming external protobuf APIs >> impossible unless they also maintain a gogo version, which is not common. >> >> I'm wondering if anyone has done work in this area recently, and if the >> community agrees it's a net benefit switching to the official >> golang/protobuf implementation. >> >> *What this would mean for Prometheus* >> >> Looking at the history of protobuf in Prometheus, it seems like both >> golang/protobuf and gogo/protobuf were until the end of 2017, when it then >> made sense to consolidate onto gogo (#3346 >> <https://github.com/prometheus/prometheus/issues/3346>) (#3394 >> <https://github.com/prometheus/prometheus/pull/3394>). >> >> As noted in the above issues, the official golang/protobuf package is >> still present in vendored files, so it is just the Prometheus protos that >> would need to be updated. The build procedures (mainly >> scripts/genproto.sh >> <https://github.com/prometheus/prometheus/blob/75e505babb9bbcefd8849e945814d35c7ce97e9f/scripts/genproto.sh>) >> have not changed much since the 2017 shift, so the work would be mainly >> adjusting this back to use golang/protobuf and recompiling the `prompb` >> package. >> >> Does anyone know of other necessary changes/ complications that I'm >> missing? >> >> Thanks all for your time, >> Austin >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Prometheus Developers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/prometheus-developers/38caa51d-e88a-489b-a045-54144cd1a03fn%40googlegroups.com >> <https://groups.google.com/d/msgid/prometheus-developers/38caa51d-e88a-489b-a045-54144cd1a03fn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "Prometheus Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/prometheus-developers/CAOs1Umy%2BhjN10r9q_MOwZ2wHL-0MEDZWw_2SCUPW%2B%3D8xpKvdQw%40mail.gmail.com > <https://groups.google.com/d/msgid/prometheus-developers/CAOs1Umy%2BhjN10r9q_MOwZ2wHL-0MEDZWw_2SCUPW%2B%3D8xpKvdQw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Prometheus Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/prometheus-developers/CAB58Z13WjbHrdGwZ-WEd94qbHwVk7BG2s5Kx5v1Vhp9vaLx%3Dxw%40mail.gmail.com.

