Which io crate to use on embedded systems

Not having Read and Write traits in no_std is a known and common problem. Luckily, there libraries to help us out. Unfortunately, they are many and I have trouble picking one. What I found so far:

  • core_io, which is a clone of std::io but with all allocating features optional/omitted
  • core2, kind of the same but different?
  • bare_io looks like the former name of core_io, but then why didn't they yank all releases or at least put a deprecation warning/redirection? (Also, I might be wrong)
  • embedded_hal seems to be widely used, but it has many Read and Write traits depending on context which is weird. (It makes sense from a hal perspective, but not for some other tasks)
  • not_io, at which point I gave up the search and decided to ask for help

Perhaps specify the criteria (or at least target platform) for picking a specific library to get some better answers? There's likely a reason why there's so many options, and it might just be that some are better suited to specific use cases.