8000 Release Version 5.1.0-alpha.1 · kobaltcore/renkit · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Version 5.1.0-alpha.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 17 Mar 21:53

Release Notes

This release adds support for task parallelization, automatically executing tasks in parallel where possible. It additionally enables optional task multi-instancing, enabling duplicate invocations of tasks with different parameters.

Task Parallelization

By default, nothing about the execution order of tasks will change. They will execute sequentially exactly as they did before. However, tasks can now be marked as sandboxed to enable parallel execution:

[tasks.example]
type = "custom"
sandboxed = true

sandboxed in the context of renconstruct is a promise from the user that the task will not modify any global state or have any side effects outside of the task's own scope. For example, a task that creates a file will do so in a way that does not affect itself if it were run with different parameters.

Under this guarantee, reconstruct will execute tasks in parallel if they are marked as sandboxed, occur in the same build stage and have the same priority level. Thus, if task A runs pre-build and task B runs post-build, they can not be executed in parallel.
However, if task A and task B are both marked as sandboxed and occur in the same stage with the same priority level, they can be executed in parallel. renconstruct will automatically detect parallelism opportunities and inform you of this in the logs.

Task Multi-Instancing

The ability to run tasks in parallel also made it more sensible for tasks to be able to run multiple instances of themselves. This is useful for tasks that themselves don't have any internal parallelism opportunities, but can be run multiple times in parallel, for example image processing tasks like resizing to various scales for different directories.
As such, tasks now take a new, optional parameter name which is used to identify the task instance and takes over the duty of the section title in the configuration file.

[tasks.example]  # <== This previously determined the task that would run
type = "custom"

[tasks.my_random_identifier]  # <== Tasks can now have arbitrary names, allowing multi-instancing
type = "custom"
name = "example"  # <== This is now a task parameter

Before this change, the names of task sections in the config file were a limiting factor as only one section could be named tasks.example and could thus refer to that specific custom task. Now tasks can be named arbitrarily, allowing for multiple instances of the same task to be run in parallel. The following invokes the task ExamleTask twice, with different names:

[tasks.random_task_id_1]
type = "custom"
name = "example"

[tasks.random_task_id_2]
type = "custom"
name = "example"

To remain backwards-compatible with existing configuration files, the task section names will be used as a fallback when the name parameter is not specified, but a warning will be printed to the console to update to the new format.

Install renkit 5.1.0-alpha.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/kobaltcore/renkit/releases/download/v5.1.0-alpha.1/renkit-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/kobaltcore/renkit/releases/download/v5.1.0-alpha.1/renkit-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install kobaltcore/renkit/renkit

Download renkit 5.1.0-alpha.1

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