interface runtime {
    use host.{value};
    enum error-code {
        unknown,
        internal,
        aborted,
    }
    record error {
        code: error-code,
        message: string,
    }
    record argument {
        name: option<string>,
        value: value,
    }

    initialize: func(%preinit: bool, %prelude: option<string>);
    eval-script: func(%script: string) -> result<_, error>;
    eval-file: func(%path: string) -> result<_, error>;
    call-func: func(%func: string, %args: list<argument>) -> result<_, error>;
}
