SOLL is a new compiler for generate Ewasm from solidity and yul. See a demo here: https://asciinema.org/a/ezJqNLicn5fya02zwu4VXIo8a
Language Features:
Compiler Features:
--O0
: Disable optimizations--O1
: Enable trivial optimizations--O2
: Enable default optimizations--O3
: Enable expensive optimizations--Os
: Enable default optimizations for size--Oz
: Enable expensive optimizations for sizeBugfixes:
revert()
and array accessLanguage Features:
return
, revert
log0
, log1
, log2
, log3
, log4
blockcoinbase
, blockdifficulty
, blockgaslimit
blocknumber
, blocktimestamp
, txorigin
, txgasprice
, gasleft
caller
, callvalue
, calldatasize
codecopy
, datacopy
datasize
, dataoffset
(limitation: couldn't be used apply on object itself)Compiler Features:
-deploy=Chain
: Ewasm VM (Hera) not support keccak256 yet, so for workaround use sha256 instead. (Default)-deploy=Normal
: Normal behavior.-action=EmitAssembly
: Emit a .s file.-action=EmitBC
: Emit a .bc file.-action=EmitLLVM
: Emit a .bc file.-action=EmitLLVMOnly
: Generate LLVM IR, but do not emit anything.-action=EmitCodeGenOnly
: Generate machine code, but don't emit anything.-action=EmitObj
: Emit a .o file.-action=EmitWasm
: Emit a .wasm file.-action=ParseSyntaxOnly
: Parse and perform semantic analysis.Bugfixes:
blockhash
.iszero
, shl
, shr
, sar
soll -action=EmitFuncSig
.Language Features:
> uint64
)ether
, finney
, szabo
, wei
weeks
, days
, hours
, minutes
, seconds
keccak256
and sha256
with sha3
for EVM backend.this
to access member functions in the same contract.switch
statement.slt
-> lts256
sgt
-> gts256
sdiv
-> divs256
__heap_size
as memory offset.calldataload
mload
, mstore
, mstore8
, msize
exp
array.push, array.pop
Bugfixes:
0x...
)<address>.balance
should return uint256 instead of uint128.<address>.balance
, <address>.send
, blockhash
Language Features:
Compiler Features:
-version
-lang=Sol
: Input file is written in Solidity. (Default)-lang=Yul
: Input file is written in Yul.Regression Test:
Expected Passes : 10 # Solidity has 66 testing contract, and SOLL can pass 10.
Unsupported Tests : 56 # Unimplemented by SOLL
Pass Rate: 15%
Expected Passes : 63 # libyul has 499 testing contracts, and SOLL can pass 63.
Unsupported Tests : 436 # Unimplemented by SOLL
Pass Rate: 13%
Language Features:
Compiler Features:
EmitABI
: Generate ABIEmitFuncSig
: Generate function signaturesBugfixes:
This is a prerelease version of SOLL 0.0.3.