Zig вместо C: пишем высокопроизводительный CLI-инструмент и заменяем 3000 строк C-кода
Всё началось на второй паре по системному программированию. Нам дали задачу: написать CLI-утилиту для анализа логов - парсить файл, фильтровать записи по уровню ошибок, считать статистику, выводить красиво в консоль. "Ну понятно", - открыл я vim и началось мое долгое приключение... Неделя. Две. Утилита называлась logz , она умела читать логи nginx и apache, фильтровать по уровню (DEBUG, INFO, WARN, ERROR), по дате, по IP, выводила топ адресов с наибольшим числом ошибок, рисовала простенький bar-chart прямо в терминале через unicode-символы. Только вот я сидел как-то вечером, запустил wc -l main.c - 3147 строк . И смотрел на это число минуты три с таким лицом - O_O . Сама утилита работала. Но открывая её осознаешь что - это месиво. Одна функция process_file на 400 строк. Сегфолты раз в неделю. Valgrind как лучший друг. И каждый раз когда надо добавить фичу - сначала полчаса вспоминаешь что вообще происходит в коде. Потом я случайно прочитал пост про Zig на lobste.rs . Заинтересовался и попробовал. Через месяц у меня была та же утилита, но теперь на 1089 строках , которая работала быстрее и не падала. Тут я понял что вот золотая жила и расскажу о том - зачем Zig, как переписывал, где облажался и что вышло в итоге. Смотреть как горит C-код
https://habr.com/ru/articles/1019466/
#zig #c #cli #системное_программирование #производительность #компилятор #низкоуровневое_программирование
