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,revertlog0,log1,log2,log3,log4blockcoinbase,blockdifficulty,blockgaslimitblocknumber,blocktimestamp,txorigin,txgasprice,gasleftcaller,callvalue,calldatasizecodecopy,datacopydatasize,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,weiweeks,days,hours,minutes,seconds
- Replace
keccak256andsha256withsha3for EVM backend. - Implement exponentiation operator.
- Support
thisto access member functions in the same contract.
- Support built-in units:
- Yul:
- Support
switchstatement. - Support function definition.
- Implement scoping logic and delay identifier lookup
- Support alias operators:
slt->lts256sgt->gts256sdiv->divs256
- Handle memory relative mechanism:
- Use global variable to record memory size.
- Use
__heap_sizeas memory offset. - Add helper functions to increase memory usage.
- Implement built-in functions:
calldataloadmload,mstore,mstore8,msizeexp
- 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>.balanceshould 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