The safe, fast and sane package manager for Linux

Related tags

Command-line moss-rs
Overview

moss-rs

A rewrite of the Serpent OS tooling in Rust, enabling a robust implementation befitting Serpent and Solus

We will initially focus on moss and stone (library), restoring parity while focusing on some key areas

  • Version agnostic read APIs
  • Decoupled repository indices with support for format upgrades
  • Asynchronous I/O (specifically fetches)
  • Memory consumption + safety
  • Upgrade of installations

When the tooling is at a point exceeding the functionality of our first version, focus will shift to the build infrastructure as well as the Rust version of boulder (.stone build tooling).

It is recommended to use an up to date version of Rust via rustup.

Progress:

  • Read support for .stone
  • Repository manipulation
  • Plugin system for layered graph of dependencies
  • Search support
  • Transactions
  • Installation support
  • Removal support
  • Upgrade support
  • Trigger integration (usysconf-rs)
  • GC / cleanups of latent states
  • Features (previously: Subscriptions)

Test libstone

$ cargo test

Building moss

$ cargo build -p moss
$ cargo run -p moss -- $args

Experiment

Remember to use the -D sosroot argument to specify a root directory, otherwise moss will happily eat your operating system.

cargo build --release

# Add the volatile repo
./target/release/moss -D sosroot repo add volatile https://dev.serpentos.com/volatile/x86_64/stone.index

# List packages
./target/release/moss -D sosroot list available

# Install something
./target/release/moss -D sosroot install systemd bash libx11-32bit

Contributing changes

Please ensure all tests are running locally without issue:

$ cargo test

# Prior to commiting a change:
$ cargo fmt

# Prior to pushing anything, check:
$ cargo clippy

License

moss-rs is available under the terms of the MPL-2.0

