Experimental implementation of the oci-runtime in Rust

Overview

youki

Experimental implementation of the oci-runtime in Rust

License: MIT

Overview

youki is an implementation of runtime-spec in Rust, referring to runc. This project is in the experimental stage at this point. I think Rust is one of the best languages to implement oci-runtime, so I'm having fun experimenting with it.

Building

Two types of building are available: devcontainer or local. You can choose whichever you like, but the local one will only work on Linux.

Local

Requires

  • Rust(See here)
  • Docker

Building

$ git clone [email protected]:utam0k/youki.git
$ cargo build
$ RUST_BACKTRACE=full YOUKI_LOG_LEVEL=debug YOUKI_MODE=/var/lib/docker/containers/ dockerd --experimental --add-runtime="youki=$(pwd)/target/x86_64-unknown-linux-gnu/debug/youki"

Devcontainer

We prepared devcontainer as a development environment. If you use devcontainer for the first time, please refer to this page.

The following explanation assumes that devcontainer is used. The first time it starts up will take a while, so have a cup of coffee and wait ;)

Requires

  • VSCode
  • Docker

Bulding

This commands should be run runs in your local terminal.

$ git clone [email protected]:utam0k/youki.git
$ code youki

And use devcontainer in your vscode.

dockerd is already running when you start devcontainer. You can get more information about the startup process by referring to .devcontainer/scripts/init.sh.

Usage

youki with Docker

$ docker run -it --rm --runtime youki hello-world
$ docker run -it --rm --runtime youki busybox

Integration test

$ /workspaces/youki/.devcontainer/scripts/setup_test.sh # only the first time
$ /workspaces/youki/.devcontainer/scripts/test.sh

HelloWorld with youki

Do Hello, World using the log function of Youki. If you want to explore youki, please use it.

Try adding the following code to the line in src/main.rs after initializing the logger of the main function and try to cargo build in your terminal.

log::debug!("Hello, World");

When you run busybox, sh will start and stop.

$ docker run -it --rm --runtime youki --name youki busybox

If you run the following command in a different terminal, you will see the Hello, World that you added above.

$ docker logs youki

Features

  • somehow works
  • run with docker
  • namespace
  • rlimits
  • cgroup
  • hooks

Contribution

This project welcomes your PR and issues. For example, refactoring, adding features, correcting English, etc. If you need any help, you can contact me on Twitter.

