FP Complete

Owned Values and Futures in Rust Programming

Let’s write a simple tokio-powered program that will download the contents of an HTTP response body using reqwest and print it to stdout. We’ll take the URL to download on the command line using clap. This might look something like the following: use anyhow::Result; use clap::Parser; #[derive(Parser)] struct Opt { url: String, } #[tokio::main] async fn main() -> Result<()> […]

Announcing: pid1 Crate for Easier Rust Docker Images

rust

Introduction The FP Complete team is pleased to announce the release of the pid1 crate, a Rust library for proper signal and zombie reaping of the PID 1 process. When deploying an application in a containerized environment, you typically need to deploy a small init system to forward signals to your application and reap zombies. […]

Levana NFT Launch

FP Complete Corporation, headquartered in Charlotte, North Carolina, is a global technology company building next-generation software to solve complex problems.  We specialize in Server-Side Software Engineering, DevSecOps, Cloud-Native Computing, Distributed Ledger, and Advanced Programming Languages. We have been a full-stack technology partner in business for 10+ years, delivering reliable, repeatable, and highly secure software.  Our team of […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 4

This is the fourth and final post in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Understanding Hyper, and first experiences with Axum Demonstration of Tonic for a gRPC client/server Today’s post: How to combine Axum and […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 3

This is the third of four posts in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Understanding Hyper, and first experiences with Axum Today’s post: Demonstration of Tonic for a gRPC client/server How to combine Axum and […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 2

This is the second of four posts in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Today’s post: Understanding Hyper, and first experiences with Axum Demonstration of Tonic for a gRPC client/server How to combine Axum and […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 1

I’ve played around with various web server libraries and frameworks in Rust, and found various strengths and weaknesses with them. Most recently, I put together an FP Complete solution called Zehut (which I’ll blog about another time) that needed to combine a web frontend and gRPC server. I used Hyper, Tonic, and a minimal library […]

Announcing Amber, encrypted secrets management

Years ago, Travis CI introduced a method for passing secret values from your repository into the Travis CI system. This method relies on encryption to ensure that anyone can provide a new secret, but only the CI system itself can read those secrets. I’ve always thought that the Travis approach to secrets was one of […]

Rust’s as_ref vs as_deref

What’s wrong with this program? fn main() { let option_name: Option<String> = Some(“Alice”.to_owned()); match option_name { Some(name) => println!(“Name is {}”, name), None => println!(“No name provided”), } println!(“{:?}”, option_name); } The compiler gives us a wonderful error message, including a hint on how to fix it: error[E0382]: borrow of partially moved value: `option_name` –> […]

Intermediate Training Courses – Haskell and Rust

I’m happy to announce that over the next few months, FP Complete will be offering intermediate training courses on both Haskell and Rust. This is a follow up to our previous beginner courses on both languages as well. I’m excited to get to teach both of these courses. More details below, but cutting to the […]