grapl
crate2nix
grapl | crate2nix | |
---|---|---|
8 | 10 | |
671 | 321 | |
- | 2.8% | |
9.8 | 9.3 | |
over 1 year ago | 4 days ago | |
Rust | Nix | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
grapl
-
Rust – Faster compilation with the parallel front-end in nightly
https://github.com/grapl-security/grapl/
I just did a clean build `cargo build`, 19 minutes 44 seconds.
I added 1 line (`dbg!("foo")`) and it took 14.76s
-
Introduction to Curp Protocol
Awesome. So, CURP was pretty inspiring for the work I did on Grapl. Grapl Schemas had to define conflict resolution algorithms.
https://github.com/grapl-security/grapl/blob/main/etc/exampl...
As you can see here, there are some special built-ins that aren't important (keys, timestamps) but you can see there's @immutable (FWW) and @increment_only.
This meant that our graphs formed a big CRDT, which meant that every operation commuted, which meant that we could do weird things with our consensus. Reads could happen on stale data, writes could be dropped, we could read from two inconsistent databases and resolve the inconsistency in memory, etc. I even hacked this into ScyllaDB by encoding each merge function into an integer, and setting that as the TIMESTAMP, for when replication merging happened to the values - this meant we could perform writes (repeatedly) without reading a value first, and with no coordination between nodes. What I didn't have was a native solution that could take advantage of these constraints.
As you can tell, this project is obviously very interesting to me. I ran through this pretty quickly but I'll dig in more soon. I'm just excited to see this.
- Transitioning to Rust as a company
- Rust for cyber security
-
Why Rust is a great choice for startups
Rust, Python and Go. Props to you for being sensible with technology choice.
https://github.com/grapl-security/grapl
-
Is Rust Web Yet?
That's great for you and your team, but looking at https://github.com/grapl-security/grapl it seems like your needs are pretty different from most web developers.
- NPM malware and what it could imply for Cargo
crate2nix
- Transitioning to Rust as a company
-
How to package a Rust app using Nix
I'll use nixpkgs' buildRustPackage. There's a few other tools, my favorite being crate2nix, but we'll leave that to a future tutorial.
-
Nix shell related questions (for rust)
If you want to iterate with nix instead of cargo, crate2nix and cargo2nix provides more caching and more fine control over your dependencies. I haven't used these two so you would have to decide for yourself. You may also want to try out nocargo for something more experimental.
-
Introducing Crane: Composable and Cacheable Builds with Cargo and Nix
I'm yet to try it out, but from the blog post, the README and the source it appears that Crane builds all dependencies in one derivation (separately from the main crate). This means that if a dependency gets added, removed or changed, all dependencies of a crate will be rebuilt. This is in contrast with https://github.com/kolloch/crate2nix, which does build every dependency in a separate package, thus you don't need to rebuild other dependencies if you only change a small part of the tree.
-
Nixery – Docker images on the fly with Nix
Yes, you will have to package it if it's not already in nixpkgs.
The good news is once you learn how, it's basically trivial with crate2nix[0], which can autogenerate nix derivations from rust crates
[0] https://github.com/kolloch/crate2nix
-
Help with Nix and Rust
From my quick reading of cargo2nix's webpage yes. https://github.com/kolloch/crate2nix has a workspaces section.
-
How do you install packages not in Nixpkgs?
As for your two applications, they're both written in Rust, and I like https://github.com/kolloch/crate2nix as a way to package Rust crates with Nix. BTW, wezterm is already in nixpkgs!
-
Nix-ifying a Rust project
I like the way crate2nix works. I have made a flake template for it here. Sometimes it requires a couple of overrides to fix some misbehaving crates (see https://github.com/balsoft/simple-osd-daemons/blob/master/flake.nix#L29 for an example of such overrides), but otherwise it's fantastic. It doesn't require any hash nonsense, it downloads and builds all the crates separately (unlike naersk or other solutions) so you get all the benefits of Nix (reproducibility and proper caching).
-
How to do a full, reproducible archive of a Rust project?
Crate2nix might help: https://github.com/kolloch/crate2nix
What are some alternatives?
ntex - framework for composable networking services
naersk - Build Rust projects in Nix - no configuration, no code generation, no IFD, sandbox friendly.
cargo-deny - ❌ Cargo plugin for linting your dependencies 🦀
cargo2nix - Granular builds of Rust projects for Nix
demo-rust-axum - Demo of Rust and axum web framework with Tokio, Tower, Hyper, Serde
rust-nix-template - Rust project template with Nix (Flakes) and VSCode support
nodo - Pre-emptively created repository so the design can be discussed on the issue tracker before commits are made (repo name may change)
crates.io-index - Registry index for crates.io
rfcs - RFCs for changes to Rust
nix-templates - Nix Flake templates for various languages
rust-wiki-backup - A backup of the Rust wiki
nixos - My NixOS Configurations