Latest Updates: 2024-04
This thread tracks ongoing work and upcoming releases for Sui. This is a brief outline of the developer-facing Sui roadmap; this thread tracks the first half of 2024. If you’re interested in updates on these items, you can subscribe to this thread, and you’ll be notified when we announce releases. If you’re interested in updates more generally, you can subscribe to the Developer Announcements forum.
Where possible, we’ve tried to give potential timelines for these upcoming items. But nothing here can be taken as absolute proof of anything happening at any given time. We’re sharing this roadmap out of a desire to be helpful to our community and in the spirit of open-source.
Highlights of items/dates:
Category | Item | Release Date |
---|---|---|
Move 2024 | Late February | |
RPC 2.0 | Late January | |
Developer Tooling | Sui CLI PTB support | Mid February |
Windows binaries in Chocolatey | Q1 | |
Gas Profiler | Q1 | |
Toolchain Versioning | Late Februrary | |
BCS/JSON (De)Serialization | Late March | |
Rust SDK Refresh | Q1 | |
Crypto | Verifiable Delay Functions | Mid February |
Encrypted NFTs | Late March | |
Randomness Beacon | Later this year | |
DRAND Improvements | Later this year | |
Execution | Shared Object Deletion | Early February |
Closed Loop Token | Q1 | |
Everything Else | SuiNS .move service | Later this year |
Native Bridge | Later this year |
Move 2024
Move 2024 is what we’re calling several initiatives to modernize the Move language this year. Many of these are changes to the source language – they will enhance the developer experience without requiring any changes to the binary representation published on-chain.
Primarily, the goal of these changes is to make Move easier to write, and hopefully easier to read. Secondarily, we will make a few breaking changes to the source language to better position the language for the future.
These new features and the breaking changes will be opt-in. Any existing code will continue to compile. This also means that you will be able to write your packages with the new features, even if your dependencies do not.
These features will be developed and rolled-out over the coming months (and some have already landed!). In order to give builders time to migrate to Move 2024, the first new feature we’ll be releasing is support in the Move toolchain for language flavor control in late February. This will give you the ability to decide which version of Move your code is compiled under. You can opt-in to Move 2024 features already by specifying edition = “2024.alpha” under the [package] section in your Move.toml. Later in 2024, edition = “2024” will become the default.
For more information, see the overarching Move 2024 github issue, or our recent Sui blog post.
Major features
Method syntax
Refinement of the method syntax to be more intuitive and user-friendly, facilitating easier method declaration and invocation. For more information, see issue 14063.
Index syntax
Building on Method syntax, we will add syntax for index accesses depending on the type of access.
Macro functions
Target release: Late February 2024
Incorporation of macro functions, allowing for more powerful and concise code patterns, reducing redundancy.
Enums
Target release: Q2 2024
Implementation of Enums to extend the language’s type system, introducing a new way to define and use enumerated types.
Minor features
Typed Macro Functions & Move 2024 Beta pre-release
Target release: Late February 2024
Further refinement of macro functions and preparation for a beta release to gather community feedback and insights.
public(package)
Target release: Late February 2024
Expansion of the visibility modifier system, introducing public(package) for more nuanced access control within package boundaries.
Positional fields
Target release: Late February 2024
Enhancement of struct definitions with positional fields, improving the clarity and readability of data structures.
Postfix has ability declarations
Target release: Late February 2024
A new postfix syntax for ability declarations, making the expression of constraints more natural and intuitive in the language.
Type inference holes on type annotations
Target release: Late February 2024
Advanced type inference capabilities, aimed at simplifying the process of annotating types, particularly in complex scenarios.
Break with value
Target release: Late February 2024
Enabling break statements in loops to return values, facilitating more expressive and powerful control flow constructs.
RPC 2.0
Target release: Late January 2024
RPC 2.0 is a major effort to re-imagine Sui’s RPCs. You can read more about it on Github. Our interactive demo has been available since late 2023; builders can use this to help with their transition to the new GraphQL RPC API. RPC 2.0 will be fully available in late January 2024. Going forward, RPCs will adopt a quarterly release schedule with a versioning scheme of [year].[month].[patch], breaking changes will be reserved for [year].[month] versions, and each RPC major version will be supported for 6 months for bugfixes. The previous RPC version will not be deprecated until after Q2 2024.
Developer Tooling
Sui CLI PTB Support
Target release: Mid February 2024
Currently, the only way to test PTBs is to use a Sui SDK. This isn’t ideal for experimentation and ad-hoc testing. So, we are adding support for building and executing PTB’s within the Sui CLI. PTBs can be fully constructed either on the command line, or read from a file using a similar format.
Windows Sui binaries in Chocolatey
Target release: Q1 2024
While OS X and GNU/Linux users can take advantage of Homebrew or Cargo to install and upgrade Sui binaries, Windows users only have the option of manually installing binaries from our Github releases. We will be adding these binaries to Chocolatey so that Windows users can also take advantage of a package-manager workflow to keep their binaries updated. We hope this makes developer onboarding a more seamless experience for Windows developers.
Gas profiler
Target release: Q1 2024
Gas fees are a critical component of any dApp. To help builders assess how their dApps consume gas, we’ve been working on a tool to profile and visualize gas usage in applications, based on the Chrome profiler. This has made it much easier for us to understand gas usage internally and we hope it will be as useful for external developers.
Toolchain Versioning
Target release: Late February 2024
Toolchain versioning ensures that when a package is published and its dependencies are verified, the process is conducted using the original toolchain that built the published dependency, rather than the current toolchain in use. This approach is critical because verification involves a byte-for-byte comparison of the bytecode. Utilizing the original toolchain prevents the occurrence of verification failures that could arise from benign changes introduced by newer toolchains.
BCS/JSON (De)Serialization C Library
Target release: Late March 2024
Binary Canonical Serialization, or BCS, is the data format used to represent data on Sui, but many languages lack support for BCS. We will be providing a canonical implementation of BCS serialization and deserialization from and to JSON in a Rust library with an easy to use C API. Builders working in language ecosystems without a BCS implementation can call this library using their languages FFI support. For more information, see issue 13483.
Rust SDK Refresh
Target release: Q1 2024
We will be releasing a major refactor of our Rust SDK to add support for GraphQL querying as well as streamlining transaction building.
Crypto
Verifiable Delay Functions
Target release: Mid February 2024
A verifiable delay function (VDF) is a deterministic function which takes a certain time to evaluate, even if multiple computers are allowed to work in parallel to evaluate it. But once evaluated, the output may be quickly verified by anyone.
VDF’s can be used to construct verifiable, unbiasable on-chain randomness and as also used as a proof-of-work for some blockchain designs. See section 2 in Verifiable Delay Functions by Boneh et. al https://eprint.iacr.org/2018/601.pdf for a survey of applications.
In Sui the usage will be for a continuous supply of on-chain randomness where we only need to assume that 1-out-of-n parties is honest. This can be implemented as a service provided by Mysten and requires only the addition of a few functions to the Sui framework and a smart contract.
Encrypted NFTs
Target release: Late March 2024
Most NFT marketplaces reveal user identities, bids, transactions, and other information including the content of NFTs to the public. This restricts the scope of successful NFT categories to those which are exclusively privacy-insensitive, and also introduces the possibility of shill bidding, wash trading, and even unauthorized copying of digital assets. We will be introducing a protocol for a private NFT exchange between a seller and a buyer that uses zero-knowledge proofs.
Randomness Beacon
Target release: Later in 2024
We will be adding an on-chain randomness beacon to Devnet targeting late February, and mainnet later in 2024 after testing, The goal of the randomness beacon is to provide randomness for smart contracts. That randomness must be unpredictable and unbiasable, even against a subset of malicious validators.
DRAND Improvements
Target release: Devnet/Testnet Q1 2024
We are adding support for BLS12-381 group operations to be added in the future.
Execution
Shared Object Deletion
Target release: Mainnet - Early February 2024
We are adding the capability for shared objects to be deleted (causing storage rebates to be reclaimed by the entity that submits the transaction deleting the shared object). This was released on Testnet in early January of 2024, and after testing, we hope to release this on Mainnet in early February. For more information, see issue 12653.
Closed Loop Token
Target release: Q2 2024
We recently published our standard for Closed-Loop Tokens, which are similar to Coins with the caveat that the creator of a Closed-Loop Token can limit applications where the token is used and/or define custom policies for transfers, spending, and conversion. This can be used to implement loyalty points, regulatory-compliant tokens, or in-game currencies, among other things. We will be releasing more support across RPCs, fullnodes, indexers, and our SDKs for this standard.
Other Upcoming Features and Improvements
SuiNS: .move Service
Target release: Later this year
The .move service is an extension of SuiNS to provide an on-chain service that maps human-readable names to object ids. The .move service will allow builders and community members to identify and understand objects on Sui, and to quickly identify and discover packages for their development needs, without having to memorize complex addresses or verifying authors. Wallets can interact with the .move service to enable users to understand if the packages they are interacting with are legitimate.
Native Bridge
Target release: Later this year
To empower more types of cross chain communication and diversify bridging experiences on Sui, we’ll be introducing Sui Bridge, a trustless native bridge leveraging Sui’s security model. This bridge will rely on the same security assumptions as Sui’s core network, and hence trusting Sui Bridge will require the same security assumptions as trusting Sui itself. Sui Bridge will start as a fungible token bridge between Sui and Ethereum, while being extensible so as to support new assets, message types, and chains in the future. For more information, see issue 14983.