aeso_compiler: The Sophia Compiler
This is the sophia compiler for the æternity system which compiles contracts written in sophia to FATE instructions.
The compiler is currently being used three places
In æternity node tests
Module
aeso_compiler
The Sophia compiler
Description
This module provides the interface to the standard Sophia compiler. It returns the compiled module in a map which can then be loaded.
Types
Exports
file(File)
file(File, Options) -> CompRet
from_string(ContractString, Options) -> CompRet
Types
Compile a contract defined in a file or in a string.
The pp_ options all print to standard output the following:
pp_sophia_code
- print the input Sophia code.
pp_ast
- print the AST of the code
pp_types
- print information about the types
pp_typed_ast
- print the AST with type information at each node
pp_assembler
- print the generated assembler code
The option include_child_contract_symbols
includes the symbols of child contracts functions in the generated fate code. It is turned off by default to avoid making contracts bigger on chain.
Options to control which compiler optimizations should run:
By default all optimizations are turned on, to disable an optimization, it should be explicitly set to false and passed as a compiler option.
List of optimizations:
optimize_inliner
optimize_inline_local_functions
optimize_bind_subexpressions
optimize_let_floating
optimize_simplifier
optimize_drop_unused_lets
optimize_push_consume
optimize_one_shot_var
optimize_write_to_dead_var
optimize_inline_switch_target
optimize_swap_push
optimize_swap_pop
optimize_swap_write
optimize_constant_propagation
optimize_prune_impossible_branches
optimize_single_successful_branch
optimize_inline_store
optimize_float_switch_bod
check_call(ContractString, Options) -> CheckRet
Types
Check a call in contract through the __call
function.
version() -> {ok, Version} | {error, term()}
Types
Get the current version of the Sophia compiler.
Last updated