Reading view

[Перевод] Ваш исполняемый файл — это база данных SQLite

Последние несколько лет я, похоже, одержим двумя темами: а) Nix в качестве инструмента для исследования новаторских идей, требующих возможностей перестройки мира; б) замена ELF на SQLite в качестве формата исполняемых файлов. Возможно, вы заметили, что эти две идеи хорошо сочетаются друг с другом.

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

Одним из результатов этого исследования стал инструмент sqlelf, позволяющий декларативно исследовать файл ELF при помощи SQL. [Я написал статью arXiv:2405.03883, которую мне не удалось опубликовать]. SELECT name FROM elf_symbols вместо возни с readelf и grep. Это оказалось на удивление просто благодаря использованию виртуальных таблиц для ELF, однако мне всё равно было интересно исследовать формат файлов ELF. Но всё же я понимал, что можно сделать нечто гораздо большее.

Меня всё не покидала эта мысль, а в свете прогресса LLM мне показалась привлекательной идея исследовать эту тему глубже. В частности, мне было любопытно, что будет, если мы заменим ELF на SQLite в качестве формата исполняемых файлов?

Не просто «база данных, описывающая исполняемый файл», а реальный файл, с которым можно сделать chmod +x и запустить его.

Читать далее
  •  

[Перевод] AA и AAA: ода временам одноразовых батареек

Когда-то у каждого человека с плеером в кармане был ритуал: перед выходом из дома обязательно проверить, есть ли запасные батарейки. Не пауэрбанк, а именно батарейки – маленькие металлические цилиндры, от которых зависело, зазвучит ли музыка в автобусе или прогулка пройдёт в тишине.

Сейчас, в эпоху встроенных аккумуляторов и повсеместной зарядки, это кажется странным. Но именно батарейки AA и AAA были теми самыми расходниками, которые питали портативную свободу.

Читать далее
  •  

[Перевод] Rust 1.98.0: алгебраические методы для f32,f64, исправление взаимодействия между ManuallyDrop и Box

Команда Rust рада объявить о выходе новой версии Rust — 1.98.0. Rust — это язык программирования, который помогает каждому создавать надёжное и эффективное программное обеспечение.

Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1.98.0 командой:

$ rustup update stable

Если Rust ещё не установлен, вы можете получить rustup на соответствующей странице нашего сайта и ознакомиться с подробными release notes для 1.98.0.

Если вы хотите помочь нам, тестируя будущие релизы, рассмотрите возможность переключиться локально на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте о любых обнаруженных ошибках!

Читать далее
  •  

[Перевод] Как Европа топит DIY-разработчиков и микропредпринимателей

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

Некоторые зарабатывают этим на жизнь. Другие продают лишь по несколько плат в год. Третьи собирают с десяток экземпляров просто потому, что создали нечто полезное и хотят поделиться с другими. Иногда такие эксперименты перерастают в реальный бизнес. Как никак, каждый Arduino должен с чего-то начинаться.

Но Европейский Союз пошёл наперекор этим людям, введя новые правила упаковки, которые грозят разрушить устоявшуюся экосистему инноваций, лишив мастеров и микро-предпринимателей их работы и средств к существованию.

Но фактически эта угроза даже ещё шире. Под удар попадают художники, ремесленники и другие мелкие бизнесы, продающие плоды своего труда.

Читать далее
  •  

[Перевод] skitter-creek-bath-salts — обход аппаратной изоляции памяти в современных CPU

Или как получить полный доступ к изнанке CPU через скремблирование DRAM — PSP, C6, микрокоду, среде SMM и всему остальному, что не попало на страницы спецификации.

Всё-таки не всегда &x == &x...

Через вмешательство в работу контроллера DRAM можно сделать так, что обращение по определённому адресу будет вести в любую нужную область памяти. skitter-creek-bath-salts изменяет нижние слои структуры памяти, перестраивая трансляцию физический адресов DRAM. Такой скрэмблинг раскрывает защищённые области памяти, в том числе изолированные зоны, которые не видит даже само ядро. Когда ломается трансляция памяти, следом рушатся построенные на ней механизмы безопасности, и мы получаем доступ буквально ко всему.

Читать далее
  •  
❌