Skip to content

Make standard-library updates version-aware and transactional #379

Description

@LunaStev

Problem

A compiler that rejects retired syntax can still load an older installed standard library containing that syntax. The resulting parse failure may look like a user-source error. The current update flow also removes the installed std before the replacement has been fetched and validated.

Scope

  • Add language or compiler compatibility metadata to std/manifest.json.
  • Validate compatibility before compiling an imported std module.
  • Stage std updates in a temporary directory.
  • Validate the manifest and Wave source corpus before replacing the installed copy.
  • Atomically replace the installed std only after validation succeeds.
  • Preserve the previous installation when download or validation fails.
  • Produce a direct diagnostic with the installed and required compatibility revisions.
  • Record enough install metadata to identify the source revision.

Completion criteria

  • An incompatible installed std fails with an explicit update instruction.
  • A failed update leaves the previous std usable.
  • Successful updates never expose a partially copied tree.
  • Tests use isolated temporary home directories.
  • Diagnostics identify the imported std file rather than blaming the entry source.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backward compatibilityIssues related to backward compatibility with older versions.bugA problem that causes incorrect behavior or crashes.buildIssues related to building the project or compiling errors.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions