Skip to content

Burrito packaging: track upstream fixes for the known issues in the packaging guide #12

Description

@ryanwinchester

As of Burrito 1.6.0, Tuix apps do not work in Burrito binaries out of the box. The packaging guide and the examples/burrito project document the current state and workarounds. This issue tracks the upstream fixes so the docs can be updated (and the caveats removed) as they land.

Upstream issues

  • burrito#234blocker. The launcher pipes the BEAM's stdout through the wrapper, so the VM never sees a TTY: ANSI detection fails, raw mode returns {:error, :enotsup}, and keyboard input is never delivered. No workaround short of patching Burrito's Zig wrapper.
  • burrito#215 — Burrito's precompiled ERTS builds lack tty support, so raw mode fails even with correct stdio. Workaround: custom_erts pointing at a local OTP install root (wired up via BURRITO_CUSTOM_ERTS in the example).
  • burrito#229 — the VM is halted by Elixir's CLI right after boot (no --no-halt). Worked around by running Tuix.run/2 synchronously inside Application.start/2; that pattern stays correct even after the upstream fix, so this only affects how strongly the guide has to insist on it.
  • burrito#233-mode embedded is passed as a single argv string, so Burrito VMs boot in interactive mode. Non-fatal for Tuix: Tuix.Runtime.call_mount/2 now calls Code.ensure_loaded?/1 before function_exported?/3 (previously mount/2 was silently skipped in interactive-mode VMs — this bug was found while debugging the Burrito binary).

When fixes land

  • #234 fixed: remove the "does not work out of the box" warnings from the guide's Known upstream issues section and the example README; bump the example's Burrito requirement to the fixed version.
  • #215 fixed: drop the custom_erts / BURRITO_CUSTOM_ERTS workaround from the example mix.exs, guide, and example README.
  • #229 fixed: soften the entry-point explanation (synchronous start/2 remains the recommended pattern).
  • #233 fixed: no doc changes needed; the Code.ensure_loaded?/1 fix in Tuix stays regardless (it is correct for any lazy-loading VM).

Full write-up of the debugging that led to these reports lives in the linked upstream issues (probe tables, minimal repros, and suggested fixes).

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions