The dynamically-compiled provider, which requires the JDK to be installed at runtime and can use lots of RAM.
The precompiled provider, which requires ~30MB of additional code (when the rest of the library is 60KB!) and takes quite some time to load.
Neither one of these is ideal. The interpreted instruction provider should be re-added. Alternatively a "small precompiled" provider could be added: instead of generating one class per instruction, generate one class for each possible operator and operand and then plug them together. It would be slightly slower, but the code-size savings would be immense: instead of (operators * operands * operands) = ~55000 classes, we would instead have (operators + operands) = 99 classes.
The current instruction providers are:
Neither one of these is ideal. The interpreted instruction provider should be re-added. Alternatively a "small precompiled" provider could be added: instead of generating one class per instruction, generate one class for each possible operator and operand and then plug them together. It would be slightly slower, but the code-size savings would be immense: instead of (operators * operands * operands) = ~55000 classes, we would instead have (operators + operands) = 99 classes.