Engine Configuration Options

A number of other configuration options are available from the Engine to fine-tune behavior and safeguards.

Compile-Time Language Features

MethodDescriptionDefault
set_optimization_level
(not available under no_optimize)
sets the amount of script optimizations performed (see script optimization)Simple
set_allow_if_expressionallows/disallows if-expressionsallow
set_allow_switch_expressionallows/disallows switch expressionsallow
set_allow_loop_expressionsallows/disallows loop expressionsallow
set_allow_statement_expressionallows/disallows statement expressionsallow
set_allow_anonymous_fn
(not available under no_function)
allows/disallows anonymous functionsallow
set_allow_loopingallows/disallows looping (i.e. while, loop, do and for statements)allow
set_allow_shadowingallows/disallows shadowing of variablesallow
set_strict_variablesenables/disables Strict Variables modedisabled
set_fast_operatorsenables/disables Fast Operators modeenabled
disable_symboldisables a certain keyword or operator (see disable keywords and operators)

Beware that these options activate during compile-time only. If an AST is compiled on an Engine but then evaluated on a different Engine with different configuration, disallowed features contained inside the AST will still run as normal.

Runtime Behavior

MethodDescription
set_fail_on_invalid_map_property
(not available under no_object)
sets whether to raise errors (instead of returning ()) when invalid properties are accessed on object maps
set_default_tagsets the default value of the custom state (which can be obtained via NativeCallContext::tag) for each evaluation run

Safety Limits

MethodNot available underDescription
set_max_expr_depthsuncheckedsets the maximum nesting levels of an expression/statement (see maximum statement depth)
set_max_call_levelsunchecked, no_functionsets the maximum number of function call levels (default 50) to avoid infinite recursion (see maximum call stack depth)
set_max_operationsuncheckedsets the maximum number of operations that a script is allowed to consume (see maximum number of operations)
set_max_variablesuncheckedsets the maximum number of variables that a script is allowed to define within a single Scope (see maximum number of variables)
set_max_functionsunchecked, no_functionsets the maximum number of functions that a script is allowed to define (see maximum number of functions)
set_max_modulesunchecked, [no_modules]sets the maximum number of modules that a script is allowed to load (see maximum number of modules)
set_max_string_sizeuncheckedsets the maximum length (in UTF-8 bytes) for strings (see maximum length of strings)
set_max_array_sizeunchecked, no_indexsets the maximum size for arrays (see maximum size of arrays)
set_max_map_sizeunchecked, no_objectsets the maximum number of properties for object maps (see maximum size of object maps)
set_max_strings_internedsets the maximum number of strings to be interned (if zero, the strings interner is disabled)