github moonrepo/moon v2.0.0-alpha.3
Version 2.0.0-alpha.3

pre-release2 days ago

Release Notes

💥 Breaking

View the migration guide for a full list of breaking changes and how to easily migrate!

  • Renamed "touched files" to "changed files".
  • CLI
    • Removed commands: moon node, moon migrate from-package-json, moon query hash,
      moon query hash-diff
    • Renamed all options and flags to kebab-case instead of camelCase.
    • Reworked many commands and their arguments. Refer to the migration guide for details.
    • Reworked console output handling. Updated --summary with different levels.
    • Reworked release distribution to use archives instead of direct executables.
  • Configuration
    • Renamed, removed, or changed many settings. Refer to the migration guide for details.
    • Renamed .moon/toolchain.yml to .moon/toolchains.yml (plural).
  • Projects
    • Reworked how the language is detected.
    • Flattened project metadata structure.
  • Tasks
    • Task inheritance now deep merges instead of shallow merges when dealing with extends and
      multi-global.
    • Removed "watcher" task preset.
    • Reworked env var merge order, substitution, and more. Refer to the migration guide for details.
    • Reworked .env handling.
      • Moved loading to occur before task execution, instead of creation.
      • Can no longer reference task env vars for substitution.
  • Toolchain
    • Removed the old platform system, and replaced it with the new WASM plugin system.
      • All old "stable" toolchains have been replaced with the new "unstable" toolchains.
  • VCS
    • Reworked the hooks layer for better interoperability.
  • WASM API
    • Removed the /cwd virtual path.
    • Renamed ProjectFragment.alias to ProjectFragment.aliases and changed its type from
      Option<String> to Vec<String>.
    • Removed RegisterExtensionOutput.config_schema field. Use the new define_extension_config
      plugin function instead.

🚀 Updates

View the announcement blog post for all updates, new features, improvements, and much more!

  • Action pipeline
    • Will now always generate a hash for a task, even if caching is disabled.
    • Applies "transitive reduction" to the graph, removing unnecessary edges for better performance.
    • Improved console output, logging, and error handling.
    • Improved parallelism when running tasks.
      • Now resolves and expands targets before partitioning.
      • Now partitions after filtering based on affected state.
  • CLI
    • New commands: moon exec, moon extension, moon hash, moon projects, moon tasks,
      moon query affected, moon template
    • Updated commands moon check, moon ci, and moon run:
      • Now uses moon exec under the hood.
      • Added levels to --summary.
    • Updated commands that require an identifier to prompt for it if not provided.
    • Stabilized the moonx binary (which uses moon exec under the hood).
    • Added support for .config/moon instead of .moon.
    • Added support for ... in task targets, which is an alias for **/*. This is similar to how
      Bazel targets work.
    • Improved stack memory usage by pushing thread data to the heap. This resolves spurious stack
      overflow issues.
  • Configuration
    • Added support for more formats: JSON, TOML, and HCL.
    • .moon/extensions.*
      • New file for configuring extensions (formerly in workspace.extensions).
    • .moon/tasks.*
      • Added inheritedBy setting for configuration based task inheritance.
    • .moon/workspace.*
      • Added projects.globFormat setting.
      • Added defaultProject setting.
      • Stabilized remote caching.
    • moon.*
      • Added mergeToolchains task option.
      • Added "utility" task preset.
      • Added "data" stack.
  • Docker
    • Better toolchain integration.
    • Added --no-setup and --template support to moon docker file.
    • Updated project configs to override workspace configs.
  • Extensions
    • Added a new extension, unpack, for unpacking archive files.
    • Added .moon/extensions.* configuration file.
    • Added support for new plugin APIs: define_extension_config, extend_command,
      extend_project_graph, extend_task_command, extend_task_script, sync_project, and
      sync_workspace.
  • Projects
    • Added a default project concept.
    • Added path based IDs instead of dir name IDs.
    • Updated projects to support multiple aliases (one from each applicable toolchain).
  • Tasks
    • Added deep merging support for task inheritance.
    • Improved .env handling:
      • Updated the parser to support more syntax.
      • Updated loading to occur before task execution, instead of creation.
      • Can now reference system/moon/task env vars for substitution.
    • Updated env values to support null, which would remove an inherited system env var.
  • Toolchains
    • Stabilized the new WASM plugin system.
    • Improved how toolchains extend env vars and paths for commands and scripts.
  • Tokens
    • Added new tokens: $projectTitle, $projectAliases, $taskToolchains
  • VCS
    • Replaced the old v1 Git implementation with a new v2 implementation.
    • Improved support for worktrees, submodules, and more.
  • WASM API
    • Added a load_extension_config_by_id host function.
    • Added define_extension_config, initialize_extension, and extend_command plugin functions.
    • Added load_extension_config, parse_extension_config and parse_extension_config_schema
      utility functions.
    • Added DefineExtensionConfigOutput, InitializeExtensionInput, InitializeExtensionOutput,
      ExtendCommandInput, and ExtendCommandOutput types.
    • Added ExtendProjectGraphInput.extension_config, ExtendTaskCommandInput.extension_config,
      ExtendTaskScriptInput.extension_config, SyncProjectInput.extension_config, and
      SyncWorkspaceInput.extension_config fields.
    • Added RegisterToolchainOutput.language field.

🧩 Extensions

  • Migrate Nx
    • Added support for the following project.json fields: targets.*.continuous
  • Migrate Turborepo
    • Added support for the following turbo.json fields: tags, tasks.*.env (wildcards and
      negation)
  • Unpack
    • Updated to use unzip and tar commands.

🧰 Toolchains

  • JavaScript
    • Added support for Yarn v4.10 catalogs.
    • Fixed an issue where implicit dependencies would sometimes not resolve.

🐞 Fixes

  • Fixed local executables in @moonrepo packages not being detected correctly.
  • Fixed task job parallelism to partition after tasks have been filtered based on affected state.
  • Fixed an issue where env var substitution would not process in the order they were defined.
  • Fixed an issue where ctrl+c wouldn't exit when a prompt was waiting for input.
  • Fixed an issue where project based task inputs would not be reflected internally in the input
    files/globs list.
  • Fixed an issue where running a task that triggers a system/moon error wouldn't output the error
    message. This also aborts the action pipeline correctly now.

⚙️ Internal

  • Updated proto to v0.54.1 (from 0.53.2).
  • Updated wasmtime to v37.
  • Updated Rust to v1.92.0.
  • Updated dependencies.

Install moon_cli 2.0.0-alpha.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/moonrepo/moon/releases/download/v2.0.0-alpha.3/moon_cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/moonrepo/moon/releases/download/v2.0.0-alpha.3/moon_cli-installer.ps1 | iex"

Download moon_cli 2.0.0-alpha.3

File Platform Checksum
moon_cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
moon_cli-x86_64-pc-windows-msvc.zip x64 Windows checksum
moon_cli-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
moon_cli-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
moon_cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
moon_cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Don't miss a new moon release

NewReleases is sending notifications on new releases.