Releases: second-state/SOLL
Releases · second-state/SOLL
SOLL 0.1.1
SOLL 0.1.0
0.1.0 (2020-04-29)
Language Features:
- Solidity:
- Support abi.encode and abi.encodePacked. (including array type) [Experimental]
Compiler Features:
- Support optimization options:
--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 size
- Support EVM backend via EVM_LLVM 8
- In current stage, SOLL will generate LLVM IR for EVM backend target only.
- Developers should use generated LLVM IR files and compile them with llc from EVM_LLVM 8 to get EVM bytecodes.
- Disable integer lowering when using EVM backend. Only allow 256 bits integer type.
Bugfixes:
- Fix bad APInt trunc in parser
- Fix bad array size and index trunc in codegen
- Fix syntax error on
revert()
and array access
SOLL 0.0.6
0.0.6 (2020-03-31)
Language Features:
- Solidity:
- Support abi.encode and abi.encodePacked. (excluding array type)
- Support fallback keyword. (solidity spec >= 0.6.0)
- Support struct decleration. (with limited members’ types)
- Yul:
- Support tuple usage.
- return, declaration, assignment
- Support built-in functions.
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)
- Support leave statement. (Yul spec >= 0.6.0)
- Support generate and deploy ewasm from Yul file. (Yul file was compiled from solc)
- Support tuple usage.
Compiler Features:
- Diagnostic Tool:
- Throw error messages for unimplemented features:
- Redefine constructor or fallback function.
- Add color on/off option.
- Throw error messages for unimplemented features:
- Add command-line action options for distinguishing generate ewasm could be deployed on-chain or normal case.
-deploy=Chain
: Ewasm VM (Hera) not support keccak256 yet, so for workaround use sha256 instead. (Default)-deploy=Normal
: Normal behavior.
- Add command-line action options for generating object files.
-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.
- Add command-line action options for misc.
-action=ParseSyntaxOnly
: Parse and perform semantic analysis.
Bugfixes:
- Add ImplicitCastExpr on return statement.
- Fix mismatch EEI functions
blockhash
. - Keep full event signature as topic 0 field when emitting event.
- Fix built-in function minor issues:
iszero
,shl
,shr
,sar
- Remove unexpected message when
soll -action=EmitFuncSig
. - Remove redundant slot access when load/store storage with bytes and string.
SOLL 0.0.5 Release
0.0.5 (2020-01-18)
Language Features:
- Common:
- Support big number literal (
> uint64
)
- Support big number literal (
- Solidity:
- Support built-in units:
ether
,finney
,szabo
,wei
weeks
,days
,hours
,minutes
,seconds
- Replace
keccak256
andsha256
withsha3
for EVM backend. - Implement exponentiation operator.
- Support
this
to access member functions in the same contract.
- Support built-in units:
- Yul:
- Support
switch
statement. - Support function definition.
- Implement scoping logic and delay identifier lookup
- Support alias operators:
slt
->lts256
sgt
->gts256
sdiv
->divs256
- Handle memory relative mechanism:
- Use global variable to record memory size.
- Use
__heap_size
as memory offset. - Add helper functions to increase memory usage.
- Implement built-in functions:
calldataload
mload
,mstore
,mstore8
,msize
exp
- Support
- Diagnostic Tool:
- Throw error messages for unimplemented features:
- Constructor doesn’t support parameters. SOLL only accept constructor without any parameters.
- SOLL doesn’t support
array.push, array.pop
- Terminate codegen when error occurs
- Throw error messages for unimplemented features:
Bugfixes:
- Hex number literal:
- Support hex number literal (
0x...
)
- Support hex number literal (
<address>.balance
should return uint256 instead of uint128.- Reduce some useless endian transformation.
- Fix mismatch EEI functions:
<address>.balance
,<address>.send
,blockhash
SOLL 0.0.4 Release
0.0.4 (2019-12-25)
Language Features:
- Support limited Yul language. See details here.
- Basic arithmetical, compare, sstore and sload built-in functions.
- For loop, If, Var declare and Assignment statements.
Compiler Features:
- Add command-line version option for checking current SOLL version.
-version
- Add command-line language options for supporting Yul input file.
-lang=Sol
: Input file is written in Solidity. (Default)-lang=Yul
: Input file is written in Yul.
- Add testing framework for unittest and regrasion test.
- Integrate Solidity compilation test and libyul test from ethereum/solidity.
Regression Test:
- Solidity test suite (Total 66 tests from compilationTests):
Expected Passes : 10 # Solidity has 66 testing contract, and SOLL can pass 10.
Unsupported Tests : 56 # Unimplemented by SOLL
Pass Rate: 15%
- Yul test suite (Total 499 tests from libyul):
Expected Passes : 63 # libyul has 499 testing contracts, and SOLL can pass 63.
Unsupported Tests : 436 # Unimplemented by SOLL
Pass Rate: 13%
SOLL 0.0.3 Release
0.0.3 (2019-11-19)
Language Features:
- Support partial builtin global variable
- msg.sender, msg.value, msg.data.
- tx.gasprice, tx.origin.
- block.coinbase, block.difficulty, block.gaslimit, block.number, block.timestamp.
- Support Constructor, Fallback function.
- Support Event mechanism.
- Support Payable mechanism.
- Support dynamic type. (Bytes/String)
Compiler Features:
- Be able to generate deployable Ewasm files.
- Support diagnostic message.
- Add command-line options for generating metadata of Solidity contracts.
EmitABI
: Generate ABIEmitFuncSig
: Generate function signatures
- Support EVM1 bytecode target. (Depends on EVM_LLVM)
Bugfixes:
- Fix an endian issue that happened when someone calls the EEI function from wasm.
- Fix a parsing issue on array type.
0.0.3-pre
0.0.3-pre
This is a prerelease version of SOLL 0.0.3.
Backend
- Support EVM target via EVM_LLVM project.
- Replace EEI runtime with EVM builtin intrinsic functions.
- Provide two phases compilation to generate Ewasm runtime and deployer bytecode.
Language Feature
- Handle event declarations, emit event.
- Handle constructor declaration