Repository navigation
Releases: YOpenSOS/maxpkg
Releases · YOpenSOS/maxpkg
Release list
maxpkg v0.2.0 (Pre-Release)
maxpkg v0.2.0 - Native Package Manager, Kernel EventBus & Multi-Language HAL SDK (Pre-Release)
Warning
Статус API: Experimental / Unstable (Pre-1.0)
Текущая архитектура libmax_hal, шина EventBus и контракты SDK находятся в активной разработке и ещё не зафиксированы. В следующих версиях возможны полные переработки (rewrites) отдельных модулей и ломающие изменения C-ABI без сохранения обратной совместимости. Всегда используйте maxctl и maxpkg-sdk-aarch64-v0.2.0.zip из одного и того же релиза.
Added
- Ядерная событийная шина
EventBus(modules::events/max_events_*):- Единый блокирующий мультиплексор
poll(2)с нулевой нагрузкой на CPU (0%в режиме ожидания), объединяющий:EventKind::Input (3)— прямое чтение/dev/input/event0..3со встроенным конечным автоматом распознавания жестов (click,double_click,quadro_click,long_press) и вращения энкодера.EventKind::BtPower (4)— мгновенное чтение 8-байтовых бинарных структур ядраstruct rfkill_eventиз/dev/rfkill(RFKILL_TYPE_BLUETOOTH) с автоматической фильтрацией стартовыхRFKILL_OP_ADDсостояний.EventKind::SoundPlay (7)— ядерныйinotify(IN_OPEN | IN_CLOSE_WRITE) на/data/data/com.yandex.io.sdk/files/system/sounds/{common,ru-RU}, перехватывающий момент открытия любого системного звука демономquasmodromd.EventKind::AliceState (6)— ядерныйinotify(IN_OPEN) на каталогledpatterns, определяющий переходы состояний Алисы (listening,speaking,thinking,bluetooth,muted,idle) без чтенияlogcat.EventKind::BtConfig (5)— ядерныйinotify(IN_CLOSE_WRITE) на/data/misc/bluedroid/bt_config.confпри сопряжении или обновлении профиля Bluetooth-клиента.EventKind::Tick (2)— встроенный периодический таймерtimerfd_create(CLOCK_MONOTONIC)(set_tick_ms) для совмещения реактивной обработки событий и рендера кадровfb4/fb5в одном потоке.EventKind::Stop (1)— мгновенное пробуждениеpoll(2)при полученииSIGTERM/SIGINTот супервизораmaxctl.
- Единый блокирующий мультиплексор
- Транзакционная подмена системных звуков в модуле
audio(SoundOverrideManager):- Новые методы
override_sound(target_rel, custom_src)иrestore_sounds()во всех 5 SDK (max_audio_override_sound,max_audio_restore_sounds). - Автоматическое резервное копирование оригинальных звуков Яндекса в
MAX_PKG_DATA/sound_backups/при первой подмене. - Выставление прав
0644и системного владельцаu0_a38:u0_a38(libc::chown) для бесшовного чтения процессомcom.yandex.io.sdk. - Автоматическая проверка и самовосстановление подменённых файлов при попытке их перезаписи со стороны OTA (
ensure_all_applied()) и гарантированный возврат заводских звуков вDropпри остановке пакета.
- Новые методы
- Аппаратный DSP Master Mute в модуле
audio:- Методы
is_muted()иset_mute(bool)(max_audio_is_muted,max_audio_set_mute), управляющие напрямую регистромNUMID_MASTER_MUTE = 68(ctl 67) в/dev/snd/controlC0за< 0.2 мс.
- Методы
- Приватная сборка и поставка готовых бинарных артефактов:
- Полное удаление локальных путей хост-машины из исходников и бинарных артефактов (
--remap-path-prefix,-ffile-prefix-map,-trimpath,llvm-strip) с автоматическим аудитом приватности на этапе сборки (scripts/build_all.ps1). - Скрипт автоматической сборки и публикации релизов
scripts/release.ps1и GitHub Actions workflow.github/workflows/release.yml, формирующие готовые архивыmaxpkg-runtime-aarch64(для установки на колонку) иmaxpkg-sdk-aarch64(предсобранныеlibmax_hal.a,libmax_hal.soи заголовки для разработки пакетов без компиляции ядра).
- Полное удаление локальных путей хост-машины из исходников и бинарных артефактов (
Changed
- Полный отказ от порождения дочерних процессов (
fork/exec) в модулеsystem:- Чтение и запись системных свойств Android (
get_prop/set_prop) переведены с вызовов/system/bin/getpropи/system/bin/setpropна прямые FFI-вызовы__system_property_getи__system_property_setиз системной библиотеки Bioniclibc.so. - Получение IPv4-адреса и сетевой статистики
wlan0(wifi()) переведено с вызова/system/bin/ipна прямой ядерный вызовioctl(SIOCGIFADDR)и чтение/sys/class/net/wlan0/statistics/{rx,tx}_bytes.
- Чтение и запись системных свойств Android (
- Перевод всех пакетов (
bt-memes,pkg-rust,pkg-c,pkg-cpp,pkg-go,pkg-zig) наEventBus:- Убраны циклы поллинга
sleep_ms()в пользу блокирующего ожидания ядерных событийnext_event(-1).
- Убраны циклы поллинга
Готовые артефакты релиза (aarch64-linux-android, без компиляции)
| Файл | Назначение |
|---|---|
maxpkg-runtime-aarch64-v0.2.0.tar.gz |
Полный комплект для Яндекс Станции Макс: бинарник maxctl, динамическая библиотека libmax_hal.so, автоустановщик install-on-station.sh и 6 готовых пакетов (bt-memes, pkg-rust, pkg-c, pkg-cpp, pkg-go, pkg-zig) |
maxpkg-sdk-aarch64-v0.2.0.zip |
SDK для разработчиков пакетов: предсобранные libmax_hal.a и libmax_hal.so (aarch64-linux-android, API 28), заголовки C99 (max_hal.h) и C++17 (max_hal.hpp), модули для Go (maxhal), Zig (maxhal.zig), Rust (max-sdk) и docs/API.md |
maxctl-aarch64-linux-android |
Отдельный исполняемый файл пакетного менеджера и супервизора maxctl |
libmax_hal.so |
Отдельная разделяемая библиотека ядра HAL (C-ABI) |
libmax_hal.a |
Отдельная статическая библиотека ядра HAL для статической линковки |
SHA256SUMS.txt |
Контрольные суммы SHA-256 всех бинарных файлов релиза |
Быстрая установка на Яндекс Станцию Макс
tar -xzf maxpkg-runtime-aarch64-v0.2.0.tar.gz -C /data/local/tmp/
sh /data/local/tmp/maxpkg-runtime/install-on-station.shСборка собственного пакета с готовым maxpkg-sdk-aarch64-v0.2.0.zip (без компиляции Rust)
# C99:
aarch64-linux-android28-clang -std=c99 -O2 main.c -I./include -L./lib -lmax_hal -ldl -llog -lm -o my-pkg
# C++17:
aarch64-linux-android28-clang++ -std=c++17 -O2 -static-libstdc++ main.cpp -I./include -L./lib -lmax_hal -ldl -llog -lm -o my-pkgКонтрольные суммы (SHA-256)
d314bad1aa5436a6522c051b3c21413bdc954b088841362ec73b034ac8524893 maxpkg-runtime-aarch64-v0.2.0.tar.gz
019bb2a5fa726a7e5520bf26ae4af56317a0d96d82ebe8fde83110ac698ecf41 maxpkg-sdk-aarch64-v0.2.0.zip
de500f7b0f1045b5230dad201c5fab11cb463de3bccda6156c75732994be65c1 maxctl-aarch64-linux-android
e7c64f792caf5fc8505dd3098426bf0c1be10c522e5f156037d91c49bb0e816b libmax_hal.so
ca27c1c1f5b05122fcaceafd2cf18d9abba862d94b84163a4d0618dd6251f35b libmax_hal.a