Hacker News Digest

Тег: #cgo

Постов: 2

Go has added Valgrind support (go-review.googlesource.com) 🔥 Горячее

PolyGerrit — это веб-интерфейс для работы с системой контроля версий Gerrit, требующий активации JavaScript в браузере для полноценного функционирования. Без него страница не загрузится корректно, и пользователь увидит только это сообщение с просьбой включить скрипты и обновить страницу. Это стандартное требование для современных веб-приложений, обеспечивающее динамическое взаимодействие, такое как просмотр изменений кода, комментарии и код-ревью.

by cirelli94 • 23 сентября 2025 г. в 09:26 • 471 points

ОригиналHN

#go#valgrind#cryptography#memory-management#unsafe#cgo

Комментарии (121)

  • Добавлена поддержка Valgrind в Go для тестирования криптографического кода на постоянное время выполнения и отслеживания инициализации памяти.
  • Обсуждаются преимущества Valgrind для обнаружения утечек памяти и тонких ошибок, несмотря на наличие других инструментов, таких как ASan/MSan.
  • Подчёркивается важность аннотаций для корректного анализа неинициализированной памяти, особенно при использовании unsafe-кода или CGO.
  • Высказываются опасения, что эффективность зависит от повсеместного использования инструмента всеми пакетами, чтобы избежать большого количества ложных предупреждений.
  • Некоторые пользователи выражают скептицизм, считая необходимость в Valgrind признаком недостатков языка, в то время другие видят в этом мощное дополнение к инструментарию.

Benchmarks for Golang SQLite Drivers (github.com)

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 и проще в кросс-компиляции.

by cvilsmeier • 18 августа 2025 г. в 15:13 • 84 points

ОригиналHN

#golang#sqlite#modernc.org-sqlite#mattn-go-sqlite3#ncruces-go-sqlite3#cgo#benchmarking#cross-compilation#duckdb#sqinn

Комментарии (24)

  • Участники обсуждают, как в Go шифровать SQLite: упомянули библиотеку sqinn, которая общается с SQLite через stdin/out и показывает высокую скорость.
  • Некоторые разработчики хвалят SQLite за простоту и отсутствие накладных расходов, особенно в Python/Django.
  • Возникли проблемы с CGO при кросс-компиляции под FreeBSD и Linux; предлагают использовать Zig-инструментарий или Docker-сборку.
  • Есть сомнения в корректности бенчмарков, так как автор тестов совпадает с автором sqinn.
  • Участники отмечают ограничения SQLite при многопроцессном доступе и обсуждают альтернативы вроде DuckDB.