Hacker News Digest

Тег: #embedded

Постов: 5

Libghostty is coming (mitchellh.com) 🔥 Горячее 💬 Длинная дискуссия

Разработчик Mitchell Hashimoto анонсировал libghostty — библиотеку для встраивания полнофункционального терминала в любые приложения. Первым компонентом станет libghostty-vt: легковесная библиотека без зависимостей (включая libc) для парсинга терминальных последовательностей и управления состоянием терминала. Она извлечена из ядра Ghostty и предлагает оптимизированную обработку Unicode, поддержку SIMD и совместимость с продвинутыми протоколами вроде Kitty Graphics.

Проблема в том, что многие проекты (редакторы, веб-консоли, хостинги) реализуют эмуляцию терминала с нуля, часто с ошибками и неполной функциональностью. Libghostty-vt устраняет эту избыточность, предоставляя единое корректное и быстрое решение. Библиотека будет портирована на macOS, Linux, Windows, embedded-устройства и WASM, что шире, чем охват самого Ghostty.

by kingori • 23 сентября 2025 г. в 13:56 • 768 points

ОригиналHN

#zig#libghostty#ghostty#terminal#unicode#wasm#embedded#kitty#tmux

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

  • Пользователи высоко оценивают Ghostty за его производительность, минималистичный дизайн и поддержку Zig, но отмечают отсутствие некоторых ключевых функций, таких как поиск (Cmd+F) и проблемы с рендерингом шрифтов.
  • Многие выражают восхищение разработчиком Mitchell Hashimoto, его предыдущими проектами (Vagrant) и его подходом к созданию простых и эффективных систем.
  • Анонс библиотеки libghostty вызвал интерес для использования в embedded-сценариях (игры, кастомные приложения, веб-терминалы) и как потенциальная замена существующим библиотекам.
  • Некоторые пользователи столкнулись с проблемами совместимости, особенно с tmux и графическими протоколами, что мешает им полностью перейти с iTerm2 или других терминалов.
  • Обсуждаются технические детали, такие как лицензирование (MIT vs LGPL), поддержка Unicode и сравнение с другими терминалами (Kitty, Alacritty, WezTerm).

In Defense of C++ (dayvster.com) 💬 Длинная дискуссия

В защиту C++

Почему C++ остаётся мощным и актуальным языком программирования в современном технологическом ландшафте.

Репутация C++

C++ часто критикуют за сложность, крутую кривую обучения и способность позволить разработчикам не просто выстрелить себе в ногу, но и оторвать всю ногу. Но выдерживают ли эти критики проверку?

В этом посте я постараюсь разобрать некоторые распространённые критические замечания и представить сбалансированный взгляд на сильные и слабые стороны языка.

C++ «сложен»

C++ действительно сложный язык с огромным набором возможностей. Для любой задачи есть дюжина способов её решения, каждый со своими компромиссами. Но нужно ли глубокое понимание языка, чтобы выбрать правильный подход?

Не совсем. Преждевременная оптимизация — корень всех зол. В C++ можно писать прекрасный код, не беспокоясь о сложных функциях языка. Можно создавать простой, читаемый и поддерживаемый код без шаблонов, перегрузки операторов и других продвинутых возможностей.

Не стоит зацикливаться на «лучшем» подходе — лучше сосредоточьтесь на написании понятного кода. Если он читаем, всё будет в порядке.

C++ «устарел»

C++ очень стар — он вышел в 1985 году. Но означает ли это, что он устарел?

Ни в коем случае. C++ активно развивается уже более 40 лет. Последняя версия стандарта, C++20, добавила множество новых функций, а C++23 расширил возможности стандартной библиотеки, концепций, диапазонов и сопрограмм, делая язык более мощным и выразительным.

C++ остаётся одним из самых widely используемых языков с огромной экосистемой библиотек и инструментов. Он применяется в играх, высокопроизводительных вычислениях и embedded-системах. Многие популярные приложения написаны на C++.

Язык не устарел — чтобы утверждать обратное, придётся сильно извратить определение «устаревшего».

C++ «небезопасен»

А вот и главный аргумент. Да, я сравню с Rust, поскольку его часто называют «безопасным» языком, который должен заменить C++.

Переписывание кодовых баз C++ на Rust всегда даёт более безопасные результаты.

Многие компании сообщают об улучшении безопасности и уменьшении количества ошибок после перехода на Rust.

