[about] [index] [prev] [2022-09-05 17:30:36+03:00] [cd33090403f066bb2394507dccdd4a898fee8e64]
Topics: [go][nncp]

NNCP не собирался на Go 1.19

http://www.nncpgo.org/Release-8_005f8_005f0.html
https://github.com/inetaf/netstack/issues/4
https://news.ycombinator.com/item?id=32699261
Я сижу на самых последних версиях Go. И почти сразу же обновляю
GOST-овый fork (http://www.gostls13.cypherpunks.ru/). Но далеко не весь
софт пересобираю им. Вот и NNCP, который у меня постоянно везде и всегда
трудится -- не обновлялся.

Оказывается он вообще отказывается собираться под Go 1.19. Всё дело в
зависимостях связанных с реализацией TCP/IP стэка, опционально
используемой при работе с Yggdrasil. Когда-то там использовалась gVisor
библиотека (6ed95a2d84010e41e16c5ee891649d470f765241), потом перешёл на
inet.af/netstack -- fork gVisor только с netstack частью, без тьмищи
зависимостей. Кроме того, были какие-то проблемы на 32-х битных системах
у gVisor, а в inet.af было исправлено это.

Но внутри этого inet.af/netstack в ряде файлов явно стоит "!go1.19".
Судя по коммитам, это авторы добавили просто на всякий случай -- мол они
не проверяли всю эту unsafe работу с новыми версиями и явно указывают на
это. Руками удалил эти build тэги -- вроде бы всё работает, хотя и нет
уверенности. Более того, как оказалось, этот inet.af вообще стал
заброшенным проектом, так как Фитцпатрик больше не имеет проблем с кучей
зависимостей gVisor-а после Go 1.17, который умеет делать lazy подгрузку
модулей.

Если сделать "go mod tidy -compat=1.17", то он круто подчищает
зависимости от всяких излишеств. И действительно, проблем с gVisor-ом
больше нет. Снова переехал на него, уже на значительно более новую
версию, где и куча обратно несовместимых изменений API было. Но это же
Go: я буквально не более десяти минут потратил чтобы понять что и как
надо подправить.

[leave comment]