Through November, Neo SPCC released various new NeoGo tools and enhancements for developers. Improvements include an automatic RPC bindings generator for contracts and height-based chain state resetting.
On Nov. 11, the team released v0.99.5. The update featured a large overhaul of the node’s networking code and broadcast logic in order to reduce message sending delays and unnecessary network traffic.
The primary developer-facing updates included an extended WebSocket subscriptions interface, the ability to reset chain state to a given block height, and an automatic RPC bindings generator.
The generator takes the form of a CLI command, using a contract manifest file and debug info file to generate RPC bindings for a given contract. Bindings for both read-only and state-changing contract methods are supported, alongside basic support for processing iterators.
State-related functionality in the VM CLI was also enhanced in this release, providing contract developers with a better debugging experience. Recent additions are extended signers and arguments parsing, logging, and new commands to load persisted transactions or contracts.
Several bug fixes and improvements also made it into the release, including an issue in dBFT initialization which caused timestamp-related errors. The full changelog for the release can be viewed here.
A few days later, v0.99.6 was released, with emergency fixes for a MainNet incompatibility with the C# node implementation. The incompatibility emerged at block 2504813, though was tracked by the team to have been caused by a VM stack handling problem that occurred earlier at block 2504320.
Other bug fixes of a less critical variety were also rolled into the update. Issues with node startup caused by a broken contract and failing subscriptions to execution events were resolved. The team also merged a consensus performance enhancement in the form of transaction pre-filtering and a set of RPC unwrappers for homogeneous arrays.
Due to the incompatibility, resynchronization was required by node operators. The changelog can be found here.
The most recent release is v0.99.7, published Nov. 23. This release was focused on bug fixes and other changes to improve the developer experience. Modifications to user-facing components were accompanied by a number of under the hood changes.
After updating, NeoGo developers using the WebSocket service will find improved error messaging around handshake failures and a new configuration option that allows the number of allowed clients to be adjusted. A potential node deadlock issue caused by WebSocket unsubscriptions was also found and resolved.
This version also has some further improvements for VM CLI commands and an assortment of other bug fixes. Included are fixes for improper evaluation stack exception handling, deserialization errors in pointer stack items, and issues with state reset functionality for heavy chains such as MainNet.
The release remains compatible with Neo v3.4 and will not require node resynchronization for the majority of users upgrading from v0.99.6.
The full changelog can be read here.