Hacker News Digest

Тег: #raii

Постов: 2

Giving C a superpower: custom header file (safe_c.h) (hwisnu.bearblog.dev) 🔥 Горячее 💬 Длинная дискуссия

Автор создал заголовочный файл safe_c.h (600 строк), добавляющий в C современные средства безопасности из C++ и Rust, сохраняя при этом производительность и простоту языка. Этот файл используется для создания высокопроизводительного grep-клона cgrep, демонстрируя, как можно обуздать "опасные возможности" C. safe_c.h предоставляет семантику RAII через атрибуты [[cleanup]] с обратной совместимостью для старых компиляторов, а также умные указатели UniquePtr и SharedPtr для автоматического управления памятью.

Заголовочный файл включает макросы LIKELY/UNLIKELY для оптимизации ветвления и гарантирует очистку ресурсов даже при раннем возврате или goto. UniquePtr автоматически освобождает память при выходе из области видимости, устраняя утечки, а SharedPtr реализует автоматический подсчёт ссылок. Автор утверждает, что с помощью таких инструментов C остаётся языком свободы и гибкости, позволяющим писать безопасный код без потери производительности.

by mithcs • 17 ноября 2025 г. в 10:40 • 252 points

ОригиналHN

#c#c++#rust#raii#memory-management#smart-pointers#performance-optimization

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

  • Обсуждение показало, что безопасность в C требует компромисов: либо платить за счёт производительности (POSIX-мьютексы), либо отказаться от переносимости кода.
  • Участники спорят, стоит ли вообще пытаться эмулировать современные примитивы безопасности в C, или лучше просто использовать C++ там, где это возможно.
  • Поднимается вопрос, что макросы и обёртки в C ведут к созданию "мини-языка" внутри проекта, что затрудняет понимание кода для новых участников команды.
  • Обсуждается, что C++ уже реализовал всё, что пытаются эмулировать в C, и что это не избежно ведёт к "переизобретению велосипеда".
  • Участники обсуждают, что встроенные в компилятор возможности C++ вроде std::unique_ptr и std::shared_ptr не только более безопасны, но и более производительны, чем попытки их эмулировать в C.

Titania Programming Language (github.com)

Titania — экспериментальный язык от автора Odin.
Цель: максимум производительности, минимум «магии», ясный код.

Ключевые идеи

  • Статическая типизация, компиляция «в ноль»
  • Нет GC: ручной или автоматический RAII
  • Процедурный, но с мощными шаблонами и compile-time вычислениями
  • Прямая работа с SIMD, FFI, встраиваемый ASM
  • Синтаксис: C-подобный, но короче; нет препроцессора

Статус
Публичный прототип, API меняется. Собирается LLVM или собственный бэкэнд.

by MaximilianEmel • 14 сентября 2025 г. в 22:29 • 94 points

ОригиналHN

#titania#odin#programming-languages#static-typing#compilation#raii#simd#llvm#oberon#github

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

  • Участники обсуждают язык Wirthwhile: критикуют обязательное объявление всех переменных в начале функции, но @munificent объясняет, что это упрощает однопроходную компиляцию.
  • Появляются вопросы о мотивации создания ещё одного языка и его отличиях от Oberon-07; @khaledh напоминает, что автор — создатель Odin.
  • Предлагаются экспериментальные синтаксические идеи: спец-символ «.» для перевода строки и отказ от println; сообщество отмечает конфликт с методами и контекстно-зависимость грамматики.