Xo is experimental. The source code is not public yet; it will be soon. Read the release notes
Menu · XO1403

Docs

XO1403: call of a function not known to be real-time

error · reported by the checker

A real-time function (core 6.5) may call only other real-time functions (declared uses realtime), the bounded prelude methods (scalar arithmetic, len, get, contains, List.set, Atomic operations), and C functions of a use c module. A call of a function value or of an interface method (a capability, or a method of a type parameter’s constraint) is rejected: its callee is not known, so neither its allocation nor its recursion can be checked. Mark the helper uses realtime when it follows the rules, or move the call out of the real-time function.

Example

fn scale(x: Float) -> Float { x * 0.5 }

fn tick(x: Float) -> Float uses realtime {
  scale(x)
}

Fix

fn scale(x: Float) -> Float uses realtime { x * 0.5 }

fn tick(x: Float) -> Float uses realtime {
  scale(x)
}

Run xo explain XO1403 for this text in a terminal, or see section 10.6 of the specification.