FP Complete

Collect in Rust, traverse in Haskell and Scala

There’s a running joke in the functional programming community. Any Scala program can be written by combining the traverse function the correct number of times. This blog post is dedicated to that joke. In Rust, the Iterator trait defines a stream of values of a specific type. Many common types provide an Iterator interface. And […]

Rust: Of course it compiles, right?

I recently joined Matt Moore on LambdaShow. We spent some time discussing Rust, and one point I made was that, in my experience with Rust, ergonomics go something like this: Beginner: oh cool, that worked, no problem Advanced beginner: wait… why exactly did that work 99 other times? Why is it failing this time? I’m […]

Where Rust fits in your organization

Rust is a relatively new and promising language that offers improvements in software in terms of safety and speed. We’ll cover if adopting Rust into your organization makes sense and where you would want to add it to an existing software stack. Advantages of Rust Background Rust was originally created by Mozilla in order to […]

Avoiding duplicating strings in Rust

Based on actual events. Let’s say you’ve got a blog. The blog has a bunch of posts. Each post has a title and a set of tags. The metadata for these posts is all contained in TOML files in a single directory. (If you use Zola, you’re pretty close to that.) And now you need […]

Using Rust for DevOps tooling

A beginner’s guide to writing your DevOps tools in Rust. Introduction In this blog post we’ll cover some basic DevOps use cases for Rust and why you would want to use it. As part of this, we’ll also cover a few common libraries you will likely use in a Rust-based DevOps tool for AWS. If […]

HTTP status codes with async Rust

This blog post is a direct follow up on my previous blog post on different levels of async in Rust. You may want to check that one out before diving in here. Alright, so now we know that we can make our programs asynchronous by using non-blocking I/O calls. But last time we only saw […]

Different levels of async in Rust

First there was cooperative multiprocessing. Then there were processes. An operating system could run multiple processes, each performing a series of sequential, blocking actions. Then came threads. A single processes could spawn off multiple threads, each performing its own series of sequential, blocking actions. (And really, the story starts earlier, with hardware interrupts and the […]

Rust at FP Complete, 2020 update

At FP Complete, we have long spoken about the three pillars of a software development language: productivity, robustness, and performance. Often times, these three pillars are in conflict with each other, or at least appear to be. Getting to market quickly (productivity) often involves skimping on quality assurance (robustness), or writing inefficient code (performance). Or […]

Rust with DevOps Success Strategies

On February 2, 2020, one of FP Complete’s Lead Software Engineers—Mike McGirr—presented a webinar on using Rust for creating DevOps tooling. Webinar Outline FP Complete is hosting a functional programming webinar on, “Learn Rapid Rust with DevOps Success Strategies.” A beginner’s guide including sample Rust demonstration on writing your DevOps tools with Rust over Haskell. […]

Async Exceptions in Haskell, and Rust

Before getting started: no, there is no such thing as an async exception in Rust. I’ll explain what I mean shortly. Notice the comma in the title :). GHC Haskell supports a feature called asynchronous (or async) exceptions. Normal, synchronous exceptions are generated by the currently running code from doing something like trying to read […]