Comments
  • TUI

    TUI

    Initial TUI! Still need to clean up some things and add our own progress bar implementation, but it's a pretty minimal async runtime and works pretty well.

    https://github.com/serpent-os/moss-rs/assets/10239377/a9074591-e894-49b0-b50f-337c52098f7f

    opened by tarkah 3
  • build(deps): bump the cargo group with 5 updates

    build(deps): bump the cargo group with 5 updates

    Bumps the cargo group with 5 updates:

    | Package | From | To | | --- | --- | --- | | clap | 4.4.5 | 4.4.6 | | ratatui | 0.23.1-alpha.3 | 0.23.1-alpha.4 | | reqwest | 0.11.20 | 0.11.21 | | sqlx | 0.7.1 | 0.7.2 | | thiserror | 1.0.48 | 1.0.49 |

    Updates clap from 4.4.5 to 4.4.6

    Release notes

    Sourced from clap's releases.

    v4.4.6

    [4.4.6] - 2023-09-28

    Internal

    • Upgrade anstream
    Changelog

    Sourced from clap's changelog.

    [4.4.6] - 2023-09-28

    Internal

    • Upgrade anstream
    Commits

    Updates ratatui from 0.23.1-alpha.3 to 0.23.1-alpha.4

    Release notes

    Sourced from ratatui's releases.

    v0.23.1-alpha.4

    v0.23.1-alpha.4 - 2023-09-30

    Features

    • d077903 (backend) Backend provides window_size, add Size struct (#276)

      For image (sixel, iTerm2, Kitty...) support that handles graphics in
      terms of `Rect` so that the image area can be included in layouts.
      

      For example: an image is loaded with a known pixel-size, and drawn, but the image protocol has no mechanism of knowing the actual cell/character area that been drawn on. It is then impossible to skip overdrawing the area.

      Returning the window size in pixel-width / pixel-height, together with colums / rows, it can be possible to account the pixel size of each cell / character, and then known the Rect of a given image, and also resize the image so that it fits exactly in a Rect.

      Crossterm and termwiz also both return both sizes from one syscall, while termion does two.

      Add a Size struct for the cases where a Rect's x/y is unused (always zero).

      Size is not "clipped" for area < u16::max_value() like Rect. This is why there are From implementations between the two.

    • 301366c (barchart) Render charts smaller than 3 lines (#532)

      The bar values are not shown if the value width is equal the bar width
      and the bar is height is less than one line
      

      Add an internal structure LabelInfo which stores the reserved height for the labels (0, 1 or 2) and also whether the labels will be shown.

      Fixes ratatui-org#513

    • 32e4619 (block) Allow custom symbols for borders (#529) [breaking]

      Adds a new `Block::border_set` method that allows the user to specify
      

    ... (truncated)

    Commits
    • 2fd85af refactor(barchart): simplify internal implementation (#544)
    • 401a7a7 docs: Improve clarity in documentation for Frame and Terminal đź“š (#545)
    • e35e413 docs: Fix terminal comment (#547)
    • 8ae4403 docs: Fix Terminal docstring (#546)
    • 11076d0 fix(rect): fix arithmetic overflow edge cases (#543)
    • 9cfb133 docs: document alpha release process (#542)
    • 4548a9b docs: add BREAKING-CHANGES.md (#538)
    • 61af0d9 docs(examples): make custom widget example into a button (#539)
    • c0991cc docs: make library and README consistent (#526)
    • 301366c feat(barchart): render charts smaller than 3 lines (#532)
    • Additional commits viewable in compare view

    Updates reqwest from 0.11.20 to 0.11.21

    Release notes

    Sourced from reqwest's releases.

    v0.11.21

    What's Changed

    • Add automatically detecting macOS proxy settings.
    • Add ClientBuilder::tls_info(bool), which will put tls::TlsInfo into the response extensions.
    • Fix trust-dns resolver from possible hangs.
    • Fix connect timeout to be split among multiple IP addresses.

    New Contributors

    Changelog

    Sourced from reqwest's changelog.

    v0.11.21

    • Add automatically detecting macOS proxy settings.
    • Add ClientBuilder::tls_info(bool), which will put tls::TlsInfo into the response extensions.
    • Fix trust-dns resolver from possible hangs.
    • Fix connect timeout to be split among multiple IP addresses.
    Commits

    Updates sqlx from 0.7.1 to 0.7.2

    Changelog

    Sourced from sqlx's changelog.

    0.7.2 - 2023-09-25

    23 pull requests were merged this release cycle.

    Added

    Changed

    Fixed

    #2121: launchbadge/sqlx#2121 #2533: launchbadge/sqlx#2533 #2538: launchbadge/sqlx#2538 #2577: launchbadge/sqlx#2577 #2602: launchbadge/sqlx#2602 #2624: launchbadge/sqlx#2624 #2628: launchbadge/sqlx#2628 #2630: launchbadge/sqlx#2630 #2634: launchbadge/sqlx#2634 #2646: launchbadge/sqlx#2646 #2650: launchbadge/sqlx#2650 #2651: launchbadge/sqlx#2651 #2664: launchbadge/sqlx#2664

    ... (truncated)

    Commits

    Updates thiserror from 1.0.48 to 1.0.49

    Release notes

    Sourced from thiserror's releases.

    1.0.49

    Commits

    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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
    • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
    • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
    • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
    • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    dependencies 
    opened by dependabot[bot] 2
  • build(deps): bump the cargo group with 2 updates

    build(deps): bump the cargo group with 2 updates

    Bumps the cargo group with 2 updates: clap and criterion.

    Updates clap from 4.4.3 to 4.4.4

    Release notes

    Sourced from clap's releases.

    v4.4.4

    [4.4.4] - 2023-09-18

    Internal

    • Update terminal_size to 0.3
    Changelog

    Sourced from clap's changelog.

    [4.4.4] - 2023-09-18

    Internal

    • Update terminal_size to 0.3
    Commits

    Updates criterion from 0.4.0 to 0.5.1

    Changelog

    Sourced from criterion's changelog.

    [0.5.1] - 2023-05-26

    Fixed

    • Quick mode (--quick) no longer crashes with measured times over 5 seconds when --noplot is not active

    [0.5.0] - 2023-05-23

    Changed

    • Replaced lazy_static dependency with once_cell
    • Improved documentation of the html_reports feature
    • Replaced atty dependency with is-terminal
    • MSRV bumped to 1.64
    • Upgraded clap dependency to v4
    • Upgraded tempfile dependency to v3.5.0

    Fixed

    • Quick mode (--quick) no longer outputs 1ms for measured times over 5 seconds
    • Documentation updates
    Commits

    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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
    • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
    • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
    • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
    • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    dependencies 
    opened by dependabot[bot] 2
  • build(deps): bump the cargo group with 1 update

    build(deps): bump the cargo group with 1 update

    Bumps the cargo group with 1 update: criterion.

    Changelog

    Sourced from criterion's changelog.

    [0.5.1] - 2023-05-26

    Fixed

    • Quick mode (--quick) no longer crashes with measured times over 5 seconds when --noplot is not active

    [0.5.0] - 2023-05-23

    Changed

    • Replaced lazy_static dependency with once_cell
    • Improved documentation of the html_reports feature
    • Replaced atty dependency with is-terminal
    • MSRV bumped to 1.64
    • Upgraded clap dependency to v4
    • Upgraded tempfile dependency to v3.5.0

    Fixed

    • Quick mode (--quick) no longer outputs 1ms for measured times over 5 seconds
    • Documentation updates
    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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
    • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
    • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
    • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
    • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    dependencies 
    opened by dependabot[bot] 2
  • Implement the Transaction system

    Implement the Transaction system

    This is independent of the filesystem transaction (Blitter) - we need a way to build an in-memory view of the new set of pkgIDs by mutating the input set of pkgIDs, using a Registry (per the D version)

    This requires digraph code to land with reverse topological sort + subgraph support to flesh out the layered dependency system.

    opened by ikeycode 1
  • moss/cli: add -D and -y global arguments

    moss/cli: add -D and -y global arguments

    cargo run -p moss -- -h:

    Next generation package manager
    
    Usage: moss [OPTIONS] [COMMAND]
    
    Commands:
      extract  Extract a `.stone` content to disk
      info     Query packages
      inspect  Examine raw stone files
      install  Install packages
      list     List packages
      remove   Remove packages
      version  Display version and exit
      help     Print this message or the help of the given subcommand(s)
    
    Options:
      -v, --version           
      -D, --directory <root>  Root directory [default: /]
      -y, --yes-all           Assume yes for all questions
      -h, --help              Print help
    

    cargo run -p moss -- install -h:

    Install packages
    
    Usage: moss install [OPTIONS]
    
    Options:
      -D, --directory <root>  Root directory [default: /]
      -y, --yes-all           Assume yes for all questions
      -h, --help              Print help (see more with '--help')
    

    To obtain the value, use something like:

    let root = args.get_one::<String>("root").unwrap().clone();
    let yes = args.get_flag("yes");
    
    opened by GZGavinZhao 1
  • Rust go :rocket: :rocket: :rocket:

    Rust go :rocket: :rocket: :rocket:

    A couple minor things while this repo gets setup

    Version

    We can use this built-in env var to get the package version: https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-crates. If we want to include git hash, we can easily leverage build.rs to set an env var w/ that hash value. I can add this in a follow-up unit of work.

    Naming Convention

    This one is a bit subjective, but I want to throw it out there. Rust modules offer a nice namespace so we shouldn't need to have redundant module names in the types or functions themselves:

    mod list;
    
    list::command()
    
    // vs
    
    use list::list_command; // redundant
    
    mod list;
    
    list_command()
    
    opened by tarkah 1
  • build(deps): bump the cargo group with 1 update

    build(deps): bump the cargo group with 1 update

    Bumps the cargo group with 1 update: tokio.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.33.0

    1.33.0 (October 9, 2023)

    Fixed

    • io: mark Interest::add with #[must_use] (#6037)
    • runtime: fix cache line size for RISC-V (#5994)
    • sync: prevent lock poisoning in watch::Receiver::wait_for (#6021)
    • task: fix spawn_local source location (#5984)

    Changed

    • macros: use ::core imports instead of ::std in tokio::test (#5973)
    • sync: use Acquire/Release orderings instead of SeqCst in watch (#6018)

    Added

    • fs: add vectored writes to tokio::fs::File (#5958)
    • io: add Interest::remove method (#5906)
    • io: add vectored writes to DuplexStream (#5985)
    • net: add Apple tvOS support (#6045)
    • sync: add ?Sized bound to {MutexGuard,OwnedMutexGuard}::map (#5997)
    • sync: add watch::Receiver::mark_unseen (#5962, #6014, #6017)
    • sync: add watch::Sender::new (#5998)
    • sync: add const fn OnceCell::from_value (#5903)

    Removed

    • remove unused stats feature (#5952)

    Documented

    • add missing backticks in code examples (#5938, #6056)
    • fix typos (#5988, #6030)
    • process: document that Child::wait is cancel safe (#5977)
    • sync: add examples for Semaphore (#5939, #5956, #5978, #6031, #6032, #6050)
    • sync: document that broadcast capacity is a lower bound (#6042)
    • sync: document that const_new is not instrumented (#6002)
    • sync: improve cancel-safety documentation for mpsc::Sender::send (#5947)
    • sync: improve docs for watch channel (#5954)
    • taskdump: render taskdump documentation on docs.rs (#5972)

    Unstable

    • taskdump: fix potential deadlock (#6036)

    #5903: tokio-rs/tokio#5903 #5906: tokio-rs/tokio#5906 #5938: tokio-rs/tokio#5938 #5939: tokio-rs/tokio#5939

    ... (truncated)

    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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
    • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
    • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
    • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
    • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump the cargo group with 4 updates

    build(deps): bump the cargo group with 4 updates

    Bumps the cargo group with 4 updates: clap, reqwest, sqlx and thiserror.

    Updates clap from 4.4.5 to 4.4.6

    Release notes

    Sourced from clap's releases.

    v4.4.6

    [4.4.6] - 2023-09-28

    Internal

    • Upgrade anstream
    Changelog

    Sourced from clap's changelog.

    [4.4.6] - 2023-09-28

    Internal

    • Upgrade anstream
    Commits

    Updates reqwest from 0.11.20 to 0.11.22

    Release notes

    Sourced from reqwest's releases.

    v0.11.21

    What's Changed

    • Add automatically detecting macOS proxy settings.
    • Add ClientBuilder::tls_info(bool), which will put tls::TlsInfo into the response extensions.
    • Fix trust-dns resolver from possible hangs.
    • Fix connect timeout to be split among multiple IP addresses.

    New Contributors

    Changelog

    Sourced from reqwest's changelog.

    v0.11.22

    • Fix compilation on Windows when trust-dns is enabled.

    v0.11.21

    • Add automatically detecting macOS proxy settings.
    • Add ClientBuilder::tls_info(bool), which will put tls::TlsInfo into the response extensions.
    • Fix trust-dns resolver from possible hangs.
    • Fix connect timeout to be split among multiple IP addresses.
    Commits

    Updates sqlx from 0.7.1 to 0.7.2

    Changelog

    Sourced from sqlx's changelog.

    0.7.2 - 2023-09-25

    23 pull requests were merged this release cycle.

    Added

    Changed

    Fixed

    #2121: launchbadge/sqlx#2121 #2533: launchbadge/sqlx#2533 #2538: launchbadge/sqlx#2538 #2577: launchbadge/sqlx#2577 #2602: launchbadge/sqlx#2602 #2624: launchbadge/sqlx#2624 #2628: launchbadge/sqlx#2628 #2630: launchbadge/sqlx#2630 #2634: launchbadge/sqlx#2634 #2646: launchbadge/sqlx#2646 #2650: launchbadge/sqlx#2650 #2651: launchbadge/sqlx#2651 #2664: launchbadge/sqlx#2664

    ... (truncated)

    Commits

    Updates thiserror from 1.0.48 to 1.0.49

    Release notes

    Sourced from thiserror's releases.

    1.0.49

    Commits

    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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
    • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
    • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
    • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
    • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump the cargo group with 3 updates

    build(deps): bump the cargo group with 3 updates

    Bumps the cargo group with 3 updates: clap, ratatui and rayon.

    Updates clap from 4.4.4 to 4.4.5

    Release notes

    Sourced from clap's releases.

    v4.4.5

    [4.4.5] - 2023-09-25

    Fixes

    • (parser) When inferring subcommand name or long_flag, allow ambiguous-looking matches that unambiguously map back to the same command
    • (parser) When inferring subcommand long_flag, don't panic
    • (assert) Clarify what action is causing a positional that doesn't set values which is especially useful for derive users
    Changelog

    Sourced from clap's changelog.

    [4.4.5] - 2023-09-25

    Fixes

    • (parser) When inferring subcommand name or long_flag, allow ambiguous-looking matches that unambiguously map back to the same command
    • (parser) When inferring subcommand long_flag, don't panic
    • (assert) Clarify what action is causing a positional that doesn't set values which is especially useful for derive users
    Commits
    • c298f6a chore: Release
    • 463d6c5 docs: Update changelog
    • 3ac4404 Merge pull request #5025 from SUPERCILEX/resolve-alias-conflicts
    • a76789e fix: Make long subcommand flag inference consistent
    • c2b8ec3 fix: Resolve conflicting name inference if from aliases
    • e5c6993 test: Long flags inference
    • 0d9b14f Merge pull request #5136 from epage/panic
    • 221177b fix(assert): Call out the action in positional assert
    • cb2d2bc chore: Update from '_rust/main'
    • 4173c8f chore(ci): Don't set patch for MSRV
    • Additional commits viewable in compare view

    Updates ratatui from 0.23.1-alpha.2 to 0.23.1-alpha.3

    Release notes

    Sourced from ratatui's releases.

    v0.23.1-alpha.3

    v0.23.1-alpha.3 - 2023-09-23

    Features

    • d077903 (backend) Backend provides window_size, add Size struct (#276)

      For image (sixel, iTerm2, Kitty...) support that handles graphics in
      terms of `Rect` so that the image area can be included in layouts.
      

      For example: an image is loaded with a known pixel-size, and drawn, but the image protocol has no mechanism of knowing the actual cell/character area that been drawn on. It is then impossible to skip overdrawing the area.

      Returning the window size in pixel-width / pixel-height, together with colums / rows, it can be possible to account the pixel size of each cell / character, and then known the Rect of a given image, and also resize the image so that it fits exactly in a Rect.

      Crossterm and termwiz also both return both sizes from one syscall, while termion does two.

      Add a Size struct for the cases where a Rect's x/y is unused (always zero).

      Size is not "clipped" for area &lt; u16::max_value() like Rect. This is why there are From implementations between the two.

    • be55a5f (examples) Add demo2 example (#500)

    • d67fa2c (line) Add Line::raw constructor (#511)

      * feat(line): add `Line::raw` constructor
      

      There is already Span::raw and Text::raw methods and this commit simply adds Line::raw method for symmetry.

      Multi-line content is converted to multiple spans with the new line removed

    Bug Fixes

    ... (truncated)

    Commits
    • d67fa2c feat(line): add Line::raw constructor (#511)
    • c3155a2 fix(barchart): add horizontal labels(#518)
    • c5ea656 fix(barchart): avoid divide by zero in rendering (#525)
    • be55a5f feat(examples): add demo2 example (#500)
    • 21303f2 fix(rect): prevent overflow in inner() and area() (#523)
    • c9b8e7c fix(barchart): render value labels with unicode correctly (#515)
    • 5498a88 chore(spans): remove deprecated Spans type (#426)
    • 0fe7385 docs(Gauge): add docs for Gauge and LineGauge (#514)
    • dd9a8df docs(table): add documentation for block and header methods of the `Table...
    • See full diff in compare view

    Updates rayon from 1.7.0 to 1.8.0

    Changelog

    Sourced from rayon's changelog.

    Release rayon 1.8.0 / rayon-core 1.12.0 (2023-09-20)

    • The minimum supported rustc is now 1.63.
    • Added ThreadPoolBuilder::use_current_thread to use the builder thread as part of the new thread pool. That thread does not run the pool's main loop, but it may participate in work-stealing if it yields to rayon in some way.
    • Implemented FromParallelIterator<T> for Box<[T]>, Rc<[T]>, and Arc<[T]>, as well as FromParallelIterator<Box<str>> and ParallelExtend<Box<str>> for String.
    • ThreadPoolBuilder::build_scoped now uses std::thread::scope.
    • The default number of threads is now determined using std::thread::available_parallelism instead of the num_cpus crate.
    • The internal logging facility has been removed, reducing bloat for all users.
    • Many smaller performance tweaks and documentation updates.
    Commits

    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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
    • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
    • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
    • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
    • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    dependencies 
    opened by dependabot[bot] 0
  • Feat/batch add

    Feat/batch add

    Batches payloads when inserting them into meta-db. This greatly improves the speed, while still providing a cap on memory usage up to the batch size.

    Before / after:

    image

    opened by tarkah 0
  • Dual-signature system for .stone

    Dual-signature system for .stone

    We're going to add multisig support to the .stone format, as per-package verification is inherently far more secure than index-based verification.

    As part of our build infrastructure, each build machine will sign a .stone to lay ownership on it, whilst the repository will add another signature upon incorporation. This will facilitate the revocation of malicious machines and artefacts en-masse.

    Note: We can also use this to single-sign our stone-format repository index files

    Computation

    In verification, the SignaturePayload is exempt from iteration. Compute the BLAKE3 hash for the raw data of all payloads (header+block). Then generate EdDSA (Ed25519 curve) key from this input hash. Each signature is inserted into the SignaturePayload

    SignaturePayload

    A SignaturePayload will consist of one or more SignatureIdentifiers. Each will tag the origin (local, remote, authority, etc), key length, algorithm, in a robust enum-based update-friendly fashion. For example:

    enum SignatureAlgorithm {
        RSA2048,
        RSA4096,
        EdDSA,
        // ... other algorithms
    }
    
    enum KeyOrigin {
        Local,
        Remote,
        // ... other origins
    }
    
    struct SignatureIdentifier {
        algorithm: SignatureAlgorithm,
        origin: KeyOrigin
        signature_length: u16,
        // ...
      }
    opened by ikeycode 6
  • Support BLAKE3

    Support BLAKE3

    We've relied heavily on SHA-256 in the past, but would like to move PackageHash to be based on BLAKE3 going forwards. We also need this for verification routines

    opened by ikeycode 4
  • Decomp/extract do not respect payload data checksum

    Decomp/extract do not respect payload data checksum

    Each payload header in v1 format contains an 8-byte checksum that is currently ignored.

    This uses XXH3_64 and is internally stored as XXH64_canonical_t. While reading from the payload, an adapter should be used to build the checksum and compare the hashsum.

    Alternatively a read-ahead checksum can be implemented when using mmap by pushing the entire payload-body into a digest.

    opened by ikeycode 0
  • Support

    Support "features" ala cargo

    Older versions of moss spoke of so-called subscriptions. We should investigate how we'd go about building "features".

    Initial premise is handling filesystem + dependency filters based on the current state. Thus we might filter out manpages / devel pkgs if the feature is disabled, etc.

    Discuss.

    opened by ikeycode 0
Owner
Serpent OS
Home of Serpent OS development
Serpent OS
A command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects.

CCake CCake is a command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects. Goals To be easily und

Boston Vanseghi 4 Oct 24, 2022
BASIC build system and package manager.

Bargo BASIC build system and package manager. Bargo is a tool to make it simpler to program in the BASIC programming language. Early versions of BASIC

Vasco Costa 3 Apr 6, 2024
Yfin is the Official package manager for the Y-flat programming language

Yfin is the Official package manager for the Y-flat programming language. Yfin allows the user to install, upgrade, and uninstall packages. It also allows a user to initialize a package with the Y-flat package structure and files automatically generated. In future, Yfin will also allow users to publish packages.

Jake Roggenbuck 0 Mar 3, 2022
Yet another package manager for Rust.

Rpip Installing. Make sure you have just (packages) installed! Once you have just installed move into the root directory (where this file is) and run

null 2 Apr 27, 2022
📦 A Python package manager written in Rust inspired by Cargo.

huak About A Python package manager written in Rust. The Cargo for Python. ⚠️ Disclaimer: huak is currently in its proof-of-concept (PoC) phase. Huak

Chris Pryer 186 Jan 9, 2023
📦 A Python package manager written in Rust inspired by Cargo.

huak About A Python package manager written in Rust. The Cargo for Python. ⚠️ Disclaimer: huak is currently in its Alpha phase. Huak aims to support a

Chris Pryer 161 Oct 9, 2022
đź—˝ Universal Node Package Manager

?? NY Universal Node Package Manager node • yarn • pnpm Features Universal - Picks the right package manager for you based on the lockfile in your fol

Kris Kaczor 46 Oct 12, 2023
A new gen package manager, written in rust

Run It run it is a package manager that is based on containers (yes like apx but declarative and written in rust), the difference is that run it is we

null 7 Sep 6, 2024
Rustato: A powerful, thread-safe global state management library for Rust applications, offering type-safe, reactive state handling with an easy-to-use macro-based API.

Rustato State Manager A generical thread-safe global state manager for Rust Introduction • Features • Installation • Usage • Advanced Usage • Api Refe

BiteCraft 8 Sep 16, 2024
TMM is a Linux native game modding tool. it allows to install and depoly mods for Linux native and wine games.

Tux Mod Manager TMM is a Linux native mod manager made with the Tauri toolkit. It can install, load, remove and deploy mods for both Linux native and

Mathiew May 119 Dec 27, 2022
Wallrus is a simple wallpaper manager for linux.

wallrus Wallrus is a simple and blazing-fast wallpaper manager for linux. It wraps around feh to provide a simple, fast, feature-rich and user-friendl

Akshay Rajput 9 Oct 10, 2022
A comprehensive collection of resources and learning materials for Rust programming, empowering developers to explore and master the modern, safe, and blazingly fast language.

?? Awesome Rust Lang ⛰️ Project Description : Welcome to the Awesome Rust Lang repository! This is a comprehensive collection of resources for Rust, a

Shubham Raj 16 May 29, 2023
Fast package resolver written in Rust (CDCL based SAT solving)

Resolvo: Fast package resolver written in Rust Resolvo implements a fast package resolution algorithm based on CDCL SAT solving. If resolvo is unable

Mamba 17 Sep 27, 2023
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Wyatt Jacob Herkamp 30 Dec 14, 2022
A fast, powerful, and safe interpreter written in rust!

Kraber A fast, powerful, and safe programming language written in rust! About It packs a punch like the Kraber .50-Cal. Kraber is designed to be minim

Int Fract 3 Mar 24, 2024
🚀 A blazingly fast easy to use dotfile and global theme manager written in Rust

GTHEME A blazingly fast easy to use dotfile and global theme manager for *NIX systems written in Rust ?? Demo using wip desktop. To check out more des

David Rodriguez 19 Nov 28, 2022
Fast KubeJS script manager. Includes version control and compatibility with KJSPKG packages.

CarbonJS A KubeJS script manager Features ?? Super fast ⚙️ Version control ?? Constantly new scripts being added ✅ Easy to use ?? Compatibility with K

Krzysztof Poręba 3 May 9, 2023
A safe, fast, lightweight embeddable scripting language written in Rust.

Bud (budlang) A safe, fast, lightweight embeddable scripting language written in Rust. WARNING: This crate is not anywhere near being ready to publish

Khonsu Labs 13 Dec 27, 2022
⚡️ Blazing fast terminal file manager written in Rust, based on async I/O.

Yazi - ⚡️ Blazing Fast Terminal File Manager Yazi ("duck" in Chinese) is a terminal file manager written in Rust, based on non-blocking async I/O. It

三咲雅 · Misaki Masa 189 Aug 1, 2023