Но связано ли это именно с Rust? Отчасти да. Однако главный фактор в том, что любое переписывание существующей кодовой базы даст лучшие результаты, чем оригинал.

При переписывании вы можете переосмыслить архитектуру, исправить ошибки и улучшить качество кода. Вы используете уроки, извлечённые из предыдущей реализации, и исправляете проблемы, которые было сложно решить в старом коде.

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

by todsacerdoti • 16 сентября 2025 г. в 19:40 • 140 points

ОригиналHN

#c++#rust#embedded#high-performance

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

  • C++ и C полагаются на навыки и дисциплину разработчиков вместо автоматических проверок безопасности, что часто приводит к уязвимостям в больших проектах.
  • Сложность C++ считается чрезмерной и архаичной, многие функции языка (шаблоны, перегрузка операторов) сложны для понимания и неизбежны в реальных проектах.
  • Безопасность памяти в C++ проблематична даже для опытных разработчиков, в отличие от языков с автоматической проверкой, таких как Rust.
  • Идиоматичный C++ сильно отличается от C, и попытки писать на C++ «как на C» противоречат современным практикам и стандартам.
  • Переписывание кода с C++ на Rust часто повышает безопасность и удобство сопровождения, но обратный процесс сложнее и рискованнее.
  • C++ останется важным языком из-за его распространённости в legacy-системах и критичных к производительности областях.
  • Инструменты и экосистема C++ (пакетные менеджеры, форматтеры) часто считаются устаревшими по сравнению с современными языками.

Run Erlang/Elixir on Microcontrollers and Embedded Linux (grisp.org)

GRiSP – три стека для запуска Erlang/Elixir на встраиваемых системах:

  • GRiSP Metal – BEAM на RTEMS, 16 МБ ОЗУ, реальное время, прямой доступ к железу.
  • GRiSP Alloy – BEAM на Buildroot-Linux RT, несколько VM, приоритеты и привязка к ядрам.
  • GRiSP Forge – то же, но на Yocto, для долгих жизненных циклов и кастомных BSP.

GRiSP-io – облачная платформа для OTA-обновлений, мониторинга и масштабного управления устройствами.

Преимущества: открытый код, надёжность BEAM, минимальные задержки, масштабируемость от прототипа до флота.

GitHub | GRiSP.io

by weatherlight • 02 сентября 2025 г. в 08:40 • 189 points

ОригиналHN

#erlang#elixir#beam#rtems#buildroot#yocto#embedded#real-time#ota#actor-model

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

  • Участники спорят, считать ли 16 МБ «MCU-классом»: традиционные микроконтроллеры имеют ≤1 МБ, но современные ESP32 и NXP i.MX 6UL уже выходят за эти рамки.
  • GRISP — это BEAM-платформа поверх RTEMS для «мягкого» реального времени, в отличие от Nerves (BEAM на минимальном Linux).
  • Пользователи отмечают удобство модели акторов и горячей замены кода, но сомневаются в приоритетах процессов и строгих гарантиях latency.
  • Для устройств с КБ-объёмом памяти предложили AtomVM; 16 МБ пока выше среднего, но быстро дешевеет.
  • На «железе» 90-х Erlang/Elixir запустится, если ОЗУ ≥16 МБ; сама BEAM требовала ещё меньше.

Walkie-Textie Wireless Communicator (technoblogy.com)

  • Walkie-Textie – беспроводной текстовый передатчик
  • AVR128DA32 Feather – плата на AVR128DA32
  • Tiny Time 2 – часы
  • LED Probe – светодиодный зонд
  • Minimal RP2040 – компактная плата RP2040

2025

  • NeoPixel-драйвер на аппаратуре AVR
  • Walkie-Textie
  • AVR128DA32 Feather
  • LED Probe
  • Dot-Matrix часы
  • TinyCard Game Maker
  • Prime Time

2024

  • 2-битный компаратор
  • PCB дисплея бегущей строки
  • Плавный большой текст
  • Дисплей бегущей строки
  • Sound Lab – примеры звуков
  • Sound Lab – аналоговый синтезатор
  • Logic Lab 1G
  • Secret Maze 2
  • Логические вентили через Event System
  • RA4M1 Nano
  • Silver Dollar Game

2023

  • Silver Dollar Game
  • Lisp Badge LE
  • CAN Bus Monitor
  • Logic Lab – ответы
  • Logic Lab
  • I2S Speaker для QT Py
  • Adjustable Load
  • Harder Number Maze
  • Power Deliverer с монитором тока
  • Tiny UPDI-HV программатор

