Skip to content

codegen(core-WASM): float_to_string raises UnboundVariable at compile (works in resolve/typecheck/interp/Deno) #643

Description

@hyperpolymath

Summary

A program that applies float_to_string type-checks but fails to compile on the core-WASM backend:

Code generation error: (Codegen.UnboundVariable "Function or variable not found: float_to_string")

It is wired on the resolve/typecheck, interpreter, and Deno-ESM paths, but the core-WASM lib/codegen.ml has no lowering for it — codegen.ml only names float_to_string in its string-returning-builtins list (~line 475); it does not emit code for it.

Repro

module m;
pub fn f(x: Float) -> String { return float_to_string(x); }
  • affinescript checkType checking passed
  • affinescript compileUnboundVariable "float_to_string"

Scope to audit

The other entries co-listed at codegen.ml:~475 (to_lowercase, to_uppercase, trim, string_sub, string_from_char_code, show) may share the same "recognised-but-not-lowered" shape on core-WASM and are worth checking in the same pass (int_to_string appears to be lowered). Note real float→string formatting in raw WASM (no libc dtoa) is non-trivial — may warrant a WASI/runtime helper rather than inline codegen.

Context

Surfaced characterising svalinn-gateway gaps after the constructor-link fix (#138 / #602, ac98c81); distinct from it (a missing builtin lowering, not type registration). Confirmed at main b8ba479.

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureStructural/system-level shape and runtime behaviourbindingsABI, FFI, WASM, and cross-language interop surfacesenhancementNew capability or improvement to existing behaviourmigrationPorting between languages or toolchains (e.g. -> AffineScript)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions