Bringing immutable infrastructure to the desktop!

Last update: Jun 19, 2022


Normal people don't reinstall their OS from scratch very often. When they do, the moment they reach that pristine desktop or terminal after a clean installation, all hell breaks loose. Settings get changed, applications are installed, bloatware is removed, files get downloaded here and there. The system is generally altered from its original state into a new "customized" state by a manual flurry of mouse clicks and key presses.

If you think about your system like a server, this approach is called mutable infrastructure, meaning you mutate the state of your system repeatedly until it eventually suits your needs. And when something goes awry, you have to make the necessary changes to get it back in line.

For normal people, mutable infrastructure works out fine until something major breaks or they have to migrate to a new computer altogether. In these cases, they probably end up starting over from scratch and have to reapply their changes again (and probably differently this time).

Slightly less normal people might have scripts or even use a configuration management tool like Ansible or Puppet to automate all of those customizations. This is great, but you can't start at a boot prompt and immediately run an Ansible playbook. Something (or someone) has to install the OS before the automation can be "kicked off". Also, configuration management tools have limited scope.

Truly sophisticated computer elites practice immutable infrastructure. Meaning that, every time they boot their system, its state begins identically to the time before. Any changes that are made during the course of runtime vanish on reboot. This approach has some real benefits, but requires quite a bit of effort from the user.

If you're looking to achieve something close to immutable infrastructure without creating a lot of extra work for yourself, you've come to the right place.

In the goldboot approach, you choose a starting template containing an absolutely minimal install of your favorite OS. Then you create provisioners which are the scripts that add all of your customizations on top of the template. From these pieces, goldboot builds a machine image ready to be deployed to real hardware.

Warning: this tool is totally unfinshed and should be used for testing only! Proceed at your own risk!

License build Discord Lines of code Stars

goldboot-cli

goldboot is a command-line utility similar in nature to Packer that builds machine images for both servers and workstations alike.

These machine images (also known as golden images) contain your operating system(s), applications, software patches, and configuration all rolled into one easily deployable package.

The CLI is designed to run locally or in the cloud from a CI pipeline.

goldboot-linux

The golden images that goldboot produces can be deployed through a bootable Linux USB stick with a graphical user interface.

The goldboot command can create a bootable USB stick and include images on it.

goldboot-registry

There's also an optional HTTP server that hosts goldboot images over the network. goldboot-linux is capable of downloading images from a registry and applying it to the local machine.

Platform Support Matrix

The following table shows planned support (nothing here is fully complete yet).

OS Name Testing Provisioners Multiboot
Alpine Alpine Linux x86_64 aarch64 Yes Yes
Arch Linux Arch Linux x86_64 aarch64 Yes Yes
Debian Debian x86_64 aarch64 Yes Yes
macOS macOS x86_64 Yes No
Pop!_OS Pop!_OS x86_64 Yes Yes
Steam Deck Steam Deck x86_64 No Yes
Steam OS Steam OS x86_64 Yes Yes
Windows 10 Windows 10 x86_64 Yes No

Getting Started

Let's build a basic Arch Linux image for simplicity.

First, create a directory which can later be added to version control:

mkdir Test
cd Test

Initialize the directory and choose the ArchLinux base template to start with:

goldboot init --name Test --template ArchLinux

This will create goldboot.json which contains configuration options that can be tweaked to suit your needs.

For example, we can create scripts to customize the image:

# Example provisioner script
echo 'pacman -Syu firefox' >configure.sh

And add it to the goldboot config:

"provisioners": [
	{
		"type": "shell",
		"script": "configure.sh"
	}
]

Now, build the image:

goldboot build

Once the build succeeds, the image will be saved to the system's library directory. To deploy it to a physical disk, you can use a bootable USB drive:

# THIS WILL OVERWRITE /dev/sdX!
goldboot make_usb --output /dev/sdX --include Test

Once the USB is created, you can use it to boot into the goldboot live environment and select an image to write:

Once the image has been applied, remove the bootable USB drive and reboot the machine.

GitHub

