Skip to content

Latest Tooling Jars

Compare
Choose a tag to compare
@aion-shidokht aion-shidokht released this 20 Aug 20:36
· 70 commits to master since this release

This release contains the latest version of the AVM jars required to setup a development environment in which one can write and test Java contracts.

Breaking Changes

  • AvmTransactionResult was replaced with TransactionResult.
  • ResultCode was replaced with TransactionStatus.
  • IExecutionLog was replaced with Log.
  • The tooling module was split into two modules: embed and tooling. This allows a distinction between components which require embedding the AVM (such as AvmRule and AvmCLI in embed) and those that exist purely outside of it (such as ABICompiler and JarOptimizer in tooling).
  • Removed the dependency on vm_api and added a dependency on aion-types.

New Features

  • Added ABI support for BigInteger and BigInteger[]. This feature is enabled from ABI version 1. Hence, in order to use BigInteger as an ABI type, version number should be passed as an argument to the ABICompiler or AvmRule.
  • Added two new optimization steps to reduce energy consumption:
    1. Renamer: renames class, method, and field names to shorter Strings.
    2. ConstantRemover: removes ABIException messages from userlib classes.
  • Added OptimizedJarBuilder to select which optimization steps to perform on an input jar. Note that AvmRule uses all the optimization steps.
  • Updated AvmRule to automatically generate a new block after each transaction. This feature can be disabled.

Bug Fixes

  • Fixed MethodReachabilityDetector to consider INVOKESTATIC method inheritance.
  • Fixed an issue which would cause deployment of a user defined interface to fail in debug mode.

Improvements

  • Changed AionMap implementation from a B+ Tree data structure to a hash table that uses Separate Chaining for collision resolution.
  • Added a utility method for padding log topics shorter than 32 bytes on the left (found in AionUtilities).
  • Added an additional unused class removal optimization step after unreachable methods have been removed.