Neow3j has been updated to v3.18.0. The latest round of changes from AxLabs includes new streamlined contract interfaces and changes to the handling of iterator values returned from RPC calls.

All the changes in the new release center on the devpack, mostly implementing functionality added in the most recent Neo core updates. Example includes support for the MODPOW and MODMUL opcodes, the new method for fetching transaction signers in the LedgerContract, and methods for fetching candidate data from the NeoToken contract.

Three breaking changes can be found in the new version, so Java contracts written for previous versions of the compiler will need to be adjusted before compilation. These involve the way developers will interface with contracts, how iterators are handled when returned from RPC, and string concatenation respectively.

The new contract interfaces are designed to provide a smoother experience for developers when calling other smart contracts on the network. An updated example has been provided to demonstrate the new approach, replacing usage of the Contract.call method with contract interface initialization.

Modifications in the Neo core changed how iterators are returned from the RPC methods invokefunction and invokescript. Rather than directly returning a node-limited list of values, an iterator ID is returned along with a session ID. While the session is active, the traverseiterator method can be used to retrieve all values. A new Iterator class has been added to Neow3j’s contract module to grant more convenient access to these values.

The final breaking change is to string concatenation, which is now restricted to use with only string values. To concatenate a string with another type, such as a number, conversion methods provided in the native StdLib contract such as itoa should be used.

The full release notes for the new version can be read at the following link:
https://github.com/neow3j/neow3j/releases/tag/3.18.0