RSSAmplifier

Blog

Ed's Home Page

Programming and other misc

epage.github.ioRSS feed ↗29 posts

Latest posts

A Vision for Cargo

According to Stack Overflow, cargo is the most desired development tool . Many people attribute their choice of Rust to Cargo. I've heard from many people that Cargo is already great and that they can't think of any way it could be improved. I want to set our sights higher. And I want to hear your thoughts on what an ideal workflow would look like and how we might get there. This is just some…

toml v0.9

toml v0.9 is a near-complete rewrite with dramatic performance improvements, no_std support, and many other improvements. This is where I've disappeared to over the last 3 months, trying to wrap up a years-old experiment that has been "almost done" for these last 3 months, with use case after use case building up encouraging me to finish this up rather than my regularly scheduled Cargo work.

Are we GUI (build) yet?

"Are we GUI yet?" is a topic that frequently comes up within the Rust community. There are a lot of hard problems to solve, from the complexity of state management to something as easy to overlook as smooth resize . One problem I don't see discussed as often is a development and release pipeline that can handle the unique circumstances of each target platform. I met up with a bunch of application…

Winnow 0.5: The Fastest Rust Parser-Combinator Library?

Winnow is a parser-combinator library for Rust and 0.5 is now out. I last wrote about the 0.3.0 release, so I'll be covering all of the releases since then.

Iterating on Testing in Rust

With the release of rust 1.70, there was some surprise and frustration that unstable test features now require nightly , like all other unstable features in Rust. One of the features most affected is --format json which has been in limbo for 5 years . This drew attention to a feeling I've had: the testing story in Rust has been stagnating. I've been gathering my thoughts on this for the last 3…

clap v4.2, a Rust CLI argument parser

clap v4.2.0 is now out with styling of help descriptions! See the changelog for more details.

anstream: simplifying terminal styling

anstream is a new take on terminal styling for Rust and will be used in the upcoming clap 4.2 release. Quick links docs.rs crates.io repo

winnow = toml_edit + combine + nom

It is finally time to take the wraps off where I disappeared to over the last 6 months. Besides the family leave, I've mostly been chalking this up to working on toml_edit but one particular building block took up most of that time. I would like to introduce you to winnow , a fork of the venerable nom parser combinator library. For those that want to skip all the details, you can checkout the…

`toml` vs `toml_edit`

toml v0.6 is now out with a new parser and renderer, addressing several existing issues and ensuring compliance with the TOML 1.0 compliance tests. This was done by leveraging the toml_edit crate.

clap v4.1, a Rust CLI argument parser

clap v4.1.0 is now out! See the changelog for more details.

clap 4.0, a Rust CLI argument parser

We are excited to (pre-) announce clap 4.0! This release focuses on removing deprecated APIs and finishing what we couldn't do without breaking changes. For more details see the CHANGELOG (including the migration guide) and the documentation . This release builds on work done in the 3.x releases and can be worth catching up on them: The 3.1 release The 3.2 release Or the v3 CHANGELOG.md for the…

Clap 3.2: Last Call Before 4.0

With excitement and trepidation, I'm announcing the release of clap 3.2 . With clap 3.1, we discussed the need for a more open, extensible API and clap 3.2 represents one step in that direction. With two new builder API concepts, we are able to deprecate the following concepts: Arg::allow_invalid_utf8 Arg::validator , Arg::validator_os Arg::forbid_empty_values Arg::possible_values…

clap 3.1: A step towards 4.0

clap 3.1 is here! Clap is a CLI argument parser for Rust and the v3.1 releases focuses on API cleanup slated for clap 4.0. See the CHANGELOG for details. clap 3.0 was in development for 4 years and though we saw comparisons to Half-life 3 in response to the release, we also saw people who cited the long gaps between breaking releases as a motivation for using it. For clap to stay relevant we feel…

Minor Semver Issue

Is adding a function in a patch release a violation of semver ? Technically, yes but technical answers aren't always the right answers. This came up in a recent discussion focused on the relevant importance of setting the minimum patch version for a dependency. Some crates go so far as to never bump their minor version, like serde .

clap 3.0, a Rust CLI argument parser

I figured a great way to close out the year 2021 is to wrap up the long awaited clap 3.0 release ! Some major milestones along the way: Jan 24, 2018: The first commit in the v3-dev branch Aug 30, 2019: StructOpt 0.3 is released with better clap integration May 03, 2021: v3.0.0-beta.1 is released Dec 08, 2021: 3.0.0-rc.0 is released Dec 31, 2021: 3.0.0 is released Thanks to: kbknapp, pksunkara,…

A Journey in Optimizing `toml_edit`

tl;dr toml_edit is a format preserving TOML crate, allowing users to modify .toml files. Before: cargo init Cargo.toml cargo's Cargo.toml toml_edit 8.7us 271us toml_edit::easy 20.7us 634us After: cargo init Cargo.toml cargo's Cargo.toml toml_edit 4.0us 149us toml_edit::easy 5.0us 179us Target: cargo init Cargo.toml cargo's Cargo.toml toml-rs 4.7us 121us

Learnability of Rust

tl;dr As part of improving the learnability of Rust, I propose: The .crs file subset of cargo-script be brought into cargo We support converting .crs to full cargo projects with cargo init --from <script>.crs We collaborate on an ergonomics-focused standard-library-alternative, like eztd

Experiments with `pushgen`

Recently, there was an announcement for pushgen , a port of C++ transrangers to Rust with a follow up post from the author of transrangers . Seeing the performance numbers, I was curious what the experience was like with the different techniques compared in the followup and how the performance worked out in a real world application.

Liquid v0.20

liquid v0.20 resolves several planned breaking changes we've been holding off on. This doesn't make us ready for 1.0 yet but this closes the gap significantly. liquid-rust is a rust re-implementation of the liquid template engine made popular by the jekyll static site generator.

Reflecting on Errors in 2019

With people reflecting on Rust in 2019 and what they want to see in 2020, error handling has come up again: Rust in 2020, one more thing Thoughts on Error Handling in Rust Error Handling Survey

Speeding Up Rust Builds: Code-Gen Edition

tl;dr Cache your code-gen results with the codegenrs crate .

RustFest Parist Trip Report

I've been involved in the Rust community for about a year and a half now. What attracted me to Rust is that is looks like the first viable replacement for C++. It offers similar (actually better) protections than GCed languages and the full language is available in any environment, including exception-like error handling in the Windows kernel.

PyCon 2018 Trip Report

I went to with a coworker to PyCon this year ( videos ).

Redefining Failure

I recently got the chance to redo the error handling in two different crates I help maintain. For liquid , I decided to write the error types by hand rather than use something like error-chain . In the case of assert_cli , I decided to finally give failure a try.

Crate Management for #rust2018

Context: Call for Community Posts and other posts

Blog Transition

I'll post relevant items from my old blog. If you'd like to see all the old posts, go to eopage.blogspot.com

Off To A Shaky Start - LASIK and Nystagmus

My personal experience treating nystagmus

The Lone Star Hiking Trail

Trip/equipment report for the Long Star Hiking Trail

On Top of Utah - Hiking to Kings Peak

Trip/equipment report for Kings Peak in Utah