Skip to main content

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.

Office Hours

Β· One min read

!!! Redex Public Office Hour Coming on Wed. 10/26/2022 @2PM PST !!!

Zoom Meeting id: 921 3454 5091; passcode: 177943

Please dial in to chat! We would love to learn how do you use Redex, what challenges are you facing, and how can we better help. We would like keep the 1st office hour to be more high level. If you have very specific questions, like how to build Redex, Github issue is still the best way to resolve it.