«Отец открытого ПО» и один из разработчиков NTPsec Эрик Реймонд предложил перевести проект на Go или Rust. По его словам, им нужен более безопасный язык без переполнений буфера и с гарантиями корректности.
NTPsec — это реализация протокола NTP, форк NTP Classic, заметно более компактный, чем «родитель» (кодовая база оригинального NTP Classic составляла 231 тысяч строк, NTPSec — 62 тысячи строк), переработанный в соответствии со стандартами C99/ANSI и нацеленный на повышение безопасности.
По словам Эрика Реймонда, перевод NTPsec на новый язык в оптимистичном варианте развития событий может произойти через 6-9 месяцев. Однако, движения в этом направлении намечаются уже сейчас: так, код проекта уже был избавлен от union-типов и «каламбура типизации» («type punning»).
Команда разработчиков ещё не приняла решение насчёт того, с использованием какого языка будет переписан NTPsec, но вероятнее всего это будет Go или Rust. Реймонд приводит разные аргументы в пользу того или иного языка. Так, например, в случае с Go могут помешать задержки из-за работы сборщика мусора, но они могут оказаться вполне терпимыми, к тому же, возможно остановить GC в критических ко времени случаях. Также он упоминает, что транслятор кода из C на Go недокументирован, и в этом плане Rust лучше, но Эрик не имеет опыта разработки на нём.
В конце своего текста Эрик заключает, что несмотря на то, что он долгое время занимался разработкой на C, он готов перейти на другой язык программирования, так как безопасность играет всё большую роль, и, цитируем, «переполнения буфера и висячие указатели — отстой».
Перемещено jollheef из opensource