Soroban Support Matrix

This page is the documentation for feature support status on the Soroban target.

This support matrix documents the Soroban features Solang currently intends to support. It should be read as a statement of documented target behavior, not as a claim of exhaustive coverage. Stronger completeness claims would require broader automated validation, such as fuzzing and differential testing, and that work is still in progress.

The Soroban target as a whole is still pre-alpha and experimental.

Related documentation:

Page

Purpose

Soroban Examples Coverage

Upstream stellar/soroban-examples coverage and the corresponding Solang Solidity examples.

Soroban Solidity Language Compatibility

Solidity-facing differences and Soroban-specific language behavior.

Solang and Soroban Rust SDK Differences

Storage layout, host-value representation, and differences from common Rust SDK patterns.

Language Features

Feature area

Status

Details and examples

Contract model

Supported

Constructors with arguments, public functions, and public getters. Examples: token.sol, timelock.sol, and storage_types.sol.

Core types and collections

Supported

Primitive types, uint256 and int256, documented struct shapes, mappings and nested mappings, and memory/storage arrays. Examples: token.sol, timelock.sol, liquidity_pool.sol, atomic_swap, and liquidity_pool.

Events and logs

Supported

Solidity event declarations and emit statements are supported. Indexed fields map to Soroban event topics and non-indexed fields map to event data. print() and runtime error logging are also available. Example: error.sol.

Complex user-defined and composite types

Partial support

Coverage is still limited. More complex user-defined types and deeper composite values, such as nested structs, might not compile in some cases.

Yul and inline assembly

Unsupported

Not supported on the Soroban target.

Solidity hash and crypto builtins

Unsupported

Not yet supported on the Soroban target.

The exact Solidity support boundary can only be characterized with broader fuzzing and related validation, and that work is still in progress.

If you run into a missing Solidity feature on Soroban, please open an issue.

Soroban Features

Feature area

Status

Details and examples

Authorization

Supported

address.requireAuth() and auth.authAsCurrContract(...). Examples: auth.sol, token.sol, timelock.sol, and deep_auth.

Cross-contract calls

Supported

address.call(...) and the documented ABI encode/decode flows around it. Examples: deep_auth and cross_contract.spec.js.

Storage classes and TTL

Supported

Storage classes persistent, temporary, and instance, plus extendTtl(...) and extendInstanceTtl(...). Examples: storage_types.sol and ttl_storage.sol.

Soroban utilities

Supported

block.timestamp. Example: timelock.sol.

Creating contracts with new

Unsupported

Contract creation from Solidity is not supported on Soroban.

Native value transfer and payable-style flows

Unsupported

This is not part of the documented Solang support surface on Soroban.

selfdestruct

Unsupported

Not supported on the Soroban target.

Where a feature has target-specific behavior rather than being simply supported or unsupported, that behavior is documented in the compatibility pages linked above.