Raft сломан

Ребята из Antithesis(я хз кто это) протестировали несколько популярных реализаций протокола Raft в своей среде детерминированной симуляции с инжекцией сбоев. Они выбрали HashiCorp Raft, Aeron Cluster, OpenRaft и MicroRaft. И да, они нашли критические баги в каждой из них, нарушающие главный инвариант - state machine safety.

На примере HashiCorp Raft подробно разбираются три бага:
- гонка асинхронных heartbeat'ов с основным потоком, нарушающая консенсус и безопасность выборов;
- deadlock при передаче лидерства, навечно блокирующий кластер;
- и livelock при установке снапшотов из-за несоблюдения правила из спецификации.

Они приходят к выводу, что формальная верификация сама по себе не гарантирует корректности, поскольку между спецификацией на TLA+ и продакшен-кодом остаются неявные допущения.

И еще забавно, что хватило простой нагрузки вроде "цепочки блоков" в сочетании с симуляцией сбоев, чтобы эти проблемы вскрылись

Новости

Post Thumbnail

Какой ты газонокосильщик

The Pudding провели интерактивный эксперимент, в котором больше 30 тысяч человек "косили" виртуальный газон, чтобы исследовать, насколько эффективно люди решают задачу Coverage Path Planning - родственную знаменитой "задаче коммивояжера" 52% участников улож...

Post Thumbnail

Typescript Defer

Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScript, реализовав парсинг, проверки и AST-трансформацию, которая оборачивает тело функции в try/finally и выполняет отложенные вызовы в обратном порядке (LIFO) с захватом значений на...

Post Thumbnail

Движение назад

Прикольная статья если вы хотите поковыряться в итераторах, джинериках и вот в этих новых фишечках Go. Автор в шутливой форме проводит мысленный эксперимент: как бы выглядела эволюция функции Backward для обхода слайса в обратном порядке, если бы ее писал н...

Post Thumbnail

AI фабрики не работают

Основатель HumanLayer разбирает, почему "lights-off software factory" - подход, при котором AI-агенты пишут код без человеческого ревью - не работает в долгую. Модели отлично решают разовые задачи и проходят бенчмарки, но не умеют сохранять поддерживаемост...

Post Thumbnail

Go 1.27

Антон Жиянов делал интерактивные туры по Go с версии 1.22 по 1.26, но решил остановиться. Хесус Эспино подхватил эстафету и разбирает здесь огромный массив нововведений Go 1.27 - от обобщенных методов и профиля goroutineleak до нового пакета uuid и эксперимент...

Post Thumbnail

Кровать на zig

Физик с PhD, с ADHD и аутизмом рассказывает, как купил Chilipad 2.0 - систему водяного охлаждения/подогрева кровати за $1700. Уже интересно, неправда ли? Чтобы решить проблемы со сном из-за сенсорных особенностей и душной спальни без кондиционера он написал...

Статьи

Post Thumbnail

DNS на Zig

Это должен был быть перевод статьи "From Log Reader to Packet Crafter — Building DNS from Scratch in C". Но автор довольно фигово написал исходную статью и не удосужился показать весь написанный код, Поэтому я решил пойти дальше, реализовать очень маленький ин...

Post Thumbnail

Playdate

Наше поколение выросло вместе с первыми консолями. Мы все с теплотой вспоминаем время, когда у нас появилась первая денди. Теперь у нас есть самые разные движки и большие мощности для игр. Но чем больше возможностей, тем сложнее начать что-то делать, сложне...

Post Thumbnail

Привет Ethernet

Если вы читаете эту статью, то есть очень большая вероятность, что прямо сейчас вы пользуетесь Ethernet соединением где-то между вашими устройствами и хостингом, на котором размещён этот блог. Семейство технологий Ethernet - это строительные блоки для современ...

Post Thumbnail

RAG в Go проекте

Одна из ключевых задач для компаний, работающих с искусственным интеллектом, - обеспечить эффективный доступ к внутренним знаниям. На первый взгляд всё просто: загрузи корпоративные документы в большую языковую модель (LLM) и дай ей генерировать ответы. Но на ...

Инструменты

Post Thumbnail

Rayfish

Peer-to-peer mesh VPN на Rust, построенный поверх библиотеки iroh, который позволяет объединить все ваши устройства в частную сеть без аренды серверов, регистраций и единой точки управления. Достаточно одному участнику выполнить ray create, сгенерировать о...

Post Thumbnail

go-push-receiver

Go-библиотека для подписки на GCM/FCM и получения push-уведомлений напрямую, без необходимости в Android-устройстве или Firebase Admin SDK. Библиотека эмулирует поведение Android-клиента: использует protobuf-протоколы MCS и Checkin, заимствованные из Chrom...

Post Thumbnail

oscar

Селф-зостед сервер мгновенных сообщений на Go, совместимый с классическими AIM- и ICQ-клиентами, позволяющий запустить собственный аналог легендарных мессенджеров на Linux, macOS или Windows. Поддерживаются десятки старых клиентов: Windows AIM версий 1.x–7...

Post Thumbnail

jolliai

Open-source инструмент, который автоматически превращает сессии AI-кодинга в структурированную документацию, привязанную к каждому коммиту через git-хуки, без каких-либо дополнительных действий со стороны разработчика. После коммита фоновый процесс читает...