Show HN: I wrote an OS in 1000 lines of Zig
Разработчик создал операционную систему всего в 1000 строк кода на языке Zig. Проект демонстрирует минималистичный подход к построению ОС, включая базовые функции: управление процессами, памятью и простой интерфейс. Zig выбран за его безопасность, производительность и низкоуровневые возможности.
Такой лаконичный код позволяет легко изучать и модифицировать систему, что полезно для образовательных целей. Проект подчёркивает, что сложные системы можно создавать без избыточного кода, используя современные языки программирования.
Комментарии (20)
- Создание минималистичной ОС на Zig в рамках 1000 строк кода с базовыми функциями: загрузка, управление памятью, планирование задач и вывод текста.
- Критика и вопросы по реализации: отсутствие консольного вывода, несоответствие README, проблемы сборки на разных платформах.
- Обсуждение технических деталей: формат выходных файлов, поддержка архитектур (RISC-V, ARM), использование библиотек.
- Рекомендации по улучшению: исправить .gitignore, уточнить версии компилятора, дополнить документацию.
- Ссылки на аналогичные проекты и запрос на более глубокий анализ целей проекта и опыта использования Zig.
TernFS – An exabyte scale, multi-region distributed filesystem
TernFS — экзабайтная распределенная файловая система с поддержкой нескольких регионов
XTX — алгоритмическая торговая фирма, использующая статистические модели для прогнозирования цен. По мере роста вычислительных мощностей потребности в хранилищах также увеличивались. Изначально использовались NFS и коммерческие решения, но в итоге было принято решение разработать собственную файловую систему — TernFS.
TernFS теперь доступна как открытое ПО на GitHub. В статье объясняется её архитектура и ключевые детали реализации.
Зачем ещё одна файловая система?
Крупные tech-компании часто разрабатывают собственные распределенные файловые системы из-за их критической важности. XTX оказалась в аналогичной ситуации и создала TernFS как универсальное решение для хранения — от «холодных» данных до временных файлов для обмена между GPU-задачами.
Возможности TernFS:
- Масштабируемость до десятков экзабайт, триллионов файлов и миллионов одновременных клиентов.
- Избыточное хранение данных для защиты от сбоев дисков.
- Отсутствие единой точки отказа в службах метаданных.
- Поддержка снимков файлов для защиты от случайного удаления.
- Работа в нескольких регионах.
- Агностичность к оборудованию, использование TCP/IP.
- Эффективное использование разных типов хранилищ (SSD, HDD).
- Доступ через собственный API (TCP/UDP) и модуль ядра Linux.
- Минимальные зависимости для сборки (C++, Go, RocksDB).
Ограничения:
- Файлы неизменяемы после записи.
- Не подходит для очень маленьких файлов (медиана — 2 МБ).
- Ограниченная пропускная способность при создании/удалении директорий.
- Отсутствие встроенной системы разрешений.
Разработка началась в 2022 году, с 2023 года система используется в production. К середине 2024 года все ML-задачи работают на TernFS. По состоянию на сентябрь 2025 года система хранит более 500 ПБ на 30 000 дисках и 10 000 SSD в трёх дата-центрах, с пиковой пропускной способностью в несколько ТБ/с. Потерь данных не зафиксировано.
Высокоуровневая архитектура
Основной API TernFS реализован четырьмя службами:
- Шарды метаданных — хранят структуру директорий и метаданные файлов.
- Координатор междиректорных транзакций (CDC) — выполняет транзакции между шардами.
- Службы блоков — хранят содержимое файлов.
- Реестр — хранит информацию обо всех службах и мониторит их.
Диаграмма взаимодействия служб TernFS и клиентов.
Далее подробно рассматривается каждая служба и другие аспекты реализации, включая мультирегиональность.
Комментарии (93)
- Обсуждение технических особенностей TernFS: отсутствие RDMA, использование TCP/IP, репликация данных, ограничение на минимальный размер файла (~2MB), специализированная система метаданных.
- Сравнение с другими файловыми системами (CephFS, Lustre, GPFS): различия в архитектуре, производительности, поддержке POSIX и целевых use cases.
- Вопросы о бизнес-модели и масштабах данных XTX: хранение >500PB для ML-моделей в трейдинге, критика "отсутствия реальной ценности".
- Обсуждение лицензии (GPLv2-or-later/Apache-2.0) и предложения по улучшению документации (добавление примеров использования).
- Замечания о нишевых решениях для больших данных: акцент на immutable-данные, сложности с метаданными для tiny files, специализация под конкретные задачи.
Grief gets an expiration date, just like us 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (199)
- Обсуждается медицинский подход к горю: диагнозы нужны для доступа к помощи и поддержке, но их рамки часто кажутся слишком жесткими и не учитывают индивидуальные обстоятельства.
- Участники делятся личным опытом длительного, многолетнего переживания горя, которое не исчезает, а трансформируется и становится частью личности.
- Подчеркивается, что горе — это не патология, а естественный процесс «обучения» жизни без близкого человека, и его не нужно «лечить», если человек функционален.
- Отмечается отсутствие в современной западной культуре адекватных ритуалов и frameworks для принятия смерти, что усложняет процесс горевания.
- Высказывается мнение, что медицинские критерии важны для разграничения нормального горя и случая, когда человеку действительно требуется профессиональная помощь.
Geizhals Preisvergleich Donates USD 10k to the Perl and Raku Foundation
Фонд Perl и Raku с радостью объявляет о пожертвовании в размере 10 000 долларов США от компании Geizhals Preisvergleich. Этот дар помогает обеспечить будущее Фонда поддержки ядра Perl 5.
Perl был неотъемлемой частью нашей платформы сравнения цен с момента основания компании 25 лет назад. Поддержка Фонда означает инвестиции в настоящее и будущее открытых вычислений для нас и других пользователей.
— Майкл Крёлль из Geizhals Preisvergleich
Geizhals не только предоставляет финансирование для экосистемы Perl, но и поддерживает разработчиков, участвует в конференциях и нанимает Perl-программистов. Их вклад очень ценен.
— Стюарт Дж. Макинтош, президент Фонда Perl и Raku
Geizhals начал как хобби-проект в 1997 году и вырос до обслуживания 4,3 млн пользователей в месяц. Используя Perl в своей инфраструктуре, они решили поддержать Фонд.
Работа поддерживаемых разработчиков, таких как Тони Кук, включает исправление критических ошибок, например:
- устранение сбоев при обработке сигналов,
- исправление ошибок сегментации,
- предотвращение утечек памяти.
Эти усилия обеспечивают стабильность и надёжность Perl для организаций и частных пользователей. Поддержка компаний вроде Geizhals помогает сохранять ядро Perl в отличном состоянии долгие годы.
Для спонсорства: olaf@perlfoundation.org
Комментарии (50)
- Geizhals, крупный немецкоязычный сайт сравнения цен, написан на Perl и ассоциируется с издательством Heise Verlag.
- Пользователи отмечают функциональность и полезность Geizhals, но критикуют его устаревший дизайн и региональную ограниченность (в основном Германия).
- Сообщество обсуждает состояние Perl: его стабильность, повсеместную установку и удобство для скриптинга, но признаёт его упадок и непопулярность для новых проектов.
- Возникла дискуссия о безопасности Perl, где некоторые высказывают опасения, а другие опровергают их, ссылаясь на сравнения с Python по количеству CVE.
- Обсуждается модель финансирования Open Source: небольшие пожертвования (как $10k от Geizhals) против зависимости от крупных спонсоров и проблемы поддержки непопулярных проектов.
- Упомянуты другие крупные компании, использующие Perl в продакшене, такие как Booking.com и DuckDuckGo.
- Отмечается, что Perl часто используется для утилитарных скриптов и системного администрирования благодаря своей переносимости и обратной совместимости.
Luau – Fast, small, safe, gradually typed scripting language derived from Lua
Lua_u_
Lua_u_ (строчная u, /ˈlu.aʊ/) — это быстрый, компактный, безопасный, постепенно типизированный встраиваемый язык сценариев, основанный на Lua.
Мотивация
Примерно в 2006 году Roblox начал использовать Lua 5.1 в качестве языка сценариев для игр. Со временем мы значительно развили реализацию и язык: для поддержки растущей сложности игр на платформе Roblox, увеличения размеров команд и написания большого объёма кода (более 1 млн строк к 2020 году) нам пришлось инвестировать в производительность, удобство использования, инструменты языка и ввести постепенную систему типов. Подробнее…
Песочница
Luau ограничивает набор стандартных библиотек, доступных пользователям, и реализует дополнительные функции песочницы для возможности запуска непривилегированного кода (написанного разработчиками игр) вместе с привилегированным кодом (нашим). Это создаёт среду выполнения, отличающуюся от традиционной для Lua. Подробнее…
Совместимость
По возможности Luau стремится быть обратно совместимым с Lua 5.1 и одновременно включает функции из более поздних версий Lua. Однако Luau не является полным надмножеством более поздних версий Lua — мы не всегда согласны с решениями Lua и имеем другие варианты использования и ограничения. Все функции Lua после 5.1, а также их статус поддержки в Luau, документированы здесь.
Синтаксис
Luau синтаксически обратно совместим с Lua 5.1 (код, действительный для Lua 5.1, также действителен для Luau); однако мы расширили язык набором синтаксических функций, делающих его более привычным и эргономичным. Синтаксис описан здесь.
Анализ
Для упрощения написания корректного кода Luau включает набор инструментов анализа, которые могут выявлять распространённые ошибки. Они состоят из линтера и проверки типов, интегрированных в исполняемый файл командной строки luau-analyze. Проверки линтера описаны здесь, а руководство по проверке типов можно найти здесь.
Производительность
В дополнение к полностью кастомному фронтенду, реализующему парсинг, линтинг и проверку типов, среда выполнения Luau включает новый байткод, интерпретатор и компилятор, сильно оптимизированные для производительности. Интерпретатор Luau может конкурировать с интерпретатором LuaJIT в зависимости от программы. Также доступен опциональный компонент для ручной JIT-компиляции на платформах x64 и arm64, который может значительно ускорить определённые программы. Мы продолжаем оптимизировать среду выполнения и переписывать её части для ещё большей эффективности. Хотя наша общая цель — минимизировать время, которое программисты тратят на настройку производительности, некоторые детали о характеристиках производительности предоставлены для любознательных.
Библиотеки
Как язык Luau является полным надмножеством Lua 5.1. Что касается стандартной библиотеки, некоторые функции пришлось удалить из встроенных библиотек, а некоторые — добавить; обратитесь к полной документации для подробностей. Когда Luau встраивается в приложение, сценарии обычно получают доступ к дополнительным функциям библиотек, специфичным для приложения.
© 2025 Roblox.
Комментарии (74)
- Переход на Luau обусловлен системой типов, но язык имеет шероховатости и слабую документацию, а сообщество практически отсутствует.
- Luau значительно сложнее и объёмнее стандартного Lua, что связано с реализацией системы типов и дополнительных возможностей.
- Существуют альтернативные реализации и среды выполнения Luau, такие как Lune, предназначенные для использования вне Roblox.
- Сообщество отмечает проблемы обратной совместимости между различными форками Lua (LuaJIT, Luau, PUC Lua), что создаёт фрагментацию.
- Luau сравнивают с Teal, но они fundamentally разные: Teal — это транспилятор, а Luau — полноценный форк Lua с собственной средой выполнения.
- Разработчики Roblox работают над улучшением поддержки Luau вне своей платформы, включая создание standalone-рантаймов.
- Несмотря на критику, инженерные решения в Luau, особенно в области производительности, оцениваются как впечатляющие.
Flipper Zero Geiger Counter
Flipper Zero Geiger Counter
Примечание: все модули протестированы на сторонних прошивках. Рекомендуется использовать:
Совместимые приложения
Счётчик Гейгера
Приложение отображает график с показаниями в импульсах в секунду (CPS) и в минуту (CPM). Есть функции записи, масштабирования и смены единиц измерения.
CPS отображается в левом углу, CPM — справа. Новые значения CPS добавляются каждую секунду.
Для тестирования без трубки Гейгера подключите GPIO A4 к A7 — он генерирует сигнал с меняющейся частотой.
Управление:
- OK (долгое нажатие): очистить график
- Влево/вправо: выбор единиц измерения (CPM, μSv/h, mSv/y, Rad/h, mRad/h, uRad/h)
- Вверх (долгое нажатие): включить/выключить запись (индикатор красный)
- Вверх/вниз: масштабирование
- Вниз (долгое нажатие): показать версию приложения
- Назад (долгое нажатие): выход
Примеры использования:
- Фоновая радиация (обнаруживаются продукты распада радона)
- Измерение образцов урановой руды
- Проверка стрелок часов с радиевой краской
- Керамика с урановым покрытием
- Америций-241 из детектора дыма
Запись сохраняется в CSV-файлы на SD-карте. Трубка J305 чувствительна только к бета- и гамма-излучению.
Генератор случайных чисел
Приложение создаёт истинно случайные числа на основе показаний счётчика Гейгера. Используются два метода хеширования:
- CRC32 (8 импульсов) — для низкой активности
- MD5 (32 импульса) — для высокой активности
Числа генерируются на основе временных меток при обнаружении излучения. Даже без радиоактивных источников можно использовать естественный радиационный фон от радона в воздухе.
Комментарии (77)
- Обсуждаются возможности и ограничения самодельных и бюджетных счетчиков Гейгера: низкая чувствительность, быстрое насыщение при высоких уровнях излучения, отсутствие калибровки и невозможность спектрометрии (идентификации изотопов).
- Отмечается, что для серьезных задач (радон, аварийные ситуации) требуются профессиональные приборы (Radiacode, Better Geiger, Radeye), способные измерять высокие уровни излучения и предоставлять энергетически корректные данные о мощности дозы.
- Поднимаются вопросы безопасности: открытые высоковольтные контакты на плате, хотя риск оценивается как низкий из-за малой силы тока от батарейного питания.
- Упоминаются практические сложности: необходимость сглаживания показаний, калибровки и использования защитного корпуса для исключения ложных срабатываний и загрязнения.
- Обсуждаются альтернативы: готовые недорогие китайские наборы, модули для Arduino/ESP32 с сетевым интерфейсом, а также использование камеры смартфона в качестве детектора.
The quality of AI-assisted software depends on unit of work management
Качество ПО, создаваемого с помощью ИИ, зависит от управления единицами работы. Основная проблема — не интеллект моделей, а предоставление правильного контекста.
Андрей Карпати описал работу ИИ-инженера как «держать ИИ на коротком поводке». Это означает разбивать задачи на небольшие конкретные части.
Правильный размер единицы работы учитывает контекст. Контекстное окно ИИ влияет на качество выходных данных: слишком мало информации ведёт к галлюцинациям, слишком много — к ухудшению качества из-за расфокусировки. Разделение задачи на оптимальные единицы работы — ключевой способ улучшить контекст и качество кода.
Правильный размер единицы работы контролирует распространение ошибок. При 5% вероятности ошибки за шаг, после 10 шагов шанс успеха падает до 59,9%. Современные модели, такие как GPT-5, демонстрируют успех в 70% для длительных задач, но это достигается в стабильных средах, тогда как реальные задачи часто происходят в изменяющихся условиях.
Комментарии (93)
- Оптимальный размер задач для ИИ-агентов — небольшие, хорошо скоупленные единицы работы, аналогичные традиционному управлению проектами.
- Ключевые сложности: формулировка требований на естественном языке, проверка сгенерированного кода и поддержание контекста.
- Эффективная стратегия — работа в коротких сессиях с очисткой контекста и использованием саммари между задачами.
- Мнения о прогрессе инструментов разделились: одни отмечают значительный скачок в качестве, другие — лишь постепенные улучшения.
- Агенты пока надежно справляются только с простыми, «интерн-уровневыми» задачами, требуя постоянного контроля.
- Популярные методики: TDD (разработка через тестирование) и декомпозиция крупных задач на более мелкие планы.
- Аналогии со строительством дома признаются спорными, так как разработка ПО — итеративный, а не линейный процесс.
Teardown of Apple 40W dynamic power adapter with 60W max 💬 Длинная дискуссия
Apple представила компактный 40-ваттный адаптер с динамическим распределением мощности до 60 Вт для iPhone 17 и новой линейки iPhone Air. Устройство размером с обычный 20-ваттный блок заряжает смартфон до 50% за 20 минут благодаря усовершенствованной архитектуре.
Внутренний анализ показывает высокую плотность компонентов и эффективное тепловое управление. Складные штыри и малый вес делают его удобным для путешествий, а цена в $39 сохраняет премиальный статус продукта.
Комментарии (192)
- Пользователи обсуждают детали теардауна зарядного устройства Apple, сравнивая его с конкурентами (Anker, UGreen) и отмечая компактность и использование GaN-технологий.
- Поднимаются вопросы о нагреве мощных зарядников при нагрузке, желании иметь многопортовые версии и проблемы с совместимостью (например, с ноутбуками HP).
- Высказываются критические замечания: приклеенные корпуса (увеличивают электронные отходы), проприетарные стандарты Apple (AVS вместо PPS), недоступность в разных регионах.
- Упоминаются альтернативные продукты (SlimQ, IKEA SJÖSS, встроенные розетки с PD) и даются практические советы по выбору зарядников.
- Некоторые пользователи делятся опытом использования рентгена и КТ для анализа электроники, а также критикуют сайт за недоступность зума на мобильных.
Obsidian Note Codes
Разработан плагин Note Codes для Obsidian, который присваивает каждой заметке в хранилище уникальный четырёхсимвольный код. Эти коды позволяют быстро ссылаться на заметки из других мест, например из рукописных записей. Для удобства реализован обработчик протокола, так что ссылка вида obsidian://note-codes/open?code=XX-XX сразу откроет соответствующую заметку.
Коды генерируются на основе имени и пути файла с использованием SHA-256 и кодировки Base32 по схеме Дугласа Крокфорда. Исключены легко путаемые символы вроде O, I, L, U, но плагин корректно обрабатывает их при поиске. Ёмкость системы — 1 048 576 уникальных кодов. Плагин открыт и доступен на GitHub.
Комментарии (36)
- Обсуждается практичность 4-символьных кодов для краткой идентификации заметок в Obsidian, основанных на хеше имени файла.
- Поднимается проблема коллизий из-за малого пространства кодов (1 млн вариантов) и парадокса дней рождений, особенно при большом количестве заметок.
- Критикуется привязка кода к имени и пути файла, так как это делает ссылки нестабильными: код меняется при переименовании или перемещении заметки.
- Предлагаются альтернативы: использование уникальных префиксов (как в Git), GUID или эвристик для генерации кодов, связанных с содержимым.
- Основное предназначение кодов — быстрое указание на заметки из внешних источников (например, рукописных записей), но это же делает проблему нестабильности ссылок критичной.
KDE is now my favorite desktop 🔥 Горячее 💬 Длинная дискуссия
Перешёл на KDE как основную среду для игрового ПК, чтобы жена могла комфортно пользоваться компьютером. Изначально выбрал её как альтернативу Sway, но теперь считаю KDE лучшей десктопной средой — даже в сравнении с Windows и macOS.
KDE впечатляет своей полнотой функций. Например, сетевой апплет показывает детальную информацию о Wi-Fi: канал, силу сигнала, MAC-адрес роутера, а также позволяет делиться данными через QR-код. Встроенный инструмент для скриншотов удобен — не нужны сторонние приложения.
Есть и полезные мелочи: управление правами Flatpak через системные настройки, проверка SMART-статуса дисков, кнопка для отключения сна системы. Окна приложений можно гибко настраивать через «Правила окон» — например, убрать автофокус Steam при запуске.
KDE ещё и быстрая. На том же железе она отзывчивее Windows 11, а системные настройки открываются мгновенно. По скорости почти не уступает Sway, хотя анимации можно отключить.
Были небольшие проблемы: при первом запуске панель задач оказалась на ТВ вместо основного монитора. Пришлось добавлять её вручную. Но в целом — это первая среда на Linux, которая действительно радует. Спасибо разработчикам KDE.
Комментарии (679)
- Пользователи высоко оценивают KDE за его настраиваемость, стабильность и богатый функционал, включая такие инструменты, как KDE Connect и Dolphin.
- Многие перешли на KDE с других сред, разочаровавшись в ограниченной кастомизации GNOME и нестабильности его расширений.
- Отмечается значительный прогресс в полировке интерфейса и исправлении ошибок, что сделало KDE конкурентоспособным с macOS и Windows.
- Некоторые пользователи критикуют KDE за остающиеся баги, избыток опций настройки и отдельные проблемы с миграцией на Wayland.
- KDE воспринимается как среда, которая уважает пользователя, предлагает инновации и подходит как техническим специалистам, так и менее технически подкованным людям.