Skip to main content

6 posts tagged with "release"

View All Tags

v2026.04.30 Release

· One min read
Redex Team
Redex Team

Optimizations

This release brings several code-size and inlining improvements:

  • RemoveUnreachablePass can now sweep annotation elements (via the sweep_annotation_elements option). This yields a large code-size reduction for apps that cannot enable AnnoKill, and a modest reduction for those that do.
  • More lenient cross-store reference (XStoreRefs) handling when normal_primary_dex is enabled, improving inlining across primary and secondary dex files for apps using native multidex.
  • ResolveRefsPass now does a better job resolving interface references.

Other improvements

  • New CompactPointerVector container, a memory-efficient alternative to std::vector for storing a small number of pointers inline without heap allocation.
  • Broader use of AtomicStatCounter for thread-safe stats collection.
  • Partial migration from boost::optional to std::optional.
  • Systematic include cleanup and const-correctness improvements across the codebase.

v2025.09.18 Release

· One min read
Redex Team
Redex Team

Optimizations

This release brings Kotlin default arguments optimization in Constant Propagation.

Other improvements

  • More adoptions of the new unordered container type.
  • Reducing Redex memory usage (via inliner’s new max_reduced_size option).
  • JarLoader improvements for fuzzing.

v2025.03.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This release brings enhancements to existing optimizations:

  • BranchPrefixHoisting runs more often, hoisting more instructions.
  • Improvements to inlining, inlining almost 1% more callsites while reducing code-size overall.
  • Improvements to source blocks for merged classes.
  • New pass InsertDebugInfoPass to insert artificial debug info for incoming code that is missing line numbers.
  • Improvements to constant propagation analyzers to evaluate package names.

Other improvements

  • Improvements to .pro parsing logic and dex loading logic (not expected to change application perf).

v2024.10.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This is a relatively small incremental release bringing two new optimizations:

  • A new resource inlining pass, inlining universally constant resources values directly in the code, eliminating expensive resource lookups. This first implementation only considers colors, ints and bools, but does not yet consider strings.
  • Eliminating unused arguments in true virtual methods. This reduces method invocation overhead for virtual methods.

Other improvements

  • Support for -assumevalues in ProGuard specifications, as supported by R8. This unlocks additional optimizations in Redex.

v2024.08.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This release bundles a few improved optimizations that improve code size and performance:

  • Relax init optimization that inlines the constructor calls at object instantiation site. As a result, we can also remove the constructor method from the class.
  • By reordering classes in InterdexPass, we made dexes more dense after Halfnosis pass and empty dexes will be left behind and can be removed by the newly introduced DexRemovalPass.

Better Engineering & Reliability Improvements

  • Improved dead resource elimination, to bring parity between .apk and .aab builds for removed resources.
  • Classes using the ServiceLoader Java APIs will now be kept by Redex; keep rules are no longer necessary.
  • Class renaming improvements to better identify class names used by layout files and string references.
  • Improved annotation handling in SingleImplPass.

v2024.05.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This release bundles a few improved optimizations that improve code size and performance:

  • Improvements to object escape analysis and associated transformations (support for check-casts, returning parameters, true virtual and super invocations, comparing objects with null, and a whole new global cost function), resulting in fewer object allocations and more inlining.
  • Streamlined treatment of system annotations (a conceptual cleanup effort that lead to a size reduction).
  • Value numbering for branch conditions eliminating branches in code.

Build Speed / Reliability / Better Engineering

  • Improved precision of analysis for class references from layouts and XML attributes, preventing Redex from removing referenced classes.
  • First steps towards addressing an ancient design bug in Redex causing improper handling of the package-private access modifier.
  • Performance improvements to Redex infrastructure.