diff --git a/docs/yul.rst b/docs/yul.rst index d13af263f..53bbf6809 100644 --- a/docs/yul.rst +++ b/docs/yul.rst @@ -6,16 +6,14 @@ Yul .. index:: ! assembly, ! asm, ! evmasm, ! yul, julia, iulia -Yul (previously also called JULIA or IULIA) is an intermediate language that can -compile to various different backends -(EVM 1.0, EVM 1.5 and eWASM are planned). -Because of that, it is designed to be a usable common denominator of all three -platforms. -It can already be used for "inline assembly" inside Solidity and -future versions of the Solidity compiler will even use Yul as intermediate -language. It should also be easy to build high-level optimizer stages for Yul. +Yul (previously also called JULIA or IULIA) is an intermediate language that can be +compiled to bytecode for different backends. -In its flavour of inline-assembly, Yul can be used as a language setting +Support for EVM 1.0, EVM 1.5 and eWASM is planned, and it is designed to be a usable common denominator of all three +platforms. It can already be used for "inline assembly" inside Solidity and future versions of the Solidity compiler +will use Yul as an intermediate language. Yul is a good target for high-level optimisation stages that can benefit all target platforms equally. + +With the "inline assembly" flavour, Yul can be used as a language setting for the :ref:`standard-json interface `: :: @@ -29,15 +27,12 @@ for the :ref:`standard-json interface `: } } -Furthermore, the commandline interface can be switched to Yul mode -using ``solc --strict-assembly``. +And on the command line interface with the ``--strict-assembly`` parameter. -.. note:: +.. warning:: - Note that the flavour used for "inline assembly" does not have types - (everything is ``u256``) and the built-in functions are identical - to the EVM opcodes. Please resort to the inline assembly documentation - for details. + Yul is in active development and bytecode generation is fully implemented only for untyped Yul (everything is ``u256``) + and with EVM 1.0 as target, :ref:`EVM opcodes ` are used as built-in functions. The core components of Yul are functions, blocks, variables, literals, for-loops, if-statements, switch-statements, expressions and assignments to variables.