holy dang. I keep running into #miette in the weirdest places. It keeps spreading!
Today: I noticed miette error messages in a new web framework while reading their blog post: https://www.lpalmieri.com/posts/pavex-progress-report-01/
And then while browsing through the dependents list for miette after that, I found that the cargo tooling for AWS Lambda is apparently using it, too: https://crates.io/crates/cargo-lambda/0.17.1/dependencies
huh. people are using my thing?
omg it works! My #kdl #KQL engine works beautifully!
So to summarize:
a > b 👉🏻 any child "b" of node "a"
a >> b 👉🏻 any descendant "b" of node "a"
a + b 👉🏻 any "b" that immediately follows an "a" node under the same parent
a ++ b 👉🏻 any "b" anywhere after "a" under the same parent.
I've also got multiple parallel selectors working (with the `,` operator, just like CSS), and some magic around the toplevel `scope()` selector that lets you do things like `scope() > a` to make sure you're selecting only direct children of the *current* document/node you're querying from.
Whew. It's been a couple of days but this was really fun! 💯 would parse again.
Oh and it has all the nice error reporting you would expect from a tool that uses #miette 😉
#kdl #kql #miette #rust #rustlang
new #miette release just dropped, lads: https://github.com/zkat/miette/releases/tag/v5.5.0
Technically a semver-minor but mostly just fixing a panic and some thorns on the side. Nothing too big.
I'm still buzzing from spending a good chunk of time this weekend just poking at a #rust project that I thought was going to be dead forever. Sometimes it's nice to just hack on something for fun with no pressure involved.
To top it all off, I spent literally all of that time just *tidying* the codebase up, moving error handling over to #miette, moving some other stuff to external libraries, updating dependencies, and just generally modernizing things. Didn't even work on any new features yet lol.
Incidentally, I was pleased to find out that Cargo 1.64.0 (the most recent version!) finally shipped workspace dependency versions, so you can define the dependency version once, in your workspace, and then use `mydep = { workspace = true }` in your crates, which is SUPER HANDY and I had been hoping for this so bad.