Skip to content

HyperDL v1.3.55

Choose a tag to compare

@itswill00 itswill00 released this 24 Oct 15:39
· 2 commits to main since this release

HyperDL v1.3.55

b13550 · full-zip release · changes since v1.3.54

Stops the module from resolving media libraries through the Termux toolchain, trims the bundled Python runtime, and makes the build and release helpers refuse to ship a broken or accidental result.


Highlights

Area What changed
Library resolution The native bridge no longer carries a Termux RUNPATH or accepts a Termux libavformat as proof that FFmpeg works
Bundled runtime venv, distutils, and lib2to3 are gone from python314.zip; asyncio stays because yt-dlp needs it
Version helper Unknown arguments now abort instead of silently bumping the version
Release metadata update.json reuses the release notes intro verbatim again, and tests pin the contract
Build safety The build fails loudly if the bridge still points back at the builder

Honest media-tool detection

  • Dropped the Termux library check. runtime_libs_present() treated a libavformat.so under /data/data/com.termux as proof that FFmpeg works, because that path was left over from development. The wrapper pins LD_LIBRARY_PATH to /system/lib64:/system/lib:<module>/lib, so a Termux copy could never load and the check reported a broken install as healthy.
  • Kept the check local to the module. Only <module>/lib/libavformat.so counts now, because that is the one location the wrapper actually searches.

No more toolchain paths in the bridge

  • Stripped the Termux RUNPATH. The Termux clang driver prepends its own toolchain path on every link, so bin/libhyperdl.so shipped with /data/data/com.termux/files/usr/bin/../../usr/lib in its dynamic section. On a device that has Termux installed, the loader could resolve libc.so from there, which defeats the standalone guarantee.
  • Failed the build instead of shipping it. build.sh removes the RUNPATH after linking and aborts if any DT_RPATH/DT_RUNPATH still names that path, because a silent regression here is invisible until it breaks someone's install.
  • Confirmed the bridge only needs Android. The shipped bridge declares just libc.so and libdl.so in NEEDED, so it runs before anything is staged.

Leaner bundled Python

  • Pruned unreachable modules. venv, distutils, and lib2to3 slipped past the stdlib skip list and added weight to python314.zip for code nothing on device can reach.
  • Kept asyncio on purpose. yt-dlp's downloader/websocket.pyc imports it, so pruning it would have broken websocket downloads silently.

Build and release tooling that refuses accidents

  • Validated every argument first. bump_version.py writes to all six versioned files as soon as parsing succeeds, and its loop silently ignored anything unrecognised. Running it with --help therefore bumped the version instead of printing usage. Unknown flags, stray words, repeated bump types, and --notes without a value now exit 2 without touching a file, and --help exits 0.
  • Restored the notes contract. update.json:notes must be the release notes intro verbatim, because the root manager prompt and the release page should never describe the same build differently. v1.3.54 shipped a paraphrase; this release carries the v1.3.55 intro unchanged.
  • Pinned all of it with tests. Three new suites cover the version helper, the release metadata standard, and the standalone isolation rules, so a fresh clone catches these regressions without a device.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.55.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.55.zip.