Skip to main content

Mandochka ⚡

License: MIT Python: >=3.10

Mandochka — высокопроизводительный инструмент сборки плагинов для ElyxCore (exteraGram, AyuGram, exteraless и др.), форк ElyxBuilder с полной переработкой под максимальную производительность и нативную интеграцию с D8/Javac (DEX) без необходимости писать костыльные скрипты-обёртки, как это приходилось делать в pluginmanager-canary.


В чём проблема ElyxBuilder и почему появилась Mandochka?

В оригинальном ElyxBuilder:

  1. Полное отсутствие поддержки DEX/Java: если плагину требовался нативный Java DEX мост (как в pluginmanager-canary для SIMD/DEX ускорения векторных моделей или хуков), разработчикам приходилось:
    • Вручную писать сложные скрипты build-dex.sh и build-dex.bat на 130+ строк.
    • Искать JDK, javac, Android SDK или писать скрипты скачивания r8.jar через PowerShell/curl.
    • Компилировать стабы (compile_stubs) вручную в два этапа.
    • Оборачивать elyb build во внешние скрипты build-uv.sh / build-uv.bat.
    • Терпеть отсутствие инкрементального кэширования для Java/DEX (каждый запуск компилировал всё заново).
  2. Экстремально медленная компиляция Python:
    • ElyxBuilder для каждого .py файла запускал отдельный процесс python -c "import py_compile...". При 50–100 файлах это занимало 15–20 секунд.
  3. Недописанный интерпретатор DSL:
    • Команда elyb script падала с ModuleNotFoundError: No module named 'elyb.elyxdsl.interpreter'.

Что даёт Mandochka?

1. Нативная интеграция с D8 / Javac («без извращений»)

  • Zero-config автоопределение: если в проекте есть dex_src/ или java_src/, Mandochka сама всё скомпилирует в .dex.
  • Автопоиск компиляторов: автоматически находит javac в PATH, JAVA_HOME, Scoop (temurin17-jdk и др.), Program Files и системных путях Linux/macOS.
  • Автопоиск и автозагрузка D8/R8: находит d8 в Android SDK build-tools, либо автоматически скачивает официальный r8.jar с Google Maven в глобальный кэш ~/.mandochka/bin/r8.jar. Больше никаких ручных скачиваний!
  • Поддержка Stubs: двухэтапная компиляция стабов (compile_stubs/) и внешних .jar библиотек из коробки.
  • Инкрементальный кэш DEX: если Java-файлы и стабы не менялись, проверка занимает < 15 мс.
  • Команда mandochka dex: отдельная удобная команда для прямой сборки DEX без упаковки всего плагина.

2. Максимальная производительность

  • Пакетная и многопоточная компиляция Python 3.11:
    • Нативная компиляция в памяти при запуске под Python 3.11.
    • Высокоскоростной батч-воркер через потоки/процессы: 100+ файлов компилируются за ~150 мс вместо 15 секунд.
  • Многопоточная проверка AST (-a) и параллельная обфускация (-o).
  • Сверхбыстрая повторная сборка: проект из 150 файлов пересобирается всего за ~170 миллисекунд!
  • Бенчмарк фаз (-b / --benchmark): детальный отчёт о времени каждой стадии (dex, ast, pyc, pack) в миллисекундах.

3. Полная совместимость и сохранение возможностей

  • Псевдонимы команд: mandochka, mando, elyb (полная обратная совместимость со всеми существующими скриптами и CI!).
  • Поддержка refmap.json, refmap.yml, config.yml, .mandochka/ и .elyxbuilder/.
  • Полный набор команд: new, build, dex, doctor, cached, stats, watch, ignore, script.
  • Полнофункциональный интерпретатор .edsl для автоматизации сборки.

Сравнение производительности

