Skip to content

Centralize Emscripten (and other) version configurations #611

Description

@Ryan-Millard

Caution

This issue has been claimed by @vedantp404, so it is not recommended that you work on it.

For @vedantp404:
If you would like to revoke your claim, comment /untake


Problem

The Emscripten version is currently defined in the development Docker image (after #604 merges):

ENV EMSDK_VERSION=6.0.9

However, GitHub Actions also needs to specify an Emscripten version when using setup-emsdk (see release.yml, if it shows no specific version, that means latest).

This creates two independent sources of truth for the same toolchain version. Whenever Emscripten is upgraded, multiple files must be updated, increasing the risk that local development, Docker builds, and CI use different versions.

What if development ends up with a higher version than release gets and the code compiles perfectly yet newer features not present in the release build were used?

Solution

Introduce a single source of truth for the Emscripten and other future dependency versions.

For example, a folder called .versions with a file called .emscripten.json which contains the 6.0.9 version definition. JSON is extensible, so future refactors and updates will likely be far simpler.

Then:

  • Docker reads the version from this file during build.
  • GitHub Actions reads the version from this file before invoking setup-emsdk.
  • Any scripts that require the Emscripten version also use this file.

Benefits

  • Removes duplicated configuration.
  • Keeps Docker and CI toolchains synchronized.
  • Reduces maintenance overhead when upgrading Emscripten.
  • Improves build reproducibility.

Acceptance Criteria

  • Emscripten version is defined in exactly one location.
  • Docker uses the centralized version.
  • CI uses the centralized version.
  • Documentation is updated if necessary.

Note

If scripting is necessary, please use either Python or JavaScript and place the code in the scripts folder.

Activity

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

    build-systemdev-experiencedifficulty: easySingle file, main build path, fix described in the issue. Verifiable in minutes.enhancementNew feature or requesttakenThis item has been claimed

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions