A little over 2 months ago I started a Patreon page to see if I could gain some financial support for my open source work (with the goal of doing more such work). I posted an update on Patreon after 10 days to talk about what I had been up to, so I figured it was time for an update. Instead of posting it to Patreon, I'm posting these updates to my blog from now on; this gives me full control over the posts and will hopefully boost the update frequency of the blog a little bit.
Askama
Askama is the type-safe Jinja-like Rust template engine I created. Askama 0.7.1 was released in on July 23rd with the following improvements:
- Finished the support for multiple template directories that "mash" initially contributed (as discussed in the last update) by polishing it up a bit.
- Worked with Ryan McGrath on an implementation of the actix-web Responder trait for Template types in #104. (Enabled by with-actix-web.)
- Enabled Template derives for unit structs and enums. These previously caused a panic, but I decided that it was okay to allow them after a bug report.
- Improved documentation around filters, specifically user-defined filters.
Since that release, botika has contributed a few fixes around nested macro scopes (possibly a regression from 0.6), which I will release soon.
Quinn
Although Quinn (my nascent QUIC implementation in Rust) saw little progress in code over the past two months, I still have good hopes for the future. I talked to Benjamin Saunders about merging his quicr implementation with Quinn, and it looks like we will move forward with that. For now we'll likely keep the Quinn name, but start from Benjamin's code base. Since building and maintaining a QUIC implementation is a lot of work it probably doesn't make much sense to have two, and I think merging these projects is for the best.
Gentoo
- Updated the Rust ebuilds to 1.27.0 and 1.28.0. As discussed in the previous update, these versions now allow installing the cargo, rustfmt and rls components as built by the Rust build system (or the binaries in the case of rust-bin). As upstream makes the distribution more monolithic, this will make it easier to get updates into the Gentoo repository.
- Introduced a new virtual/cargo ebuild to abstract over the cargo builds installed by dev-lang/rust, dev-lang/rust-bin, and dev-util/cargo.
- Updated the CouchDB ebuild to 1.7.2 after a vulnerability was reported in 1.7.1. This was the last CouchDB release in the 1.x range, and since another vulnerability was disclosed, 1.7.2 is known to be vulnerable. I have been dissatisfied with the direction of the project, so I've finally removed myself as a Gentoo CouchDB maintainer. No one has stepped up, so I'll start the process for having CouchDB removed from the Gentoo repository soon.
- Updated the ripgrep ebuild to 0.9.
abna
In June, I released a tiny Python library called abna that will log into the Dutch ABN Amro bank's web interface and download your transactions for you. I forgot to mention it in the previous update, so will expand on it a little.
It's been a long-standing annoyance for me that automating this process was impossible. For a long time, the web interface used a hardware token which relies on debit card access and punching in your PIN code. However, in recent years they've added a five-digit so-called soft token that enables limited access to the account, including seeing past account mutations. In June, I decided to reverse engineer their login process and figured out the code to support it (spoiler alert: it involves some RSA encryption).
In July, there was a nice PR from Ivan Vasić to allow downloading the mutations for another account than the login account, which I promptly merged and released as 0.2 after improving the packaging situation a little more.
Assorted other work
- rnc2rng got an issue comment talking about converting a schema for SVG. I went and implemented a number of things from the compact syntax spec that I hadn't gotten around to and asked the commenter for feedback. I haven't heard anything back, so perhaps I'll just release what I have.
- For a client project, I worked on a GraphQL API server in Rust. In order to cut down on duplicate dependencies for that project, I submitted pull requests to update syn and quote for diesel-derive-newtype and juniper.
- imap-proto got a pull request to improve compatibility with a particular IMAP server which got merged after some back and forth.
- template-benchmarks-rs added benchmarks for ructe contributed by Brendan Hansknecht and some further tweaks from Vincent Prouillet (author of Tera). I added charts to the README to replace the table of numbers (although Vincent then proposed adding the numbers back -- and we did).
- I tweeted a poll on Rust source code order which turned out to be quite popular. I hope to write a blog post soon to explain my position on the issue (I think main() should come first).
Many thanks to my patrons; I hope this is worthy of your support.