Skip to content

Releases: aionnetwork/AVM

AVM 2.0 release

27 Oct 21:24
Compare
Choose a tag to compare

This marks the first AVM 2 release. NOTE: AVM 2.x is not consensus-compatible with AVM 1.x! Contracts deployed on AVM 1.x will be retransformed for AVM 2, upon first transaction invocation.

Noteworthy changes:

  • Removed inappropriate methods from StringBuffer (buffer size changes) and String (regex uses)
  • Changed JCL billing mechanism to avoid double-billing and align costs more closely with real expense of these operations (in the majority of cases, this reduced the JCL energy cost)
  • Added restrictions to what is considered a valid contract:
    • no more than 4095 constant pool entries per class
    • no more than 511 methods per class
    • no more than 63 local variables in a method
    • no more than 63 operand stack slots per method
    • no more than 15 exception handlers per method
    • no more than 4095 bytes of code per method
  • Added diagnostic utilities to collect data around deployed contracts
  • Fixed double-increment of nonce in some cases
  • Fixed the energy cost of heap usage: this is now directly associated with the instance variables in an object
  • Fixed a bug where a reverted transaction would over-charge the sender
  • Added meta-transaction support via Blockchain.invokeTransaction
  • Added ability API to get the hash of the current external transaction via Blockchain.getTransactionHash

AVM 1.5 release

12 Sep 18:58
Compare
Choose a tag to compare

Note that this is the final planned release of the AVM 1.x versions before consensus-breaking changes are introduced in AVM 2.0.

Changes since 1.4.2

  • Simplify concurrent abort handling
  • (tooling) Add BigInteger and BigInteger[] as API types
  • (tooling) Improved JAR optimizer
  • (userlib) New AionMap design and implementation
  • Removed SLF4J dependency
  • Silence all tests, by default
  • (tooling) Improved capabilities and documentation around AvmRule

Latest Tooling Jars

20 Aug 20:36
Compare
Choose a tag to compare

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.

Avm 1.1

07 May 13:49
Compare
Choose a tag to compare

A build of the Aion Java Kernel with an embedded AVM. This build can be used to connect to the Avm Testnet.

Avm 1.0

02 May 21:40
Compare
Choose a tag to compare

A build of the Aion Java Kernel with an embedded AVM. This build can be used to connect to the Avm Testnet.

Avm-integrated Kernel For Testnet (April 17, 2019)

17 Apr 21:07
Compare
Choose a tag to compare

A build of an Avm-integrated Java Kernel that is configured specifically to connect to the Avm Testnet.

This binary provides you with a basic Hello World dapp (provided as dapp.jar), a basic script to interact with the Testnet via rpc (provided as rpc.sh), and a script to compile Java source code into jar files (provided as compile.sh).

Avm-integrated Kernel For Testnet (April 10, 2019)

10 Apr 23:01
Compare
Choose a tag to compare

A build of an Avm-integrated Java Kernel that is configured specifically to connect to the Avm Testnet.

This binary provides you with a basic Hello World dapp (provided as dapp.jar), a basic script to interact with the Testnet via rpc (provided as rpc.sh), and a script to compile Java source code into jar files (provided as compile.sh).

Avm-integrated Kernel For Testnet (March 26, 2019)

26 Mar 15:41
Compare
Choose a tag to compare

A build of an Avm-integrated Java Kernel that is configured specifically to connect to the Avm Testnet.

This binary provides you with a basic Hello World dapp (provided as dapp.jar), a basic script to interact with the Testnet via rpc (provided as rpc.sh), and a script to compile Java source code into jar files (provided as compile.sh).

Avm-integrated Kernel For Testnet (March 5, 2019)

05 Mar 20:00
Compare
Choose a tag to compare

A build of an Avm-integrated Java Kernel that is configured specifically to connect to the Avm Testnet.

This binary provides you with a basic Hello World dapp (provided as dapp.jar), a basic script to interact with the Testnet via rpc (provided as rpc.sh), and a script to compile Java source code into jar files (provided as compile.sh).

Avm-integrated Kernel For Testnet (Feb 8, 2019)

08 Feb 21:13
Compare
Choose a tag to compare

A build of an Avm-integrated Java Kernel that is configured specifically to connect to the Avm Testnet.

This binary provides you with a basic Hello World dapp (provided as dapp.jar), a basic script to interact with the Testnet via rpc (provided as rpc.sh), and a script to compile Java source code into jar files (provided as compile.sh).