Hacker News Digest

Тег: #memory-safety

Постов: 6

Brimstone: ES2025 JavaScript engine written in Rust (github.com)

Разработчик представил Brimstone - новый JavaScript-движок, полностью написанный на Rust. Проект стремится создать альтернативу существующим движкам таким как V8 и SpiderMonkey, но с акцентом на безопасность и производительность за счет использования системы типов Rust и его современных возможностей. Rust обеспечивает безопасность памяти и потоков, что может снизить количество уязвимостей в движке по сравнению с традиционными реализациями на C++.

На данный момент проект находится на ранней стадии разработки, но уже демонстрирует потенциал для создания более безопасных и эффективных JavaScript-движков. Использование Rust для реализации движка JavaScript - это интересный тренд в индустрии, который также наблюдается в других проектах, таких как Deno и Boa, что указывает на растущий интерес к альтернативным языкам для критически важных компонентов веб-платформы.

by ivankra • 16 ноября 2025 г. в 11:41 • 220 points

ОригиналHN

#boa#deno#github#javascript#memory-safety#rust#spidermonkey#unicode#v8

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

  • Обсуждение началось с благодарности за включение проекта в список и запуск бенчмарков, но быстро перешло к сравнению размеров бинарников Brimstone и Boa, где последний оказался в 3,5 раза больше из-за включённых ICU-таблиц Unicode.
  • Участники обсудили, что "написано на Rust" стало маркетинговым клише, и как оно влияет на восприятие проекта, а также затронули тему лицензий и отсутствия лицензии в репозитории.
  • Разговор затронул вопросы безопасности памяти и использования unsafe в контексте Rust, где участники обменялись мнениями о том, что именно подразумевается под этим и как это соотносится с выбором языка программирования.

A Note on Fil-C (graydon2.dreamwidth.org)

Filip Pizlo выпустил проект Fil-C, добавляющий проверку безопасности памяти в clang и включающий параллельный сборщик мусора. Инструмент демонстрирует высокую совместимость с существующим кодом, позволяя с минимальными исправлениями собирать полный Linux userspace. По измерениям, производительность составляет 1-4x (и более широкий диапазон по другим тестам), что для многих рабочих нагрузок является приемлемым. Проект основан на долгой линии исследований в области безопасности памяти, включая работы самого автора в Apple, где некоторые предыдущие итерации уже используются в производстве.

Несмотря на преимущества, Fil-C имеет ограничения: он динамически, а не статически предотвращает ошибки, программы все еще могут аварийно завершаться, есть накладные расходы на память (3-6x), и он не решает проблему гонок данных. Автор отмечает интересную возможность применения - проверки границ Fil-C могут сделать указательный код на C безопаснее, чем небезопасный Rust, и предлагает идею адаптации для компиляции небезопасных блоков Rust с дополнительными проверками.

by signa11 • 07 ноября 2025 г. в 00:59 • 214 points

ОригиналHN

#apple#c#clang#garbage-collection#linux#memory-safety#rust

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

  • Почти все программы имеют пути, которые могут привести к краху, но это не означает, что они будут достаточно часто встречаться, чтобы быть проблемой.
  • Fil-C обеспечивает безопасность памяти, но требует сборщика мусора и может быть медленнее, чем Rust.
  • Стоит ли переписывать код на Rust, если Fil-C может обеспечить безопасность памяти без переписывания.
  • Стоит ли переписывать код на Rust, если Fil-C может обеспечить безопасность памяти без переписывания.

A comparison of Ada and Rust, using solutions to the Advent of Code (github.com) 🔥 Горячее 💬 Длинная дискуссия

В репозитории представлено детальное сравнение решений Advent of Code 2023, где анализируются подходы к решению задач, эффективность кода и производительность. Основное внимание уделено различиям в алгоритмах и структурах данных, используемых участниками, а также их влиянию на время выполнения и потребление памяти.

Приводятся конкретные примеры кода на разных языках программирования, демонстрирующие оптимизации и trade-offs. Упоминаются ключевые инсайты, такие как важность выбора правильных структур данных для сокращения сложности алгоритмов. Это полезно для разработчиков, стремящихся улучшить свои навыки решения алгоритмических задач.

by andsoitis • 04 октября 2025 г. в 15:10 • 281 points

ОригиналHN

#ada#advent-of-code#algorithms#compiler#data-structures#memory-safety#multithreading#rust#safety-critical#utf-8

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

  • Участники отмечают сильные стороны Ada, такие как ограниченные числовые типы для предотвращения ошибок, выразительная система типов и удобочитаемость, но сожалеют о его недостаточном распространении вне сообщества safety-critical разработки.
  • Rust ценится за безопасность памяти, фокус на надежности и растущую экосистему, но критикуется за отсутствие формальной спецификации (хотя она сейчас разрабатывается) и сложность с компилятором и асинхронностью.
  • Поднимаются вопросы о различиях в подходах к строкам (Ada использует массивы символов, Rust — UTF-8), многопоточности (встроенные потоки vs. async) и индексации массивов (произвольные типы в Ada vs. словари в Rust).
  • Обсуждаются практические аспекты: скорость компиляции, поддержка Unicode, необходимость спецификаций и влияние экосистемы (инструменты, библиотеки) на выбор языка.
  • Упоминаются нишевые применения Ada (например, в 3D-печати) и потенциальные заимствования его функций (ограниченные типы) в другие языки, такие как Rust, C++ и Nim.

Niri – A scrollable-tiling Wayland compositor (github.com) 🔥 Горячее 💬 Длинная дискуссия

