
Запускайте сохранённый код ARM64 в Node или браузере; просматривайте декодированные пиксели изображения и инициализированную память.
Запускайте сохранённый нативный код. Восстанавливайте его инициализированное состояние. Capsulith упаковывает выбранные функции ARM64, их контракты вызова и принадлежащую им память для Node или браузера. Сохраняйте исходные инструкции и возобновляйте работу инициализированного объекта в новом воркере без исходного приложения.
Устаревший декодер, контрольная сумма или изолированная бинарная процедура могут стать небольшим переиспользуемым API. Capsulith показывает, какие байты и зависимости переносятся вместе с ней, где выполнение читает и записывает данные, и почему функцию нельзя извлечь, если она требует неподдерживаемого состояния.
Откройте верстак нативных образов. Выберите Load & run example для подготовленного изображения QOI или загрузите небольшое изображение PNG или QOI. Извлечённый оригинальный кодировщик QOI записывает файл, отдельный нативный декодер возвращает его пиксели, и вы можете просмотреть отдельные байты RGBA. Сохраните это инициализированное выделение пикселей, закройте воркер, затем восстановите и освободите его в новом. Для запуска публичного верстака не нужны учётная запись, сервер загрузки, исходный бинарник или компилятор.
PNG использует декодированные браузером RGBA в качестве явной базовой линии для сравнения; для входных данных только QOI независимое сравнение исходных пикселей отсутствует. Изображения ограничены 256 пикселями по каждому измерению и 1 МиБ. Это демонстрация подготовленного нативного компонента с известным исходником, а не новый кодек или универсальное восстановление формата. Исходный код QOI, контракты, независимые нативные/FFmpeg контроли и автономные команды Node.

Попробуйте демонстрацию объекта в браузере без ключей и нажмите Run lifecycle. Она выполняет фактические извлечённые инструкции локально; она не обращается к серверу для генерации результатов.
Скачайте Python wheel из релиза, затем:
python3 -m pip install capsulith-0.3.0-py3-none-any.whl
capsulith studio
Откройте http://127.0.0.1:6359. Функция Studio сохраняет образцы декодера LZ4 и xxHash. Откройте Object studio, выберите Open original LZ4 example, затем Run lifecycle, чтобы создать, сжать, сохранить словарь, создать контрольную точку, восстановить, продолжить и освободить реальный скомпилированный поток. API-ключ или платный сервис не нужны. Для извлечения требуются Python 3.10+ и Capstone; браузер выполняет код через встроенный эмулятор WebAssembly. Node 20+ нужен только для CLI или экспортированных вызовов Node.
Studio принимает ARM64 Mach-O dylib, инвентаризирует его функции, извлекает выбранный корень и позволяет редактировать буферы, аргументы-регистры, скалярные входные данные и тип возвращаемого значения. Представление зависимостей связывает помощники/импорты с фактическими местами вызовов и оригинальными инструкциями. События выполнения ссылаются на именованную область памяти и оригинальный код. Остановленные выполнения показывают частичные свидетельства без утверждения об успешном результате.
Export portable capsule скачивает текущие байты, контракт и входные данные, раннеры для Node/браузера, закреплённый бэкенд, полный исходный код/скрипты сборки бэкенда и лицензии. Распакуйте и запустите node run.cjs или разместите эту папку по HTTP и откройте её независимый браузерный раннер. Python, Capstone и оригинальный бинарник для этих вызовов не нужны. Экспортированный API принимает другие входные данные, поддерживает отмену и обеспечивает соблюдение объявленных ограничений.
Original LZ4 methods, restored dictionary access and exact native comparison in the object Studio
Object Studio импортирует извлечённый JSON модуля или читает ваш собственный ARM64 Mach-O артефакт с явно объявленными именованными методами. Изучите фактические корни, чанки и зависимости; выделите именованные буферы вызывающего кода из hex или локального файла; выберите метод и передайте типизированные ссылки на области или целые числа. Карта памяти показывает реальные принадлежащие регионы и инициализацию, с непрозрачными сырыми байтами вместо угаданных полей. Возвращаемые значения, диапазоны доступа, счётчики и ограниченные события происходят из оригинальных инструкций.
Сохраните контрольную точку перед операцией, которую может потребоваться отменить. Восстановление соответствующего модуля сохраняет гостевые адреса и идентификаторы регионов, но создаёт новую идентичность экземпляра; перепривяжите ссылки по идентификатору региона. Редактирование входных данных аннулирует устаревшие свидетельства, а сбой или отмена требуют предварительной контрольной точки или нового экземпляра. Нативное освобождение и освобождение буфера вызывающего кода — это отдельные явные операции жизненного цикла. Среда выполнения никогда не угадывает, ссылаются ли нативные указатели всё ещё на буфер.
capsulith module examples/lz4/liblz4.dylib \
--methods examples/native-objects/methods.json --out stream.module.json
node runtime/object-cli.cjs examples/native-objects/start.json \
--module stream.module.json --checkpoint-out first.checkpoint.json
# The first Node process has ended. This command opens a fresh worker.
node runtime/object-cli.cjs examples/native-objects/continue.json \
--module stream.module.json --checkpoint first.checkpoint.json
capsulith export-module stream.module.json \
--checkpoint first.checkpoint.json --out stream-object.zip
Выберите новые имена выходных файлов; команды экспорта модуля, контрольной точки и объекта отказываются перезаписывать существующие файлы. Предоставленные программы операций специфичны для документированного жизненного цикла LZ4. Универсальным модулям нужны собственные объявленные вызывающей стороной методы и программы операций.
Экспорт объекта содержит исходный модуль инструкций, необязательные сохраняемые байты контрольной точки, независимые раннеры для Node/браузера, объектную Studio, среду выполнения и соответствующие исходные/сборочные скрипты бэкенда, лицензии и манифест файлов с байтами, SHA256 и правами доступа. Разместите папку на сервере и откройте index.html, чтобы восстановить встроенную контрольную точку без API-эндпоинтов, или выполните node run.cjs your-operations.json --checkpoint checkpoint.json. Оригинальные бинарные файлы, пакеты Python и компиляторы для выполнения не требуются. Контрольная точка включает сохраняемые байты вызывающей стороны; проверьте их перед передачей. См. API объекта и формат операций и нативный пример.
capsulith inspect legacy.dylib
capsulith extract legacy.dylib --root _decode \
--contract decode-contract.json --out decode.capsule.json
capsulith run decode.capsule.json --inputs input.json
capsulith export decode.capsule.json --inputs input.json --out decoder.zip