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
--summarywith different levels. - Reworked release distribution to use archives instead of direct executables.
- Removed commands:
- Configuration
- Renamed, removed, or changed many settings. Refer to the migration guide for details.
- Renamed
.moon/toolchain.ymlto.moon/toolchains.yml(plural).
- Projects
- Reworked how the
languageis detected. - Flattened
projectmetadata structure.
- Reworked how the
- 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
.envhandling.- Moved loading to occur before task execution, instead of creation.
- Can no longer reference task
envvars for substitution.
- Task inheritance now deep merges instead of shallow merges when dealing with extends and
- 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.
- Removed the old platform system, and replaced it with the new WASM plugin system.
- VCS
- Reworked the hooks layer for better interoperability.
- WASM API
- Removed the
/cwdvirtual path. - Renamed
ProjectFragment.aliastoProjectFragment.aliasesand changed its type from
Option<String>toVec<String>. - Removed
RegisterExtensionOutput.config_schemafield. Use the newdefine_extension_config
plugin function instead.
- Removed the
🚀 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, andmoon run:- Now uses
moon execunder the hood. - Added levels to
--summary.
- Now uses
- Updated commands that require an identifier to prompt for it if not provided.
- Stabilized the
moonxbinary (which usesmoon execunder the hood). - Added support for
.config/mooninstead 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.
- New commands:
- Configuration
- Added support for more formats: JSON, TOML, and HCL.
.moon/extensions.*- New file for configuring extensions (formerly in
workspace.extensions).
- New file for configuring extensions (formerly in
.moon/tasks.*- Added
inheritedBysetting for configuration based task inheritance.
- Added
.moon/workspace.*- Added
projects.globFormatsetting. - Added
defaultProjectsetting. - Stabilized remote caching.
- Added
moon.*- Added
mergeToolchainstask option. - Added "utility" task
preset. - Added "data"
stack.
- Added
- Docker
- Better toolchain integration.
- Added
--no-setupand--templatesupport tomoon 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.
- Added a new extension,
- 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
.envhandling:- 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
envvalues to supportnull, 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
- Added new tokens:
- 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_idhost function. - Added
define_extension_config,initialize_extension, andextend_commandplugin functions. - Added
load_extension_config,parse_extension_configandparse_extension_config_schema
utility functions. - Added
DefineExtensionConfigOutput,InitializeExtensionInput,InitializeExtensionOutput,
ExtendCommandInput, andExtendCommandOutputtypes. - Added
ExtendProjectGraphInput.extension_config,ExtendTaskCommandInput.extension_config,
ExtendTaskScriptInput.extension_config,SyncProjectInput.extension_config, and
SyncWorkspaceInput.extension_configfields. - Added
RegisterToolchainOutput.languagefield.
- Added a
🧩 Extensions
- Migrate Nx
- Added support for the following
project.jsonfields:targets.*.continuous
- Added support for the following
- Migrate Turborepo
- Added support for the following
turbo.jsonfields:tags,tasks.*.env(wildcards and
negation)
- Added support for the following
- Unpack
- Updated to use
unzipandtarcommands.
- Updated to use
🧰 Toolchains
- JavaScript
- Added support for Yarn v4.10 catalogs.
- Fixed an issue where implicit dependencies would sometimes not resolve.
🐞 Fixes
- Fixed local executables in
@moonrepopackages 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
projectbased 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 | shInstall 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 |