TGViewer
Всё о разработке | Леонид Ченский Всё о разработке | Леонид Ченский @leoscode · 732 subscribers
Post #190 918
Protobuf & Edition

После долгих лет стабильности proto3 protobuf наконец-то сменил парадигму и перешёл на Edition — набор настраиваемых фич. Теперь новые возможности можно добавлять эволюционно, не ломая обратную совместимость. А это значит, что теперь начнут активно появляться новые фичи protobuf (я на это надеюсь).

Edition 2023 — это просто разделение фичей proto2 и proto3 с возможностью настройки их глобально или локально (для конкретного сообщения/поля).

А вот Edition 2024 уже приносит несколько важных изменений:

- field_presence — настраиваемая модель поведения, позволяет контролировать, было ли поле действительно задано или нет (теперь optional не нужны получается); (с 2023 уже работает)

- enforce_naming_style — позволяет валидировать имена полей, сообщений и перечислений в .proto-схемах по единому стилю: код даже не сгенерируется, если названия не по канону (теперь не получится игнорировать линтеры);

- default_symbol_visibility — задаёт видимость сообщений/перечислений, позволяя точнее контролировать, что именно экспортируется наружу, а что остаётся внутренней деталью схемы; Капец какая нужная фича в больших API!

- Opaque API в Go — сгенерированные protobuf-сообщения перестают быть «раскрытыми» структурами с публичными полями и превращаются в более закрытый API. Opaque API отвязывает код пользователя от внутреннего устройства сгенерированного кода. А это значит, что protobuf runtime и protogen могут дальше развиваться, оптимизировать все подряд, не ломая при этом пользовательский код (и они уже это сделали).

Звучит все здорово, но для внедрения в production меня останавливают две вещи:

1. Руками править сотни proto файлов — занятие неблагодарное. Парни из Google обещали сделать утилиту для миграции на edition — prototiller, но её так и нет :) AI в целом с нормальным промтом справляется, но хотелось бы официальной утилиты.
2. Для работы с proto в production я использую Buf, который все еще не поддерживает edition 2024. Парни там обещают скоро добавить поддержку, но официальной даты релиза нет…

Локально я с этим поигрался, жду впервую очередь поддержку в Buf. Уже сейчас можно мигрировать на edition 2023, сохранив обратную совместимость (добиться того же поведения, что и в proto2/proto3 и подготовится к переходу на 2024).
  • 🔥 5
  • ❤ 3
  • 👍 3
  • 🆒 2
More from @leoscode
  1. Sep 15, 2026Помню как в детстве хотел такого же ассистента как Jarvis у Железного человека. Сейчас буд…
  2. Aug 24, 2026Гипотетическая история Представьте завтра все датацентры «вдруг» перестанут работать. Прив…
  3. Aug 4, 2026"Капризный день"
  4. Jul 17, 2026Пользуюсь случаем, напишу тут: ищу заряжененного Go разработчика к себе в команду. Ссылка…
  5. Jul 14, 2026Утро вторника началось не с кофе… Кто положил, признавайтесь!)
  6. Jul 1, 2026Согласны? 👍 Да 🗿Нет
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →