Is Zig's new writer unsafe?
Новый интерфейс std.Io.Reader в Zig может приводить к неопределённому поведению при использовании с буфером произвольного размера. Например, при передаче ридера из zstd-декомпрессора в функцию вывода с буфером 64 байта код либо аварийно завершается в режиме отладки, либо зацикливается в релизе. Проблема в том, что некоторые ридеры требуют конкретного размера буфера у писателя, но это требование не всегда очевидно или документировано.
Ситуация усугубляется тем, что сбой может зависеть от входных данных: с одними данными код работает, с другими — нет. Это создаёт риски для библиотек, где тип ридера неизвестен заранее, например, при обработке HTTP-заголовков. Автор спрашивает, не ошибся ли он, но если нет — это серьёзный изъян в дизайне API.
Комментарии (112)
- Обсуждается потенциальная проблема безопасности или баг в Zig, но участники склоняются к тому, что это скорее единичная ошибка, а не системная уязвимость.
- Участники дискутируют о ценностном предложении языка Zig, описывая его как современную альтернативу C с лучшей эргономикой, компиляцией во время выполнения (comptime), явным управлением памятью и меньшим количеством неопределённого поведения.
- Критикуется реакция создателя Zig, Эндрю Келли, на конструктивную критику, которую некоторые участники сочли резкой и недружелюбной.
- Zig позиционируется как мощный инструмент для низкоуровневого программирования с ультранизкой задержкой (например, для HFT или игр), где безопасность не является приоритетом, в противовес Rust.
- В качестве альтернатив для модернизации C++ упоминаются другие языки, такие как Carbon.
The Limits of NTP Accuracy on Linux
Краткое резюме: пределы точности NTP в Linux
- Цель – синхронизировать часы Linux-систем с погрешностью < 1 мкс (желательно < 10 мкс) для корректных распределённых трассировок.
- Результат – большинство узлов держатся в пределах ~500 нс; улучшить без точной инженерии сложно.
Основные ограничения
-
GPS не идеален
- 3 GPS-приёмника на столе расходятся до ±200 нс; даже топовые модули дают ~5 нс джиттера.
- Чтобы уложиться в 50 нс, нужны одинаковые длины антенных кабелей и пр.
-
Сеть
- Любой «умный» коммутатор или маршрутизатор легко добавляет 200–300 нс систематической ошибки.
- RTT в моей сети 20–30 мкс, поэтому цель < 1 RTT.
-
NIC и драйверы
- Intel E810 – отлично, X710 – хорошо, Mellanox ConnectX-5 – сойдёт, ConnectX-3/4 – на грани, Realtek – не надо.
- Разница в драйверах и аппаратных метках времени (timestamps) доходит до сотен наносекунд.
-
Системные задержки
- Случайные «затыки» из-за SMBIOS/PM: 100–1000 мкс без предупреждения.
- Дешёвые mini-PC показали 1300–2000 нс дрейфа, но два других – всего 20–50 нс. Серверное «железо» стабильнее.
Практические цифры
- Типовая синхронизация по локальному GPS-источнику через Chrony: ~500 нс.
- В лабораторных условиях Chrony демонстрирует < 100 нс, но это исключение.
Вывод
Без специализированного оборудования, калибровки кабелей и тщательного выбора NIC/драйверов 200 нс – реалистичный потолок для обычной сети.
Комментарии (57)
- Участники считают, что автор путает цели и средства: ему нужна не абсолютная точность, а согласованность логов между машинами.
- Критика: в посте игнорируют PTP, аппаратное тайм-стемпинг, saw-tooth коррекцию GPS и другие ключевые приёмы.
- Несколько человек подтверждают, что Chrony + хорошие NIC дают суб-микросекунды без PTP, если задача не требует <200 нс.
- Уточняют, что GPS-модули нужно выводить в stationary mode и калибровать сутками для десятков наносекунд.
- Появляются примеры, где такая точность действительно нужна: синхронизация базовых станций, HFT, триангуляция радиосигналов.
NautilusTrader: Open-source algorithmic trading platform
-
Самая быстрая и надежная open-source платформа для трейдинга. Торгуйте любым классом активов в одном месте. Событийные бэктесты на любых исторических данных. Лайв-трейдинг без изменений кода.
-
Решения:
- Open Source — репозиторий на GitHub.
- Cloud Platform — облачная платформа Nautilus Cloud.
-
Компания: О нас, Команда, Партнеры, Правовое.
-
Ресурсы: Документация, Образование (скоро), Блог, Начать, Discord.
-
Платформа для алгоритмической торговли:
- Интеграция данных: загрузка кастомных/сырых данных в формат parquet.
- Построение стратегий: Python API, стрим до 5 млн строк/с, больше RAM.
- Аналитика: моделирование рынка с наносекундной точностью, событийные результаты.
- Быстрая итерация: экстремально быстрые бэктесты.
- Лайв-торговля: надежный запуск, паритет кода бэктест/лайв.
- Исполнение: высокопроизводительное low-latency исполнение на Rust.
-
Классы активов:
- Крипто: спот, фьючерсы, деривативы, опционы; нормализованные инструменты.
- Фьючерсы: активация/экспирация, базовые активы, биржи, лоты, множители.
- Акции: шорт-ограничения, кэш/маржин, круглые/нестандартные лоты, мульти-биржа.
- Опционы: Греки и сигналы на внутренней шине; точные спецификации контрактов.
- FX: спот и деривативы, базовая/котировая/расчетная валюты; биржи и ECN.
- Беттинг: спортивные и альтернативные рынки, полный стакан, адаптер Betfair.
-
Безлимитные бэктесты стратегий, площадок и рынков. Стратегии для любых инструментов и веню.
-
Ключевые возможности:
- Простые модульные компоненты: Clock, Cache, MessageBus, Portfolio, Actors.
- Точное время: наносекундные часы для бэктеста и лайва.
- Быстрая конфигурация: торговля на множестве веню и параметров без изменения кода стратегии.
- Продвинутые ордера: post-only, reduce-only, OCO, OTO и др.
- Интеграции API: быстрый коннект новых бирж и провайдеров данных.
- Высокая производительность: ядро на Rust.
-
Партнеры: Databento, OKX.
-
Выразите идеи стратегий через чистый, мощный API:
- Python API: совместим с ML/AI-фреймворками и любым Python-кодом.
- Любые типы стратегий: настраиваемые компоненты для любой идеи.
- Конфигурации стратегий: упрощение настройки.
Комментарии (121)
- Обсуждение крутится вокруг алгоритмической торговли и платформ, с акцентом на рисках и иллюзии «успешных» стратегий: многие отмечают, что без информационного или инфраструктурного преимущества (HFT) торговля похожа на подбрасывание монетки.
- Несколько комментаторов поделились опытом: высокие проценты «успешных» сделок с редкими, но разрушительными просадками; out-of-sample провалы ML/бэктестов; необходимость чёткой «edge» (ребейты, латентность, маркет-мейкинг, арбитраж).
- Выделяют, что разработка OMS/интеграций и бэктестера — «лёгкая часть»; основная сложность — поиск и валидация стратегий и управление рисками (упоминание негативной асимметрии, LTCM, Карвер).
- Практический совет многим — предпочесть долгосрочное инвестирование (индексные фонды, buy-and-hold) вместо активного трейдинга; ряд участников подтвердили, что это повысило их результаты и снизило стресс.
- Обсуждается платформа Nautilus: впечатляющая полнота (особенно risk engine), но интеграция с брокерами (IBKR и др.) и регуляторные проверки сложны; указывается на список интеграций и сравнение с LEAN/QuantConnect.
- Скепсис к розничной алготорговле: необходимость капитала/инфраструктуры, риск банов у брокеров, низкомаржинальные «нейтральные» портфели в HFT требуют больших ресурсов; многие считают, что в одиночку стабильно зарабатывать почти нереально.
- Встречаются идеи обучающих симуляторов и простых целей (например, $1/день как POC), но общий тон — трезвый: дисциплина риск-менеджмента важнее «волшебных» моделей, а охота за стратегиями — глубокая и дорогостоящая нора.