https://github.com/goldboot/goldboot
Comments
  • 1. Bump rust-embed from 6.3.0 to 6.4.0

    Bumps rust-embed from 6.3.0 to 6.4.0.

    Changelog

    Sourced from rust-embed's changelog.

    [6.4.0] - 2022-04-15

    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)
    Reviewed by dependabot[bot] at 2022-06-02 03:47
  • 2. Bump serde_json from 1.0.79 to 1.0.81

    Bumps serde_json from 1.0.79 to 1.0.81.

    Release notes

    Sourced from serde_json's releases.

    v1.0.81

    • Work around indexmap/autocfg not always properly detecting whether a std sysroot crate is available (#885, thanks @​cuviper)

    v1.0.80

    • Documentation improvements
    Commits
    • a0ea937 Release 1.0.81
    • 6c3dfe9 Make it clearer that preserve_order implies a std dependency
    • f34ef95 Merge pull request #885 from cuviper/indexmap-std
    • 27939bb Explicitly enable indexmap/std
    • c0f9343 Ignore trait_duplication_in_bounds clippy false positives
    • 048a64c Resolve type_repetition_in_bounds clippy lint
    • 585e4c5 Release 1.0.80
    • 52a9c05 Pull miri from miri branch of dtolnay/rust-toolchain
    • aff685b Drop unneeded quoting from env variable in workflows yaml
    • 6995bbf Update workflows to actions/[email protected]
    • 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)
    Reviewed by dependabot[bot] at 2022-06-02 03:47
  • 3. Bump serde from 1.0.136 to 1.0.137

    Bumps serde from 1.0.136 to 1.0.137.

    Release notes

    Sourced from serde's releases.

    v1.0.137

    • Update documentation links to some data formats whose repos have moved (#2201, thanks @​atouchet)
    • Fix declared rust-version of serde and serde_test (#2168)
    Commits
    • 17c3c0c Release 1.0.137
    • 210e6c3 Clean up clippy allows which are superseded by msrv in clippy.toml
    • 41823a9 Ignore more type_repetition_in_bounds
    • 7ca13ff Ignore type_repetition_in_bounds lint that is incompatible with msrv
    • 52391fd Inform clippy of supported compiler version in clippy.toml
    • 9b2d8df Add a miri test job in CI
    • 07ba7ea Update workflows to actions/[email protected]
    • 9f29f6b Disable expandtest on miri
    • f6c104f Ignore unused ignore attribute warning in some configurations
    • 8a3a6fb Disable ui test on miri
    • 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)
    Reviewed by dependabot[bot] at 2022-06-02 03:47
  • 4. Export to ISO9660

    Because of how widespread the ISO9660 format is, it may be worthwhile to optionally allow exporting a bootable .iso instead of a regular .gb image. The main obstacle is goldboot works below the filesystem level, so copying the files manually would be really difficult (especially universally).

    One alternative may be to utilize goldboot-linux virtually along with xorriso after the provisioning step. This is similar to how merging multiboot images is envisioned to work, so the necessary machinery may already be in place by the time I get to this issue. That would reduce the effort needed to just what's required to figure out the arcane xorriso arguments.

    Reviewed by cilki at 2022-06-16 01:49
  • 5. Bump reqwest from 0.11.10 to 0.11.11

    Bumps reqwest from 0.11.10 to 0.11.11.

    Release notes

    Sourced from reqwest's releases.

    v0.11.11

    What's Changed

    • Add HTTP/2 keep-alive configuration methods on ClientBuilder.
    • Add ClientBuilder::http1_allow_obsolete_multiline_headers_in_responses().
    • Add impl Service<Request> for Client and &'_ Client.
    • (wasm) Add RequestBuilder::basic_auth().
    • Fix RequestBuilder::header to not override sensitive if user explicitly set on a HeaderValue.
    • Fix rustls parsing of elliptic curve private keys.
    • Fix Proxy URL parsing of some invalid targets.

    New Contributors

    Changelog

    Sourced from reqwest's changelog.

    v0.11.11

    • Add HTTP/2 keep-alive configuration methods on ClientBuilder.
    • Add ClientBuilder::http1_allow_obsolete_multiline_headers_in_responses().
    • Add impl Service<Request> for Client and &'_ Client.
    • (wasm) Add RequestBuilder::basic_auth().
    • Fix RequestBuilder::header to not override sensitive if user explicitly set on a HeaderValue.
    • Fix rustls parsing of elliptic curve private keys.
    • Fix Proxy URL parsing of some invalid targets.
    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)
    Reviewed by dependabot[bot] at 2022-06-14 04:56
  • 6. Bump actix-web from 4.0.1 to 4.1.0

    Bumps actix-web from 4.0.1 to 4.1.0.

    Release notes

    Sourced from actix-web's releases.

    actix-web-actors: v4.1.0

    • Add support for actix version 0.13. #2675

    #2675: actix/actix-web#2675

    actix-web: v4.1.0

    Added

    • Add ServiceRequest::extract() to make it easier to use extractors when writing middlewares. #2647
    • Add Route::wrap() to allow individual routes to use middleware. #2725
    • Add ServiceConfig::default_service(). #2338 #2743
    • Implement ResponseError for std::convert::Infallible

    Changed

    • Minimum supported Rust version (MSRV) is now 1.56 due to transitive hashbrown dependency.

    Fixed

    • Clear connection-level data on HttpRequest drop. #2742

    #2338: actix/actix-web#2338 #2647: actix/actix-web#2647 #2725: actix/actix-web#2725 #2742: actix/actix-web#2742 #2743: actix/actix-web#2743

    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)
    Reviewed by dependabot[bot] at 2022-06-13 04:47
  • 7. Bump validator from 0.12.0 to 0.15.0

    Bumps validator from 0.12.0 to 0.15.0.

    Changelog

    Sourced from validator's changelog.

    0.15.0 (2022/05/03)

    • Allow passing args to schema validator
    • Implement HasLen for map/set types
    • Remove validator_types from validator crate
    • Add ValidationErrors::errors_mut
    • Ignore unsupported fields rather than erroring

    0.14.0 (2021/06/29)

    • Allow passing arguments to custom functions
    • Better Display implementation
    • Better parsing of schema validation function in derive

    0.13.0 (2021/03/22)

    • Allow multiple schema-level validations
    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)
    Reviewed by dependabot[bot] at 2022-06-04 17:02
  • 8. Bump rustls-pemfile from 0.2.1 to 1.0.0

    Bumps rustls-pemfile from 0.2.1 to 1.0.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)
    Reviewed by dependabot[bot] at 2022-06-02 03:47
  • 9. Bump quick-xml from 0.22.0 to 0.23.0

    Bumps quick-xml from 0.22.0 to 0.23.0.

    Changelog

    Sourced from quick-xml's changelog.

    0.23.0 -- 2022-05-08

    • feat: add support for i128 / u128 in attributes or text/CDATA content
    • test: add tests for malformed inputs for serde deserializer
    • fix: allow to deserialize units from any data in attribute values and text nodes
    • refactor: unify errors when EOF encountered during serde deserialization
    • test: ensure that after deserializing all XML was consumed
    • feat: add Deserializer::from_str, Deserializer::from_slice and Deserializer::from_reader
    • refactor: deprecate from_bytes and Deserializer::from_borrowing_reader because they are fully equivalent to from_slice and Deserializer::new
    • refactor: reduce number of unnecessary copies when deserialize numbers/booleans/identifiers from the attribute and element names and attribute values
    • fix: allow to deserialize units from text and CDATA content. DeError::InvalidUnit variant is removed, because after fix it is no longer used
    • fix: ElementWriter, introduced in #274 (0.23.0-alpha2) now available to end users
    • fix: allow lowercase <!doctype > definition (used in HTML 5) when parse document from &[u8]
    • test: add tests for consistence behavior of buffered and borrowed readers
    • fix: produce consistent error positions in buffered and borrowed readers
    • feat: Error::UnexpectedBang now provide the byte found
    • refactor: unify code for buffered and borrowed readers
    • fix: fix internal panic message when parse malformed XML (#344)
    • test: add tests for trivial documents (empty / only comment / <root>...</root> -- one tag with content)
    • fix: CDATA was not handled in many cases where it should
    • fix: do not unescape CDATA content because it never escaped by design. CDATA event data now represented by its own BytesCData type (quick-xml#311)
    • feat: add Reader::get_ref() and Reader::get_mut(), rename Reader::into_underlying_reader() to Reader::into_inner()
    • refactor: now Attributes::next() returns a new type AttrError when attribute parsing failed (#4)
    • test: properly test all paths of attributes parsing (#4)
    • feat: attribute iterator now implements FusedIterator (#4)
    • fix: fixed many errors in attribute parsing using iterator, returned from attributes() or html_attributes() (#4)

    0.23.0-alpha3

    • fix: use element name (with namespace) when unflattening (serialize feature)

    0.23.0-alpha2

    • fix: failing tests with features

    0.23.0-alpha1

    • style: convert to rust edition 2018
    • fix: don't encode multi byte escape characters as big endian
    • feat: add Writer::write_nested_event

    ... (truncated)

    Commits
    • 73e38f9 Swap quick-xml references with fast-xml once again
    • a181d0a Release 0.23.0
    • f9453b9 Follow up for #4 - forgot to save changes in the editor
    • 30e0c23 Merge pull request #4 from Mingun/fix-attributes
    • c81d25c Reimplement attributes parsing logic and fix all errors
    • d516e45 Properly test all paths of attribute parsing
    • 317ab14 Use AttrError in the Attributes iterator return type
    • f93259a Use dedicated comparable error type for attribute parsing errors
    • e7dda45 Error kind NameWithQuote never triggered, remove it
    • 6b82fc3 Remove period from error messages for consistency and rephrase some messages
    • 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)
    Reviewed by dependabot[bot] at 2022-06-02 03:47
An infrastructure-as-code and deployment tool for Roblox.

Rocat ?? An infrastructure-as-code and deployment tool for Roblox. ⚠ Please note that this is an early release and the API is unstable. Releases follo

Jun 14, 2022
An infrastructure-as-code and deployment tool for Roblox.

Mantle ?? An infrastructure-as-code and deployment tool for Roblox. ⚠ Please note that this is an early release and the API is unstable. Releases foll

Jun 14, 2022
Desktop launcher to install and use Holochain apps locally

Holochain Launcher A cross-platform executable that launches a local Holochain conductor, and installs and opens apps. Feedback is immensely welcome i

Jun 12, 2022
Bringing support for the EOS-S3 in Rust

eos-s3-rs WIP Bringing support for the EOS-S3 in Rust. Embedded-hal traits implemented: ADC traits digital IO (but must decide what to do with #3) del

Jan 10, 2022
🐳 📦 Bringing docker containers to your AUR helper since 2022

zeus Releases | CI | Issues | Installing | Building Zeus. A simple AUR helper which utilizes docker containers allowing developers and users alike to

Jun 18, 2022
Immutable Ordered Key-Value Database Engine

PumpkinDB Build status (Linux) Build status (Windows) Project status Usable, between alpha and beta Production-readiness Depends on your risk toleranc

May 26, 2022
Blazing fast immutable collection datatypes for Rust.

imbl Blazing fast immutable collection datatypes for Rust. This is a fork of the im crate, which appears to be unmaintained. (This fork is not current

May 2, 2022
A memory efficient immutable string type that can store up to 24* bytes on the stack

compact_str A memory efficient immutable string type that can store up to 24* bytes on the stack. * 12 bytes for 32-bit architectures About A CompactS

Jun 22, 2022
A flexible, simple to use, immutable, clone-efficient String replacement for Rust

flexstr A flexible, simple to use, immutable, clone-efficient String replacement for Rust Overview Rust is great, but it's String type is optimized as

May 19, 2022
A flexible, simple to use, immutable, clone-efficient String replacement for Rust

A flexible, simple to use, immutable, clone-efficient String replacement for Rust. It unifies literals, inlined, and heap allocated strings into a single type.

May 19, 2022
Command-line utility for managing DigitalOcean infrastructure

docli-rs (pronounced "dockly") A command-line utility for managing DigitalOcean infrastructure via the DigitalOcean API v2 Disclaimer This utility is

Sep 4, 2021
AccessKit: UI accessibility infrastructure across platforms and programming languages

AccessKit: UI accessibility infrastructure across platforms and programming languages Motivation There are numerous UI toolkits, and new ones continue

Jun 19, 2022
Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.
Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

Jun 17, 2022
InvArch Pallet Library - IP Infrastructure for Substrate
InvArch Pallet Library - IP Infrastructure for Substrate

InvArch-Pallet-Library Intro This repository should contains the Pallets used in the InvArch blockchain, and reviews their relationships and functions

Jun 17, 2022
ttvm is a runtime and compiler infrastructure written in Rust.

ttvm - Runtime and compiler infrastructure ttvm is a runtime and compiler infrastructure written in Rust. Usage Add the following to your Cargo.toml:

Apr 19, 2022
An infrastructure-as-code and deployment tool for Roblox.

Rocat ?? An infrastructure-as-code and deployment tool for Roblox. ⚠ Please note that this is an early release and the API is unstable. Releases follo

Jun 14, 2022
An infrastructure-as-code and deployment tool for Roblox.

Mantle ?? An infrastructure-as-code and deployment tool for Roblox. ⚠ Please note that this is an early release and the API is unstable. Releases foll

Jun 14, 2022
Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications
Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications

Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications Explore PipeCD docs » Overview PipeCD provides a unified co

Jun 22, 2022
Compiler infrastructure and toolchain library for WebAssembly

Binaryen Binaryen is a compiler and toolchain infrastructure library for WebAssembly, written in C++. It aims to make compiling to WebAssembly easy, f

Jun 24, 2022
(Toy) Compiler Infrastructure influenced by LLVM written in Rust

Sericum Compiler Infrastructure influenced by LLVM written in Rust Do not expect too much stuff! To Do Implement basic block parameters Make it possib

May 25, 2022