@occhiolist TBH, I had to do a web search to find out what systemd-homed even is :-) So I guess I don’t possess that information.
My guess is that systemd-homed should not need to support at least when having LVM on top. User space is unaware that there even is encryption for the most part (except tools that specifically communicate with firmware/UEFI/MOK for e.g. grabbing a recovery key). For me it is pretty hard to make a corner case but I don’t have hard data. on this one. Hope this helps.
I switched to #helix editor because three advantages weight me more than disadvantage of having to learn away for #vim shortcuts:
init.lua (and that big pile of plugins).So for the price of few weeks inconvenience I can stop spending time on text editor configuration and/or figuring out on how to install it.
I used #vim and later on neovim fo the period 1998-2023, even before using Linux. I switched to vim in MS-DOS from text editor called #QEDIT :-)
I think I fixup lookup tables for escaping #zmodem traffic by intercepting traffic from lrzsz with “defacto” parameters, i.e. send large chunk of uniform distributed random data. That way I can be sure that I have all the cases, including those not in the specification form 1988.
Later on I can use that as a CI test for my crate. Sort of fuzzing approach. I just need to record all bytes that follow ASCII 24 and that builds my table.
I’ve been using Rust professionally way or another for about 2 years now and at least this and also lack of e.g. BufRead abstraction (sorry trait) has been something that I’ve been cursing to this day because it enforces you to do totally unproductive boilerplate and glue for everything you do with Rust. So definitely a huge improvement is this… Doing some RidiculousError type for every no_std thing is just terrible IMHO. For 95% of stuff I’d rather use just predefined error codes. It also improves productivity by factors when all your crates communicate with same error codes.
Abstraction only ever make sense if they have some meaningful functional use. Otherwise, they are just code bloat.
embedded-io and embedded-io-async seem to be something i would want to use also for crates meant to be used with std just to future-proof portability. great that there is solution for std::io issue finally. for me the disability to e.g. not being able to use std::io::Error in no_std code has been a huge turndown.
and since these are provided by the Rust HAL team there’s some trust for long-term lifespan. 3rd party solutions in the basic error types and BufRead is a maintenance risk imho.
this is good enough as far as i’m concerned
So I did a pull request to the hex crate:
https://github.com/KokaKiwi/rust-hex/pull/83
This sort of scenario is not too uncommon in data flows especially when you want to squeeze everything bit out. E.g. for something like #ZMODEM you’d prefer the implementation to scale from microcontroller to Intel Xeon.
Usage example in my crate:
if encoding == Encoding::ZHEX {
hex::decode_in_slice(&mut out).or::<io::Error>(Err(ErrorKind::InvalidData.into()))?;
out.truncate(out.len() / 2);
}