Skip to content

Epic: Footprint & constrained targets #503

Description

@mparrett

Umbrella for shrinking what let-go ships and widening where it runs: binary size, the embedding surface, and alternate runtimes (WASI, TinyGo, small native). Distinct from lowering/codegen (#258), which makes code native and fast, and from runtime performance (#464), which keeps the running VM's hot paths fast. Here the metric is bytes on disk, resident memory, and whether let-go links and boots on a given target at all. The one real intersection is boot cost: compressing the embedded core (#502) trades startup time for size, and that tradeoff is called out where it lands.

The goal is a single roll-up so footprint and target-reach work is visible and prioritizable, rather than living inside whichever PR happened to need it.

Compiler-free / embedding surface

Running precompiled bytecode without linking the reader, compiler, and resolver: a smaller binary and a smaller, more stable embedding surface.

Bundle size

The .lgb bundle format and the embedded core are stored uncompressed; compressing them trims the shipped artifact and every binary.

Alternate runtimes & platforms

Targets beyond native and browser-js, where footprint, the host capability model, and cross-target build discipline matter most.

Merged enablers

Already-landed work this epic builds on, listed so the footprint story reads as one arc rather than scattered history:

Workflow

File footprint and target-reach issues here as sub-issues: binary/bundle size, embedding-surface reductions, and new-target enablement (with the build recipe and the measured size/RSS delta). Each child should stand on its own; this epic tracks the set and its progress. Boot-cost regressions belong to #464 when the cause is the running VM, and here when it's the size/startup tradeoff of a footprint change.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions