gleam-lang/gleam

echo shows dicts using JS syntax in wasm compiler (tour, playground)

Open

#5.592 aberto em 8 de abr. de 2026

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)Rust (960 forks)batch import
discussionhelp wanted

Métricas do repositório

Stars
 (21.417 stars)
Métricas de merge de PR
 (Mesclagem média 8d 6h) (59 fundiu PRs em 30d)

Description

import gleam/dict

pub fn main() {
  echo dict.from_list([])
}

Expected output

src/main.gleam:4
dict.from_list([])

Actual output

src/main.gleam:4
//js(Dict { "size": 0, "root": //js({ "datamap": 0, "nodemap": 0, "data": #() }) })

For echo the compiler checks if the stdlib is present and adds an import for the echo code to use if it is. In the wasm compiler the package config does not have any dependencies specified, so no import is added, and the echo code falls back to the JS syntax at runtime.

Users of the wasm compiler may not provide the stdlib, so we cannot add register the dependency as present without generating invalid code importing a module that doesn't exist. Even if the gleam/dict module is present for that user they may have it at a different location, as they're not using the Gleam build tool.

It's unclear to me what the right thing to do is here. We could possibly have users of the wasm compile configure the location of the module, but that seems like a very ugly solution to me.

Playground reproduction: https://playground.gleam.run/#N4IgbgpgTgzglgewHYgFwEYA0IDGyAuES+aIcAtgA4JT4AEA5gDYQCG5A9ACZw74A6SQZQCuAIzoAzJHXKs4SABQBKOsEF06EHAAsEdHnwB0kqAnIB9JnBj5FAbQC6ywQF9BIV0A

Guia do colaborador