Comments
  • Alternative approach to solving the exec issue

    Alternative approach to solving the exec issue

    This attempts to solve the problem by bubbling up the exit status form init process to intermediate and from intermediate to the main/ exec calling process. The init process's image will be replaced after exec call, and the intermediate process will wait for this process to exit. Once exited, the intemediate process itself will exit with the same exit status as the init process. The exec calling process (the main process) will wait for this intermediate process, and will exit with the its status.

    This also allows calling multiple execs for the same container, without us needing to generate random hash For each pipe, which will potentially return the exit status.

    I haven't tested this using integration tests, so there might be side issues which break existing stuff : particularly, I'm worried that as the intermediate process (in this) always waits for the init process to exit, there might be some issues with normal start/run calls (?). This will need to be tested through integration tests and manually.

    That said, this is much more reliable than https://github.com/utam0k/youki/pull/110 , and more logical than just waiting for events on the processfd. One of the issues in waiting for events to occur at processfd, is that there are events apart from process exit which would also be registered at processfd, such as kernel async events etc. This PR's way reliably returns the exit status of the exec-replaced-init-process

    @utam0k Please take a look when possible, and let me know your thoughts.

    Thanks! :)

    EDIT : One way to tackle issues (if any) due to intermediate always waiting for init, is to pass a conditional variable to the fn call, so that the intermediate will wait only if that is true, and set it true only for exec calls.

    opened by YJDoc2 8
  • Possible fix for getting exit code from exec command

    Possible fix for getting exit code from exec command

    Hey, I took a look at the PR https://github.com/containers/youki/pull/1018 , and making this PR here to suggest possible changes. This is by no means a complete solution, but should hopefully provide some way to go forward.

    Originally I had also though of using the pipe based way as this, but I have changed it. The reason behind this is - to make the pipe way work, some process has to wait for the init process (which runs the exec command) to exit, catch its code and write it to the pipe. The init cannot do it itself, as after exec-ing, the process image is replaced. One way to get the exit status is to do a wait or waitpid , but both only work on child processes or spanwed thread, and as the original youki process which spawned the init process has exited, the process sending exec message cannot use these to wait on the init process.

    After seeing the poll on process fd, and reading https://stackoverflow.com/questions/18441760/linux-where-are-the-return-codes-stored-of-system-daemons-and-other-processes , I thought as we are waiting for the process to exit, we can read the exit code in the waiting process itself, thus not needing an intermediate pipe at all. Although this has issues, notably once in my several test runs, it gave IO error, directory in /proc does not exists ; indicating this is susceptible to race-conditions.

    Hope this helps a bit :)

    opened by YJDoc2 7
  • chore(deps): bump wasmer-types from 2.1.1 to 2.2.1

    chore(deps): bump wasmer-types from 2.1.1 to 2.2.1

    Bumps wasmer-types from 2.1.1 to 2.2.1.

    Release notes

    Sourced from wasmer-types's releases.

    v2.2.0

    The upcoming Wasmer 2.2 release features significant advancements. Wasmer is reintroducing Aarch64 compatibility for our Singlepass compiler. The new release also fully supports the much anticipated Apple M1 processor.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc2

    Wasmer 2.2.0-rc2 releases with some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc1

    Wasmer 2.2.0-rc1 releases with AArch64 support for the Singlepass compiler as well as some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Changelog

    Sourced from wasmer-types's changelog.

    2.2.1 - 2022/03/15

    Fixed

    • #2812 Fixed another panic due to incorrect drop ordering.

    2.2.0 - 2022/02/28

    Added

    • #2775 Added support for SSE 4.2 in the Singlepass compiler as an alternative to AVX.
    • #2805 Enabled WASI experimental I/O devices by default in releases.

    Fixed

    • #2795 Fixed a bug in the Singlepass compiler introduced in #2775.
    • #2806 Fixed a panic due to incorrect drop ordering of Module fields.

    2.2.0-rc2 - 2022/02/15

    Fixed

    • #2778 Fixed f32_load/f64_load in Singlepass. Also fixed issues with out-of-range conditional branches.
    • #2786 Fixed a potential integer overflow in WasmPtr memory access methods.
    • #2787 Fixed a codegen regression in the Singlepass compiler due to non-determinism of HashSet iteration.

    2.2.0-rc1 - 2022/01/28

    Added

    • #2750 Added Aarch64 support to Singlepass (both Linux and macOS).
    • #2753 Re-add "dylib" to the list of default features.

    Changed

    • #2747 Use a standard header for metadata in all serialized modules.
    • #2759 Use exact version for Wasmer crate dependencies.

    Fixed

    • #2769 Fixed deadlock in emscripten dynamic calls.
    • #2742 Fixed WASMER_METADATA alignment in the dylib engine.
    • #2746 Fixed invoking wasmer binfmt register from $PATH.
    • #2748 Use trampolines for all libcalls in engine-universal and engine-dylib.
    • #2766 Remove an attempt to reserve a GPR when no GPR clobbering is occurring.
    • #2768 Fixed serialization of FrameInfo on Dylib engine.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • chore(deps): bump wasmer-derive from 2.1.1 to 2.2.1

    chore(deps): bump wasmer-derive from 2.1.1 to 2.2.1

    Bumps wasmer-derive from 2.1.1 to 2.2.1.

    Release notes

    Sourced from wasmer-derive's releases.

    v2.2.0

    The upcoming Wasmer 2.2 release features significant advancements. Wasmer is reintroducing Aarch64 compatibility for our Singlepass compiler. The new release also fully supports the much anticipated Apple M1 processor.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc2

    Wasmer 2.2.0-rc2 releases with some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc1

    Wasmer 2.2.0-rc1 releases with AArch64 support for the Singlepass compiler as well as some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Changelog

    Sourced from wasmer-derive's changelog.

    2.2.1 - 2022/03/15

    Fixed

    • #2812 Fixed another panic due to incorrect drop ordering.

    2.2.0 - 2022/02/28

    Added

    • #2775 Added support for SSE 4.2 in the Singlepass compiler as an alternative to AVX.
    • #2805 Enabled WASI experimental I/O devices by default in releases.

    Fixed

    • #2795 Fixed a bug in the Singlepass compiler introduced in #2775.
    • #2806 Fixed a panic due to incorrect drop ordering of Module fields.

    2.2.0-rc2 - 2022/02/15

    Fixed

    • #2778 Fixed f32_load/f64_load in Singlepass. Also fixed issues with out-of-range conditional branches.
    • #2786 Fixed a potential integer overflow in WasmPtr memory access methods.
    • #2787 Fixed a codegen regression in the Singlepass compiler due to non-determinism of HashSet iteration.

    2.2.0-rc1 - 2022/01/28

    Added

    • #2750 Added Aarch64 support to Singlepass (both Linux and macOS).
    • #2753 Re-add "dylib" to the list of default features.

    Changed

    • #2747 Use a standard header for metadata in all serialized modules.
    • #2759 Use exact version for Wasmer crate dependencies.

    Fixed

    • #2769 Fixed deadlock in emscripten dynamic calls.
    • #2742 Fixed WASMER_METADATA alignment in the dylib engine.
    • #2746 Fixed invoking wasmer binfmt register from $PATH.
    • #2748 Use trampolines for all libcalls in engine-universal and engine-dylib.
    • #2766 Remove an attempt to reserve a GPR when no GPR clobbering is occurring.
    • #2768 Fixed serialization of FrameInfo on Dylib engine.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • chore(deps): bump wasmer-compiler from 2.1.1 to 2.2.1

    chore(deps): bump wasmer-compiler from 2.1.1 to 2.2.1

    Bumps wasmer-compiler from 2.1.1 to 2.2.1.

    Release notes

    Sourced from wasmer-compiler's releases.

    v2.2.0

    The upcoming Wasmer 2.2 release features significant advancements. Wasmer is reintroducing Aarch64 compatibility for our Singlepass compiler. The new release also fully supports the much anticipated Apple M1 processor.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc2

    Wasmer 2.2.0-rc2 releases with some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc1

    Wasmer 2.2.0-rc1 releases with AArch64 support for the Singlepass compiler as well as some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Changelog

    Sourced from wasmer-compiler's changelog.

    2.2.1 - 2022/03/15

    Fixed

    • #2812 Fixed another panic due to incorrect drop ordering.

    2.2.0 - 2022/02/28

    Added

    • #2775 Added support for SSE 4.2 in the Singlepass compiler as an alternative to AVX.
    • #2805 Enabled WASI experimental I/O devices by default in releases.

    Fixed

    • #2795 Fixed a bug in the Singlepass compiler introduced in #2775.
    • #2806 Fixed a panic due to incorrect drop ordering of Module fields.

    2.2.0-rc2 - 2022/02/15

    Fixed

    • #2778 Fixed f32_load/f64_load in Singlepass. Also fixed issues with out-of-range conditional branches.
    • #2786 Fixed a potential integer overflow in WasmPtr memory access methods.
    • #2787 Fixed a codegen regression in the Singlepass compiler due to non-determinism of HashSet iteration.

    2.2.0-rc1 - 2022/01/28

    Added

    • #2750 Added Aarch64 support to Singlepass (both Linux and macOS).
    • #2753 Re-add "dylib" to the list of default features.

    Changed

    • #2747 Use a standard header for metadata in all serialized modules.
    • #2759 Use exact version for Wasmer crate dependencies.

    Fixed

    • #2769 Fixed deadlock in emscripten dynamic calls.
    • #2742 Fixed WASMER_METADATA alignment in the dylib engine.
    • #2746 Fixed invoking wasmer binfmt register from $PATH.
    • #2748 Use trampolines for all libcalls in engine-universal and engine-dylib.
    • #2766 Remove an attempt to reserve a GPR when no GPR clobbering is occurring.
    • #2768 Fixed serialization of FrameInfo on Dylib engine.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • chore(deps): bump wasmer-vfs from 2.1.1 to 2.2.1

    chore(deps): bump wasmer-vfs from 2.1.1 to 2.2.1

    Bumps wasmer-vfs from 2.1.1 to 2.2.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • chore(deps): bump git2 from 0.14.0 to 0.14.2

    chore(deps): bump git2 from 0.14.0 to 0.14.2

    Bumps git2 from 0.14.0 to 0.14.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • chore(deps): bump sysinfo from 0.23.4 to 0.23.5

    chore(deps): bump sysinfo from 0.23.4 to 0.23.5

    Bumps sysinfo from 0.23.4 to 0.23.5.

    Changelog

    Sourced from sysinfo's changelog.

    0.23.5

    • Windows: Fix a bug which prevent all disks to be listed.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • chore(deps): bump redox_syscall from 0.2.10 to 0.2.11

    chore(deps): bump redox_syscall from 0.2.10 to 0.2.11

    Bumps redox_syscall from 0.2.10 to 0.2.11.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • Bump hermit-abi from 0.1.19 to 0.1.20

    Bump hermit-abi from 0.1.19 to 0.1.20

    Bumps hermit-abi from 0.1.19 to 0.1.20.

    Release notes

    Sourced from hermit-abi's releases.

    Upgrade to Rust 2021

    What's Changed

    New Contributors

    Full Changelog: https://github.com/hermitcore/rusty-hermit/compare/hermit-sys-0.1.21...hermit-abi-0.1.20

    Commits
    • d607f89 increaste version number
    • d2657ee add latest version of libhermit
    • e9e01f1 add latest version of libhermit
    • ee2ae93 add hint to install cargo-binutils
    • 7e66386 define test container as latest
    • ed0a5fc Revert "pull always image before building kernel"
    • fa33836 Revert "remove typos"
    • cdfe531 remove typos
    • becde8b pull always image before building kernel
    • 8c18e84 don't update rust toolchain before building the kernels
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • chore(deps): bump wasmer from 2.1.1 to 2.2.1

    chore(deps): bump wasmer from 2.1.1 to 2.2.1

    Bumps wasmer from 2.1.1 to 2.2.1.

    Release notes

    Sourced from wasmer's releases.

    v2.2.0

    The upcoming Wasmer 2.2 release features significant advancements. Wasmer is reintroducing Aarch64 compatibility for our Singlepass compiler. The new release also fully supports the much anticipated Apple M1 processor.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc2

    Wasmer 2.2.0-rc2 releases with some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Release 2.2.0-rc1

    Wasmer 2.2.0-rc1 releases with AArch64 support for the Singlepass compiler as well as some bug fixes.

    Check out the changelog for details on all the changes and fixes.

    You can update wasmer with wasmer self-update to get the latest release.

    Changelog

    Sourced from wasmer's changelog.

    2.2.1 - 2022/03/15

    Fixed

    • #2812 Fixed another panic due to incorrect drop ordering.

    2.2.0 - 2022/02/28

    Added

    • #2775 Added support for SSE 4.2 in the Singlepass compiler as an alternative to AVX.
    • #2805 Enabled WASI experimental I/O devices by default in releases.

    Fixed

    • #2795 Fixed a bug in the Singlepass compiler introduced in #2775.
    • #2806 Fixed a panic due to incorrect drop ordering of Module fields.

    2.2.0-rc2 - 2022/02/15

    Fixed

    • #2778 Fixed f32_load/f64_load in Singlepass. Also fixed issues with out-of-range conditional branches.
    • #2786 Fixed a potential integer overflow in WasmPtr memory access methods.
    • #2787 Fixed a codegen regression in the Singlepass compiler due to non-determinism of HashSet iteration.

    2.2.0-rc1 - 2022/01/28

    Added

    • #2750 Added Aarch64 support to Singlepass (both Linux and macOS).
    • #2753 Re-add "dylib" to the list of default features.

    Changed

    • #2747 Use a standard header for metadata in all serialized modules.
    • #2759 Use exact version for Wasmer crate dependencies.

    Fixed

    • #2769 Fixed deadlock in emscripten dynamic calls.
    • #2742 Fixed WASMER_METADATA alignment in the dylib engine.
    • #2746 Fixed invoking wasmer binfmt register from $PATH.
    • #2748 Use trampolines for all libcalls in engine-universal and engine-dylib.
    • #2766 Remove an attempt to reserve a GPR when no GPR clobbering is occurring.
    • #2768 Fixed serialization of FrameInfo on Dylib engine.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • chore(deps): bump once_cell from 1.11.0 to 1.17.0

    chore(deps): bump once_cell from 1.11.0 to 1.17.0

    Bumps once_cell from 1.11.0 to 1.17.0.

    Changelog

    Sourced from once_cell's changelog.

    1.17.0

    • Add race::OnceRef for storing a &'a T.

    1.16.0

    • Add no_std implementation based on critical-section, #195.
    • Deprecate atomic-polyfill feature (use the new critical-section instead)

    1.15.0

    • Increase minimal supported Rust version to 1.56.0.
    • Implement UnwindSafe even if the std feature is disabled.

    1.14.0

    • Add extension to unsync and sync Lazy mut API:
      • force_mut
      • get_mut

    1.13.1

    • Make implementation compliant with strict provenance.
    • Upgrade atomic-polyfill to 1.0

    1.13.0

    • Add Lazy::get, similar to OnceCell::get.

    1.12.1

    • Remove incorrect debug_assert.

    1.12.0

    • Add OnceCell::wait, a blocking variant of get.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump uuid from 1.0.0 to 1.2.2

    chore(deps): bump uuid from 1.0.0 to 1.2.2

    Bumps uuid from 1.0.0 to 1.2.2.

    Release notes

    Sourced from uuid's releases.

    1.2.2

    What's Changed

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.2.1...1.2.2

    1.2.1

    What's Changed

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.2.0...1.2.1

    1.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.1.2...1.2.0

    1.1.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.1.1...1.1.2

    1.1.1

    What's Changed

    ... (truncated)

    Commits
    • 60ca9af Merge pull request #646 from uuid-rs/cargo/1.2.2
    • d413ed6 prepare for 1.2.2 release
    • ce445a2 Merge pull request #645 from uuid-rs/fix/extern-alloc
    • b7c845f remove extern crate alloc
    • f5a29cf Merge pull request #640 from uuid-rs/ci/cleanups
    • 876e466 remove missing moniker from job names
    • 6944c0d simplify CI and unpin arbitrary
    • b87760d Merge pull request #637 from KodrAus/cargo/1.2.1
    • b21f0cb prepare for 1.2.1 release
    • cac99f5 Merge pull request #636 from KodrAus/fix/v1-breakage
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump target-lexicon from 0.12.3 to 0.12.5

    chore(deps): bump target-lexicon from 0.12.3 to 0.12.5

    Bumps target-lexicon from 0.12.3 to 0.12.5.

    Commits
    • be05a2a (cargo-release) version 0.12.5
    • 609c2c8 Add several new targets. (#83)
    • cb031b2 add support for aarch64-pc-windows-gnullvm (#82)
    • dd84f65 (cargo-release) version 0.12.4
    • 4992cf0 Add support for riscv32im architecture
    • 53f83c5 (cargo-release) start next development iteration 0.12.4-alpha.0
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump regex from 1.5.5 to 1.7.0

    chore(deps): bump regex from 1.5.5 to 1.7.0

    Bumps regex from 1.5.5 to 1.7.0.

    Changelog

    Sourced from regex's changelog.

    1.7.0 (2022-11-05)

    This release principally includes an upgrade to Unicode 15.

    New features:

    1.6.0 (2022-07-05)

    This release principally includes an upgrade to Unicode 14.

    New features:

    Bug fixes:

    1.5.6 (2022-05-20)

    This release includes a few bug fixes, including a bug that produced incorrect matches when a non-greedy ? operator was used.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump regex-syntax from 0.6.25 to 0.6.28

    chore(deps): bump regex-syntax from 0.6.25 to 0.6.28

    Bumps regex-syntax from 0.6.25 to 0.6.28.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump git2 from 0.14.2 to 0.15.0

    chore(deps): bump git2 from 0.14.2 to 0.15.0

    Bumps git2 from 0.14.2 to 0.15.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

    dependencies 
    opened by dependabot[bot] 0
Releases(0.0.0)
Owner
utam0k
utam0k
youki is an implementation of the OCI runtime-spec in Rust, similar to runc.

youki is an implementation of the OCI runtime-spec in Rust, similar to runc.

Containers 4.2k Dec 29, 2022
Easy to use, extendable, OCI-compliant container runtime written in pure Rust

PURA - Lightweight & OCI-compliant container runtime Pura is an experimental Linux container runtime written in pure and dependency-minimal Rust. The

Branimir Malesevic 73 Jan 9, 2023
A secure container runtime with OCI interface

Quark Container Welcome to Quark Container. This repository is the home of Quark Containers code. What's Quark Container Quark Container is high perfo

null 175 Dec 29, 2022
Runc - CLI tool for spawning and running containers according to the OCI specification

runc Introduction runc is a CLI tool for spawning and running containers on Linux according to the OCI specification. Releases You can find official r

Open Container Initiative 9.9k Jan 5, 2023
Inspect and dump OCI images.

reinlinsen ?? rl is a tool to inspect and dump OCI images or single image layers. Installation From source If you have cargo installed you can just ru

Tobias Brumhard 5 May 11, 2023
A tiny minimal container runtime written in Rust.

vas-quod A tiny minimal container runtime written in Rust. The idea is to support a minimal isolated containers without using existing runtimes, vas-q

flouthoc 438 Dec 26, 2022
Rust Kubernetes client and controller runtime

kube-rs Rust client for Kubernetes in the style of a more generic client-go, a runtime abstraction inspired by controller-runtime, and a derive macro

kube-rs 1.8k Jan 8, 2023
dedock is a container runtime, with a particular focus on enabling embedded software development across all platforms

dedock is a container runtime, with a particular focus on enabling embedded software development across all platforms. It supports native "containers" on both Linux and macOS.

Daniel Mangum 12 May 27, 2023
Rocker is a minimal docker implementation for educational purposes.

Rocker is a minimal docker implementation for educational purposes inspired by gocker. Rocker uses linux kernel features (namespace, cgroup, chroot etc.) to isolate container processes and limit available resourses.

Daiki Miura 16 Feb 14, 2022
Automated builded images for rust-lang with rustup, "the ultimate way to install RUST"

rustup Automated builded images on store and hub for rust-lang with musl added, using rustup "the ultimate way to install RUST". tag changed: all3 ->

刘冲 83 Nov 30, 2022
docker-rust — the official Rust Docker image

About this Repo This is the Git repo of the Docker official image for rust. See the Docker Hub page for the full readme on how to use this Docker imag

The Rust Programming Language 321 Dec 11, 2022
Docker images for compiling static Rust binaries using musl-libc and musl-gcc, with static versions of useful C libraries. Supports openssl and diesel crates.

rust-musl-builder: Docker container for easily building static Rust binaries Source on GitHub Changelog UPDATED: Major updates in this release which m

Eric Kidd 1.3k Jan 1, 2023
Very small rust docker image

mini-docker-rust Very small rust docker image. This is an example project on how to build very small docker images for a rust project. The resulting i

null 155 Jan 1, 2023
Docker images for compiling static Rust binaries using musl-cross

rust-musl-cross Docker images for compiling static Rust binaries using musl-cross-make, inspired by rust-musl-builder Prebuilt images Currently we hav

messense 365 Dec 30, 2022
A wasm template for Rust to publish to gh-pages without npm-deploy

Wasm template for Rust hosting without npm-deploy on github pages using Travis script It automatically hosts you wasm projects on gh-pages using a tra

Siddharth Naithani 102 Dec 24, 2022
App Engine Rust boilerplate

Rust App Engine This projects is a minimal boilerplate ro run Rust web application inside Google App Engine. To deploy it use Google Cloud Shell: ```s

Denis Kolodin 48 Apr 26, 2022
A buildpack for Rust applications on Heroku, with full support for Rustup, cargo and build caching.

Heroku buildpack for Rust This is a Heroku buildpack for Rust with support for cargo and rustup. Features include: Caching of builds between deploymen

Eric Kidd 502 Nov 7, 2022
Krustlet: Kubernetes Kubelet in Rust for running WASM

Krustlet: Kubernetes Kubelet in Rust for running WASM ?? ?? This project is highly experimental. ?? ?? It should not be used in production workloads.

null 103 Dec 29, 2022
Shallow Container is a light-weight container tool written in Rust.

Shallow Container is a light-weight container tool written in Rust. It is totally for proof-of-concept and may not suit for production environment.

Rui Li 14 Apr 8, 2022