Hacker News Digest

Тег: #static-typing

Постов: 2

Show HN: Bolt – A super-fast, statically-typed scripting language written in C (github.com)

bolt — компактный встраиваемый язык на C:

  • высокая скорость, реал-тайм, статическая типизация
  • целевые задачи: скрипты в играх, IoT, системы с ограниченными ресурсами

Основное

  • репозиторий: Beariish/bolt
  • лицензия: MIT
  • компилятор ~150 КБ, зависимости отсутствуют

Возможности

  • синтаксис C-подобный, сборка мусора без пауз
  • FFI к C «из коробки»
  • компиляция AOT/JIT, кроссплатформенность (x86, ARM, RISC-V)

Быстрый старт

git clone https://github.com/Beariish/bolt
cd bolt && make
./bolt examples/hello.bt

hello.bt

import std.io;

fn main() {
    io.println("Привет, bolt!");
}

by beariish • 10 августа 2025 г. в 17:53 • 244 points

ОригиналHN

#bolt#c#aot#jit#embedded#arm#risc-v#garbage-collection#static-typing#mit-license

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

  • Пользователи одобрили идею быстрого статически типизированного скрипт-языка для встраивания, но сразу спутали «embedded» с «embedded-systems» и отметили отсутствие поддержки ARM/32-бит и отказ от целочисленных типов.
  • Критика синтаксиса import a, b from module: неудобен для автокомплита и повышает риск конфликтов имён; автор готов добавить псевдонимы.
  • Сомнения в заявленной скорости: несколько человек привели замеры, где Bolt проигрывает LuaJIT и даже обычной Lua 5.4.
  • Подняты вопросы о полноте типовой системы (генерики, полиморфизм), отладке, LSP, сборке мусора и долгосрочной поддержке.
  • Плюсы: понятный C/Python-подобный синтаксис, удобный Result-тип, потенциальная замена Lua в играх и редакторах.

Gleam v1.12 (github.com)

  • Исправления

    • Уточнено сообщение об ошибке с некорректной терминологией. (Louis Pilfold)
    • JS: устранён сбой при использовании echo в модуле с функцией process. (Peter Saxton)
    • Форматер: не переносит комментарий перед assert за него; корректно форматирует сообщения после echo/panic/todo/assert/let assert с комментарием перед ними; компилятор не генерирует неверный код для assert с пайпами на JS. (Giacomo Cavalieri)
  • Форматирование битовых массивов

    • Трейлинг-Запятая управляет разбиением: с запятой — много строк; без — в одну строку.
    • Если несколько сегментов на строке и убрана завершающая запятая, форматер сохраняет сегменты по одному на строку. (Giacomo Cavalieri)
  • Компилятор и генерация кода

    • echo поддерживает пользовательское сообщение: echo 11 as "lucky number" печатает контекст и значение в stderr. (Giacomo Cavalieri)
    • В сгенерированном JS doc-комментарии превращаются в JSDoc. (Giacomo Cavalieri)
    • Уменьшен размер кода case на JS. (Surya Rose)
    • Удаление неиспользуемого кода на этапе генерации (usage-based DCE). (Louis Pilfold)
    • Улучшена поддержка echo для списков символов, ошибок и циклических ссылок JS. (Louis Pilfold)
    • Улучшен внешний вид ошибок и предупреждений: контекстные метки выделяются иначе, чем источник проблемы. (Giacomo Cavalieri)
    • Подсказка при импорте с точкой вместо слеша, с примерами корректного синтаксиса. (Zij-IT)
    • Предупреждение при затенении импортированного имени верхнеуровневой константой/функцией. (Aayush Tripathi)
    • Улучшено сообщение об неизвестной переменной, если, вероятно, имелась в виду проигнорированная (_x → x), с подсказкой. (Giacomo Cavalieri)
    • Оптимизирован матчинг-паттернов на JS.

by Alupis • 06 августа 2025 г. в 17:57 • 156 points

ОригиналHN

#gleam#javascript#compiler#static-typing#pattern-matching#bit-arrays#code-formatting#typescript#github

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

  • Обсуждение посвящено релизу Gleam: многие хвалят дизайн языка, читаемость, статическую типизацию и паттерн-матчинг; приводят пример кода и делятся позитивным опытом использования в проектах.
  • Есть ссылки на пост о версии 1.12.0 и доклад на YouTube; некоторые ждут дальнейшего созревания экосистемы и возможности шаринга кода между фронтендом и бэкендом.
  • Критика: отсутствие интерфейсов/тайпклассов и оператора композиции; кому-то синтаксис и «Error -> Error» кажутся неэлегантными; snake_case непривычен после TypeScript.
  • В ответ отмечают осознанную простоту языка и официальную позицию Gleam по отказу от тайпклассов.
  • Существенная часть треда уходит в спор о «идеологичном» футере сайта (инклюзивность, антинацистская позиция, права транс-людей): часть считает это лишним, другие — важным для безопасности и качества сообщества.
  • Подчеркивается, что Gleam — это не только язык, но и сообщество с явным кодексом поведения; отсутствие позиции тоже является позицией.
  • Некоторые участники призывают вернуться к техническим темам релиза, чтобы не повторять одни и те же дискуссии.