Skip to main content

4 posts tagged with "release"

View All Tags

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.