RSSAmplifier

Blog

Weiznich's Blog

blog.weiznich.deRSS feed ↗16 posts

Latest posts

Diesel Async 0.9

I'm happy to announce the release of diesel-async 0.9. This release changes how diesel-async expects AsyncConnection::transaction calls to be written, moving from using a closure returning a boxed Future to using proper async closures. Additionally, this release officially moves the GitHub repository from my personal space to the diesel-rs organization. As I'm one of the maintainers of…

Supporting `VIEW`s in Diesel

Prototype Fund is funding work to add support for querying SQL VIEW s from Diesel. As I'm slowly working through adding this feature to Diesel, I would like to use this blog post to publish some more context about this work. Adding VIEW support to Diesel Conceptually, the end result of this work will be pretty boring, as the "only" new thing that appears is a diesel::view! macro . This macro…

Diesel Async 0.7

I'm happy to announce the release of diesel-async 0.7. Most importantly this release includes compatibility with the recent Diesel 2.3 release. As part of this compatibility diesel-async now shares the prepared statement cache implementation with Diesel. This hopefully makes it more straightforward for both crates to benifit from improvements to this code without needing to port them to the…

Introducing cargo safe-publish

In this post I will introduce a new cargo safe-publish cargo subcommand which I have written to make the publication process of crates more reliable. I created this subcommand after attending the GitHub Secure Open Source Fund and learning a lot about how to successfully manage a secure open source project there. I would like to use this opportunity to thank GitHub again for being part of this…

Diesel Async 0.6

I'm happy to announce the release of diesel-async 0.6. This release is mostly a maintenance release that updates dependencies and incorporates bug files. As result of the dependency updates we reduced the number of dependencies used by diesel-async from 219 to 171. Additionally this release fixes a critical bug in how we track whether a connection has a open transaction or not. This bug could…

Cargo's missing stability guarantees

The Rust 2024 edition was recently published. It contains a lot of shiny new features. As always this was made possible by the work of many great people in the Rust project. This is usually a reason to celebrate. I personally see the release of the Rust 2024 edition with some disappointment as the edition again contains changes that can result in build failures. In my opinion, these changes are in…

Diesel: Window functions

As part of a NLnet NGI0 Zero grant I'm currently working on extending Diesel to support SQL window function calls. I would like to use this possibility to express my sincere thanks for this opportunity to all involved persons. Window functions are analytical SQL functions which turn values from one or more rows in a single value per row. They aggregate values while not aggregating the…

Extending the #[diagnostic] tool attribute namespace

Recap of the stabilization of the #[diagnostic] namespace This blog post aims to give an update on my recent work on Rust's #[diagnostic] tool attribute namespace. The namespace itself is the home for attributes that allow users to influence the diagnostic output given by the Rust compiler in case of a compilation error. The namespace and it's first attribute was stabilised with Rust…

Diesel Async 0.5

I'm happy to announce the release of diesel-async 0.5.0. This release includes two new features. It introduces a SyncConnectionWrapper struct that provides an AsyncConnection implementation for sync diesel connections. In addition it restores compatibility with diesel 2.2 including the new Instrumentation feature there. Be sure to checkout the full Change log for all details . To support…

Mysqlclient-sys 0.3

I'm happy to announce the release of mysqlclient-sys 0.3.0. mysqlclient-sys is a major dependency of Diesel, the safe, extensible ORM and Query Builder for Rust. The crate provides Rust bindings to libmysqlclient, the official C library for connection to MySQL databases. Diesel uses these bindings internally to implement MysqlConnection . It's a major building block that allows us to…

Problems around modelling an asynchronous API for database transaction in Rust

This blog post is motivated by the recent Asynchronous clean-up blog post written by withoutboats. In this post I will present how the described problem affects the design of a sound API for handling SQL database transactions. Basic problem A SQL database transaction is used to encapsulate several queries to be handled as a single atomic instruction block by the underlying database system. That…

Pq-sys 0.5.0

I'm happy to announce the release of pq-sys 0.5.0. pq-sys is a major dependency of Diesel, the safe, extensible ORM and Query Builder for Rust. The crate provides Rust bindings to libpq, the official C library for connection to PostgreSQL databases. Diesel uses these bindings internally to implement PgConnection . It's a major building block that allows us to provide a highly performant…

A non-overlapping type level contains operation for heterogeneous lists

Problem At EuroRust 2023 Nathanial Lattimer presented a talk about "Rust, but Verify - Compile-Time Authorization". This talk demonstrated how to use type states to address common authorization problems. As part of the solution the talk introduced a type level list of already checked authorizations, which later can be used to allow accessing certain functions. The talk used the following construct…

Diagnostic namespace

Over the course of the last year I've worked on ways to improve compiler error messages emitted by trait heavy crates. This work was funded by the Rust Foundation . I would like to thank the Rust Foundation for providing the opportunity to work on this project. This blog post summarises the progress made in the last months. Problem description The rust compiler has the reputation to generate…

Diesel Async 0.4

I'm happy to announce the release of diesel-async 0.4.. This release includes two new features. It improves the configurability of our connection pooling solutions. In addition to these enhancements, this version also introduces a new feature that allows users to transform an async diesel_async::AsyncConnection into a sync diesel::Connection . To support future development efforts, please…

Imprint

Contact E-Mail: blog AT weiznich DOT de Mail: Georg Semmler C/O GiGa Infosystems GmbH Frauensteiner Straße 59 09599 Freiberg Germany