Сценарий ElyxBuilder Mandochka Ускорение
Сборка плагина (~150 файлов) без кэша ~18.5 с ~1.2 с ~15x быстрее
Инкрементальная пересборка (кэш hit) ~3.2 с ~0.17 с (170 мс) ~19x быстрее
Сборка Java в DEX (3 файла + стабы) Вручную скриптами (~4.5 с) Нативно (~1.0 с) Автоматически
Повторный DEX (кэш hit) Перекомпиляция (~4.5 с) ~0.01 с (10 мс) Мгновенно

Установка

git clone https://github.com/shareui/Mandochka.git
cd Mandochka
pip install -e .

Проверьте готовность системы:

mandochka doctor

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

Создание плагина с Java DEX мостом:

mandochka new -g -n "MyPlugin" -a "Nickname" --with-dex
cd Myplugin

Сборка плагина:

# Скомпилирует Python 3.11 bytecode + Java DEX + упакует в builds/MyPlugin-0.1.0-3.11.eaf
mandochka build -c 2 -b

Отдельная компиляция только DEX:

mandochka dex -v

Просмотр статуса кэша:

mandochka cached

Конфигурация (config.yml)

zipFormat: eaf
source: myplugin/src
buildNameUncompiled: "{name}-{version}"
buildNameCompiled: "{name}-{version}-3.11"
ignoreAll:
  - myplugin/.mandochka/cache/*
compilationIgnore:
  - myplugin/src/main.py

# Нативная интеграция DEX / Java
dex:
  enabled: true
  source: myplugin/dex_src
  stubs: myplugin/compile_stubs
  output: myplugin/res/dex/classes.dex
  minApi: 26
  targetJava: 8
  autoDownloadR8: true

obfuscationConfig:
  stripDocstrings: true
  removeLogs: true
  renameLocals: true
  encodeStrings: true
  encodeNumbers: true

CLI Справка

  • mandochka build: сборка плагина (-c [0-2], -a, -o, -p <method> <pass>, --dex, --skip-dex, -j <jobs>, -b).
  • mandochka dex: прямая компиляция Java в Dalvik DEX (--source, --output, --stubs, --min-api, --release, --d8, --javac, -f, -c, -v).
  • mandochka doctor: диагностика компиляторов и инструментов окружения.
  • mandochka cached: статус файлов в кэше Python и DEX.
  • mandochka stats: статистика проекта (builds, lines, size, files).
  • mandochka watch: авто-пересборка при изменениях файлов.
  • mandochka new: мастер создания плагина (интерактивный или через --gen).
  • mandochka script: запуск .edsl скриптов автоматизации.
  • mandochka add-ignore / del-ignore: управление списками игнорирования.

Документация


Лицензия

MIT License. См. файл LICENSE.

Metadata

Release files for mandochka 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mandochka 0.1.0
File Size Uploaded Provenance Actions
mandochka-0.1.0.tar.gz 61.8 kB Without provenance Details for mandochka-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mandochka 0.1.0
File Interpreter ABI Platform Actions
mandochka-0.1.0-py3-none-any.whl Python 3 none any Details for mandochka-0.1.0-py3-none-any.whl

Total release size: 127.7 kB

Release files / mandochka-0.1.0.tar.gz

Download URL mandochka-0.1.0.tar.gz
Size 61.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cb7a395723ed86628cbc4c27c62f9d69d6263b1691ced0054d8a3a623c2665bb
BLAKE2b-256 checksum
How to use checksums
6d81bcc9ba9cb52eedfe5249dd4c9e0d651cc81dabfde926b9e1c0e1c9a3feeb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / mandochka-0.1.0-py3-none-any.whl

Download URL mandochka-0.1.0-py3-none-any.whl
Size 65.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
129e54e10c7cb50e58171cb73c4cac5b1ec91f6e87ea612b1ce03f4daa8f0a93
BLAKE2b-256 checksum
How to use checksums
dd30da6bad6221698ee831006f1563a8e080142e3a1ae44c4441dcc7c4d205d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Security for mandochka 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page