niri — это тайлинговый композитор для Wayland с поддержкой прокрутки, написанный на Rust. Он фокусируется на минимализме, стабильности и производительности, предлагая плавную работу без лишних зависимостей. Композитор поддерживает стандартные функции Wayland, включая XDG-Shell, и обеспечивает настраиваемое управление окнами через конфигурационные файлы.

Проект активно развивается, приветствуются contributions и обратная связь. Особенность niri — сочетание простоты использования с возможностями кастомизации, что делает его привлекательным для пользователей, ищущих альтернативу более сложным композиторам. Эффективность кода на Rust позволяет избежать многих проблем с памятью и безопасностью.

by atlintots • 03 октября 2025 г. в 11:08 • 424 points

ОригиналHN

#contributions#i3#memory-safety#open-source#productivity#rust#tiling-window-manager#wayland#xdg-shell#xmonad

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

  • Пользователи высоко оценили Niri за его скроллируемое тайлинг-менеджмент, который позволяет организовывать окна в непрерывную горизонтальную ленту, что повышает продуктивность по сравнению с традиционными тайлерами (i3, xmonad).
  • Отмечается стабильность и производительность Niri (написан на Rust), особенно в сравнении с Hyprland, а также простота настройки и работа на ультрашироких мониторах.
  • Обсуждаются недостатки: отсутствие панели для виджетов (батарея, часы), возможность "потеряться" в большом количестве окон, ограниченная конфигурация (ранее — один файл).
  • Некоторые пользователи выражают скепсис к скроллируемому тайлингу, предпочитая классический пейджный подход (рабочие столы), и сомневаются в готовности Wayland.
  • Упоминаются возможные альтернативы и дополнения: COSMIC (желание добавить скроллируемый тайлинг), расширения для Hyprland (hyprscrolling), PaperWM для GNOME.

DARPA project for automated translation from C to Rust (2024) (darpa.mil)

DARPA запускает программу TRACTOR для автоматизированного перевода уязвимого наследуемого кода на C в безопасный язык Rust. Проблема памяти — наиболее распространённый тип уязвимостей, возникающих из-за прямого управления памятью в C и неопределённого поведения. Несмотря на осознание проблемы, масштабный ручной переписывание кода был невозможен из-за огромного объёма legacy-систем, включая критическую инфраструктуру и оборонные проекты.

Программа использует прорывы в машинном обучении, включая большие языковые модели, для автоматизации перевода с сохранением идиоматичности и качества Rust-кода. TRACTOR будет сочетать статический и динамический анализ с ИИ, проводя публичные соревнования для тестирования решений. Цель — устранить целый класс уязвимостей безопасности, переложив ответственность с программиста на язык, который принудительно обеспечивает корректность работы с памятью.

by alhazraed • 01 октября 2025 г. в 20:53 • 97 points

ОригиналHN

#c#darpa#machine-learning#memory-safety#rust

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

  • Критика синтаксиса Rust и его неидиоматичности для некоторых задач по сравнению с TypeScript, C#, Go или Python, при признании превосходства его инструментов (Cargo, система сборки).
  • Обсуждение возможности создания безопасной реализации C (как Fil-C) и аргументы, что проблема не в языке, а в выборе реализации, жертвующей безопасностью ради производительности.
  • Сомнения в эффективности автоматической трансляции C/C++ в Rust и риске получения "C с акцентом Rust" вместо идиоматического и безопасного кода.
  • Дебаты о применимости Rust в оборонной сфере и его сравнение с другими языками (Zig, Go) по простоте сборки, зависимостям и размеру стандартной библиотеки.
  • Споры о философии дизайна Rust: фокус на композиции вместо наследования, сложности borrow checker и несовместимости некоторых идиом C++ с моделью безопасности Rust.

Safe C++ proposal is not being continued (sibellavia.lol)

Safe C++ больше не развивается.
Год назад появился черновик, обещавший «ржавую» безопасность без ломки старого кода: память, типы, потоки — всё через явный safe-контекст. Комитету идея не зашла: модель Rust назвали чуждой, голоса отдали Profiles — набору ограничений на уже существующий C++, которые на этапе компиляции блокируют UAF, data-race, deadlock, утечки.

Profiles не добавляют синтаксиса, только запрещают опасные паттерны; включаются опцией, обратно совместимы. Safe C++ требовал новых квалификаторов и заимствовал проверки времени жизни — слишком радикально.

Автор Safe C++, Шон Бакстер, признал:

Дальнейшая работа бесполезна; все силы — в Profiles.

Вывод: Profiles слабее, но реалистичнее; ждём их в C++26.

by charles_irl • 13 сентября 2025 г. в 19:00 • 159 points

ОригиналHN

#c++#data-race#deadlock#lifetimes#memory-safety#profiles#rust#safe-c++

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

  • Комитет C++ фактически отверг Safe C++ и ограничился «Profiles» — набором флагов, запрещающих часть небезопасных конструкций.
  • Участники сходятся: главная проблема не техническая, а культурная — сообщество не хочет ограничений, считая «если код работает — значит, он безопасен».
  • Profiles критикуют за примитивность: они не решают temporal safety, не выражают лифтаймы и не требуют изменения синтаксиса, поэтому дают лишь иллюзию защиты.
  • Большинство считает, что без полного отказа от C-подобного подмножества и без внедрения lifetimes C++ никогда не станет «безопасным»; проще перейти на Rust.
  • Практический вывод: крупные проекты продолжат игнорировать Profiles, а новые кодовые базы будут выбирать Rust либо двухъязычный подход «C++26 + внешние анализаторы».