LibNexaKotlin 0.5.68: Wallet Stability Release

A new release of LibNexaKotlin 0.5.68 with wallet stability improvements, and a call for developers to upgrade to the new version. Lately, a lot of major work has been happening in this library, designed to make it easier to interact with the Nexa blockchain. Since the last update, there have been two more releases, 0.5.67 and 0.5.68, which improved the experience on iOS devices.

Stability Improvements

This release closed a focused round of stability improvements targeted at concurrency flaws that could crash wallets on iOS or destabilize library usage. If you are a developer using this library, this is a mandatory update to improve the functionality on iOS.

LibNexaKotlin is a Kotlin multiplatform library powering wallets on the Nexa blockchain. It’s a single codebase compiled to the JVM, Linux, Android, iOS, and macOS. However, on iOS, the library runs on Kotlin/Native, with concurrency semantics that the JVM tolerates, but iOS does not. The latest 0.5.68 version eliminates differences and provides stable functionality.

Issues Addressed

The main work focused on eliminating data races, with multiple rounds of improvements. Each one locked down a piece of the shared wallet state that was being read and written from multiple threads at once, a classic cause of the intermittent and hard-to-reproduce crashes that were showing up under real-world load. Affected areas included core wallet paths such as transaction filtering, address handling, and network sync.

More work on the library includes structural hardening of immutable, atomically swapped server node lists, small socket and stability fixes, and a fast-abort mechanism that the wallet can use to cleanly cancel a stuck network call.

In conclusion

Providing a strong foundation is crucial for any successful project, and developments on the main Nexa libraries and infrastructure are not stopping and are near the other team’s top priorities. Developers using libNexaKotlin are recommended to upgrade to the latest version to avoid unexpected behavior across all operating systems.

Thanks for the improvements, and top-notch professionalism goes to Andrew Stone and Jørgen Notland.

1 Like