Skip to content

Allow FFI signatures with more than eight arguments #1030

Closed

Description

@frostney

Summary

Remove or raise the fixed eight-argument ceiling for bound native functions, with an ABI-driven limit instead of fixed Dispatch1* through Dispatch8* coverage.

Why

Raylib 6.0's DrawBillboardPro has nine parameters and is omitted solely because GocciaScript cannot express or dispatch it. The merged skip report records it as the one more-than-8-arguments exclusion.

Current behavior

On current main (34cc32f):

const lib = FFI.open("./fixtures/ffi/libfixture" + FFI.suffix);
lib.bind("get_answer", {
  args: ["i32", "i32", "i32", "i32", "i32", "i32", "i32", "i32", "i32"],
  returns: "i32",
});

Binding throws:

FFI supports a maximum of 8 arguments

Current-source evidence:

The fresh-main FFI suite passes in interpreted and bytecode modes (92 tests, 337 assertions), including the existing test that treats nine callback arguments as invalid.

Expected behavior

A nine-argument native signature should bind and call correctly on supported ABIs. Define a defensible implementation cap if an unbounded descriptor is not practical, and keep function/callback limits consistent where they share the same call-frame machinery.

Scope notes

Activity

  1. added
    new featureNew feature or request
    runtimeTGocciaRuntime: optional host extensions (console, fetch, JSON5, FFI, test assertions, etc.)
    on Jul 24, 2026
  2. added this to the 0.11.0 milestone on Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    new featureNew feature or requestruntimeTGocciaRuntime: optional host extensions (console, fetch, JSON5, FFI, test assertions, etc.)

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions