website/blog/2023-09-05_moon-v1.13.mdx
This is a light release that focused primarily on upgrading to the WASM based proto implementation.
<!--truncate-->Over the last few months, we've made immense strides on proto, our multi-language toolchain. For those of you unaware, moon's toolchain is built on top of proto, and we accomplish this by utilizing the same Rust code between both tools.
However, moon has been locked to proto v0.12, which was a purely Rust based implementation. With the release of proto v0.13 and onward, proto has moved to a WASM based plugin architecture (with the core still in Rust), which allows us to support more languages, and enables developers to write plugins in non-Rust languages.
And since our WASM plugins have stabilized by proto v0.16, we felt it was time to finally upgrade moon's implementation to the latest and greatest. So what does this mean exactly? A few things:
node), we will now download the
Node.js WASM plugins in the background (to
~/.proto/plugins).:::info
This entire process should be transparent to all users, and you should not notice any changes. However, in case this upgrade causes issues, we wanted to isolate it from other changes, hence the light release!
:::
"Allow tasks to fail?" You ask yourself. "Doesn't that defeat the point of a task runner?" You question further. "You're not wrong!" We reply. These questions assume a perfect repository state, where all tasks either pass or fail, and there's no middle ground. In reality, very rarely is that true, and we want to support those stuck in the middle, such as:
For situations where a task consistently or sometimes fails, but you don't want it to fail the
entire pipeline (especially in CI), you can enable the new
allowFailure task option.
tasks:
typecheck:
command: 'tsc --build'
options:
allowFailure: true
When enabled, failing tasks will no longer bail moon run early, nor will it
exit moon ci with a non-zero exit code. However, we still built guard rails
around this feature, as we don't want to encourage bad practices, and one of these guard rails is
that tasks that enable allowFailure cannot be depended on by other tasks, as we cannot guarantee
that it's side-effect free.
View the official release for a full list of changes.
--help menus.runner.archivableTargets to support tag scoped targets.moon query tasks --affected to filter based on affected task, instead of affected
project.