Avoid solc-js with optimization enabled. Past versions of solc-js had non-deterministic output, as a result, we recommend to favor the binary version if the optimization are enabled.
Do not use YUL optimizer. The YUL optimizer is too risky for deployement.
Avoid ABIEncoderV2. ABIEncoderV2 enables the YUL optimizer and is not as robust as the standard ABI.
Use a stable compiler’s version to compile, use the latest to check for warnings. You should check that your code leads to no warning with the latest compiler version. Solidity compiler has a fast release cycle, and has a history of compiler bugs, as a result, we recommend to not use the latest version for deployment. 0.5.12 is considered to be stable.
ABIEncoderV2
enables the YUL optimizer and is not as robust as the standard ABI.0.5.12
is considered to be stable.