Go has added Valgrind support 🔥 Горячее
PolyGerrit — это веб-интерфейс для работы с системой контроля версий Gerrit, требующий активации JavaScript в браузере для полноценного функционирования. Без него страница не загрузится корректно, и пользователь увидит только это сообщение с просьбой включить скрипты и обновить страницу. Это стандартное требование для современных веб-приложений, обеспечивающее динамическое взаимодействие, такое как просмотр изменений кода, комментарии и код-ревью.
Комментарии (121)
- Добавлена поддержка Valgrind в Go для тестирования криптографического кода на постоянное время выполнения и отслеживания инициализации памяти.
- Обсуждаются преимущества Valgrind для обнаружения утечек памяти и тонких ошибок, несмотря на наличие других инструментов, таких как ASan/MSan.
- Подчёркивается важность аннотаций для корректного анализа неинициализированной памяти, особенно при использовании unsafe-кода или CGO.
- Высказываются опасения, что эффективность зависит от повсеместного использования инструмента всеми пакетами, чтобы избежать большого количества ложных предупреждений.
- Некоторые пользователи выражают скептицизм, считая необходимость в Valgrind признаком недостатков языка, в то время другие видят в этом мощное дополнение к инструментарию.
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.