Why is Zig so cool? 🔥 Горячее 💬 Длинная дискуссия
Zig - это не просто замена C или C++, а совершенно новый подход к программированию, который удивил автора с 45-летним опытом. Самые впечатляющие особенности языка - встроенная возможность компилировать C-код и кросс-компиляция "из коробки", что уже оказывает значительное влияние на индустрию.
Установка компилятора Zig проста и доступна для различных платформ и архитектур на официальном сайте. Автор подчеркивает, что эти функции сами по себе уникальны, но сосредоточен на том, как программировать на Zig и почему стоит выбрать его вместо других языков.
Комментарии (467)
- Статья преувеличивает инновативность Zig, не подкрепляя заявления о "революционности" реальными уникальными фичами.
- Пользователи отмечают практические преимущества: простота установки (через PyPI), кросс-компиляция, явный синтаксис и компиляция C-кода.
- Критика включает отсутствие безопасности памяти, спорные решения (политика идентификаторов, отсутствие данных в ошибках) и сравнение с Rust/Ada как более зрелых альтернатив.
- Отдельные хвалят метапрограммирование (comptime), простоту навигации по коду и удобство для низкоуровневого программирования.
- Обсуждение подчеркивает субъективность восприятия: для одних Zig "меняет подход к программированию", для других — лишь "улучшенный C" без уникального позиционирования.
CompileBench: Can AI Compile 22-year-old Code?
Современные ИИ-модели демонстрируют впечатляющие способности в генерации кода, но сталкиваются с серьёзными трудностями при работе с реальными задачами компиляции — устаревшими инструментами, зависимостями и кроссплатформенной сборкой. CompileBench протестировал 19 моделей на 15 практических заданиях, включая сборку проектов вроде curl и jq, компиляцию под Windows/ARM64 и даже оживление 22-летнего кода 2003 года. Некоторые агенты выполняли до 135 команд за 15 минут для получения рабочего бинарного файла.
Anthropic модели Claude Sonnet и Opus заняли лидирующие позиции по успешности сборки, подтверждая свою репутацию среди разработчиков. OpenAI модели, особенно GPT-5-mini, показали лучшую ценовую эффективность, балансируя между скоростью и качеством. Gemini от Google неожиданно провалился: модели часто игнорировали спецификации задач, например, создавали динамические вместо статических сборок, несмотря на чёткие требования.
Комментарии (55)
- Сложность сборки и кросс-компиляции legacy-проектов (Chocolate Doom, curl) на современных системах, включая ARM64.
- Способность ИИ (особенно Claude Opus) автоматически исправлять ошибки сборки, хотя процесс может занимать много времени и команд.
- Предложения расширить бенчмарки более сложными проектами (FFmpeg, Chromium, Qt) и проверкой корректности через тесты и санитайзеры.
- Скептицизм относительно способности ИИ гарантировать корректность итогового бинарного кода после автоматических правок.
- Практическая ценность автоматизации рутинных задач по настройке toolchain и портированию старого кода.
Zig got a new ELF linker and it's fast
jacobly0 предлагает полностью переписать линкер Zig с нуля, создав Elf2 вместо текущей реализации. Основная цель — повысить производительность, уменьшить потребление памяти и улучшить поддержку различных форматов объектных файлов. Новая архитектура позволит эффективнее обрабатывать символы, секции и релокации, избегая проблем существующего кода.
Ключевые улучшения включают параллельную обработку, лучшую диагностику ошибок и оптимизацию для больших проектов. Это может значительно ускорить сборку в экосистеме Zig и упростить дальнейшее расширение. Практический вывод: переписывание устаревших компонентов иногда необходимо для долгосрочной масштабируемости.
Комментарии (24)
- Участники высоко оценивают Zig как компилятор для C/C++ и инструмент кросс-компиляции за его простоту и самодостаточность.
- Отмечается мощная вертикально интегрированная система сборки Zig, включающая линкер и бэкенды генерации кода, что открывает возможности для оптимизаций.
- Обсуждаются ограничения использования линкера Zig (elf2) и самого компилятора вне экосистемы Zig, а также отсутствие неструктурированного goto.
- Некоторые пользователи выражают смешанные чувства: язык делает многое правильно, но отдельные изменения и особенности вызывают сомнения.
- Упоминается книга "Linkers and Loaders" и общее оживление в области разработки линкеров (ренессанс).
Benchmarks for Golang SQLite Drivers
go-sqlite-bench — тесты скорости драйверов SQLite для Go.
Сравниваются:
modernc.org/sqlite(cgo-free, pure Go)github.com/mattn/go-sqlite3(cgo, libsqlite3)github.com/ncruces/go-sqlite3(cgo-free, modernc fork)
Методика: 1 млн вставок, 1 млн чтений, 1 млн обновлений.
Результаты (Intel i7-12700H, SSD, Go 1.22):
| драйвер | вставка | чтение | обновление |
|---|---|---|---|
| modernc | 2.3 s | 0.8 s | 2.5 s |
| mattn | 1.1 s | 0.4 s | 1.2 s |
| ncruces | 1.9 s | 0.7 s | 2.1 s |
Вывод: mattn/go-sqlite3 быстрее, но требует CGO; modernc и ncruces не требуют CGO и проще в кросс-компиляции.
Комментарии (24)
- Участники обсуждают, как в Go шифровать SQLite: упомянули библиотеку sqinn, которая общается с SQLite через stdin/out и показывает высокую скорость.
- Некоторые разработчики хвалят SQLite за простоту и отсутствие накладных расходов, особенно в Python/Django.
- Возникли проблемы с CGO при кросс-компиляции под FreeBSD и Linux; предлагают использовать Zig-инструментарий или Docker-сборку.
- Есть сомнения в корректности бенчмарков, так как автор тестов совпадает с автором sqinn.
- Участники отмечают ограничения SQLite при многопроцессном доступе и обсуждают альтернативы вроде DuckDB.