2022

  • Number Maze Game
  • Minimal GIF Decoder
  • Lisp Star
  • Графические аналоговые часы
  • ATtiny 2-Series
  • Power Deliverer
  • Заливка четырёхугольников и треугольников
  • Чтение с TFT-дисплея
  • I2C SD-Card модуль (PCB и модуль)
  • Библиотека монохромного дисплея
  • Трёхканальный графопостроитель
  • Файловое хранилище для Arduino
  • TFT Display Backpack
  • Tiny TFT Graphics Library 2
  • О байтах и выводах
  • Tiny I2C для всех AVR
  • Minimal RP2040 Board
  • Печать на Serial LED Display
  • 16 LEDs Kishi Puzzle
  • Twinkling Pendant
  • Morse Code Pendant
  • Управление RGB-лентой одной функцией
  • 16 LEDs – новый пазл

2021

  • Таймер на Arduino Uno/Zero
  • AM передатчик азбуки Морзе
  • 16 LEDs Puzzle
  • Low-Power LCD часы
  • Измерение собственного напряжения питания
  • Частотомер 100 МГц
  • Pocket Op Amp Lab (PCB, Cookbook, Lab)
  • Frequency Divider через CCL
  • I2C Detective
  • Five LEDs Puzzle (решение и PCB)

2020

  • Compact TFT Graphics Library
  • Five LEDs Puzzle
  • Frequency Probe
  • Combination Lock через CCL
  • Diffusion Clock
  • Smooth Big Text
  • Спрайты для Wio Terminal
  • Скриншоты с TFT-дисплея
  • Спрайты для PyGamer/PyBadge
  • Чтение дисплея PyBadge
  • Minimal ATmega4809 на макетке
  • Big Time
  • Four Sample Player
  • Mega Tiny Time Watch

2019

  • Восьмисимвольный дисплей
  • Праздничный конкурс
  • UPDI Programmer Stick
  • Новый ATtiny Low Power
  • Nano Current Meter
  • ATtiny под Lisp
  • Minimal I2C для новых AVR
  • Старт с новыми ATtiny
  • Visible Lisp Computer
  • Simple DataFlash Board
  • Magic 3D Clock
  • Tiny TFT Graphics Library
  • Illuminated Button Matrix
  • Двухзначный термометр
  • Minimal ATSAMD21 (2 варианта)
  • Tiny Thermocouple Thermometer
  • 12 ШИМ-выходов на ATtiny85
  • Tiny Function Generator PCB
  • ATtiny10 Thermometer (PCB и модуль)
  • Lisp Badge

2018

  • ATtiny85 Weather Station
  • Widget Dashboard
  • Tiny MIDI Player
  • Colour Graphics Library
  • I2C GPS Module (PCB и модуль)
  • Tiny Terminal 2
  • Tiny Function Plotter
  • Simple LCD Character Display
  • Alcohol Unit Counter
  • Tiny Machine-Code Monitor
  • 20-клавишный интерфейс на одном входе
  • Programmable Signal Generator
  • Minimal Tiny I2C Routines
  • ATtiny85 20 МГц внутренний клок
  • ATtiny10 POV Pendant
  • IR Remote Wand
  • IR Remote Control Detective
  • Harmonic Function Generator
  • Tiny Graphics Library

by chrisjj • 16 августа 2025 г. в 12:08 • 167 points

ОригиналHN

#avr#rp2040#arduino#lora#attiny#iot#wireless#embedded#microcontrollers

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

  • Устройство на ATtiny814 с LoRa-клавиатурой жалуются на короткую работу от AAA-батареек, отсутствие повторной отправки и усталость при наборе текста.
  • Пользователи сравнивают его с Cybiko, Meshtastic-устройствами (T-Deck, RAK) и GMRS-рациями, обсуждают реальные дальности LoRa: до 100 км в горах и на стратостате.
  • Поднимаются идеи «домашней» сотовой сети через OpenBTS/Yate, но она нелегальна; альтернатива — локальный Wi-Fi + Briar/Mumble.
  • Для пещерных спасений хотят радио, проходящее 200 м скалы (через низкие частоты).
  • Кто-то мечтает встроить LoRa прямо в смартфоны, но считает, что коммерция и регуляторы не позволят.

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 в играх и редакторах.