View Source Orb.DSL (Orb v0.0.10)

The main DSL which is imported automatically when you call Orb.wasm/2.

Summary

Functions

Asserts a condition that must be true, otherwise traps.

Break from a block.

Break from a block if a condition is true.

Call local function f.

Call local function f, passing arguments args when list, or single argument otherwise.

Call local function f, passing arguments a & b.

Call local function f, passing argument a, b, c.

Call local function f, passing argument a, b, c, d.

Call local function f, passing argument a, b, c, d, e.

Call local function f, passing argument a, b, c, d, e, f.

Declare a constant string, which will be extracted to the top of the module, and its address substituted in place.

Declare a block, useful for structured control flow.

Drop the last pushed value from the stack.

Execute the passed expression, but ignore its result by immediately dropping its value.

Run code at compile-time.

Run Elixir for-comprehension at compile-time.

Declare a loop that iterates through a source.

A no-op instruction.

Pushes a value onto the current stack.

Push value then run the block. Useful for when you mutate a variable but want its previous value.

For when there’s a language feature of WebAssembly that Orb doesn’t provide. Please file an issue if there’s something you wish existed. https://github.com/RoyalIcing/Orb/issues

Return from a function. You may wish to push/1 values before returning.

Return from a function if a condition is true.

Return from a function with the provided value only if a condition is true.

Denote a point in code that should not be reachable. Traps.

Functions

Asserts a condition that must be true, otherwise traps.

Break from a block.

Break from a block if a condition is true.

Call local function f.

Call local function f, passing arguments args when list, or single argument otherwise.

Call local function f, passing arguments a & b.

Call local function f, passing argument a, b, c.

Call local function f, passing argument a, b, c, d.

Call local function f, passing argument a, b, c, d, e.

Link to this function

call(f, a, b, c, d, e, f)

View Source

Call local function f, passing argument a, b, c, d, e, f.

Declare a constant string, which will be extracted to the top of the module, and its address substituted in place.

Link to this macro

defblock(identifier, options \\ [], list)

View Source (macro)

Declare a block, useful for structured control flow.

Link to this function

do_snippet(locals, block_items)

View Source

Drop the last pushed value from the stack.

Execute the passed expression, but ignore its result by immediately dropping its value.

Link to this function

expand_type(type, env \\ __ENV__)

View Source
Link to this macro

func(call, list)

View Source (macro)
Link to this macro

func(call, locals, list)

View Source (macro)
Link to this macro

func(call, result_type, locals, list)

View Source (macro)
Link to this macro

funcp(call, list)

View Source (macro)
Link to this macro

funcp(call, locals, list)

View Source (macro)
Link to this macro

funcp(call, result_type, locals, list)

View Source (macro)

Run code at compile-time.

Link to this macro

inline(arg, list)

View Source (macro)

Run Elixir for-comprehension at compile-time.

Link to this function

local_tee(identifier, value)

View Source
Link to this macro

loop(arg, list)

View Source (macro)

Declare a loop that iterates through a source.

Link to this macro

loop(identifier, options \\ [], list)

View Source (macro)

Declare a loop.

A no-op instruction.

See https://en.wikipedia.org/wiki/NOP_(code)

Pushes a value onto the current stack.

Push value then run the block. Useful for when you mutate a variable but want its previous value.

For when there’s a language feature of WebAssembly that Orb doesn’t provide. Please file an issue if there’s something you wish existed. https://github.com/RoyalIcing/Orb/issues

Return from a function. You may wish to push/1 values before returning.

Link to this function

return(value_or_condition)

View Source

Return from a function if a condition is true.

Return from a function with the provided value only if a condition is true.

Denote a point in code that should not be reachable. Traps.

Useful for exhaustive conditionals or code you know will not execute.