-
Notifications
You must be signed in to change notification settings - Fork 58
Trimming required dependencies to avoid unsafe code #122
Description
Hi!
I'm looking at seeing if I can use rubble to provide initial BLE support for TockOS. I'm not affiliated with TockOS, I just want to use BLE support in Tock. So far, I've just been writing code locally and talking a bit with the Tock developers.
My question is: how open would you be to removing deps or making them optional, so that the main rubble crate with no-default-features is unsafe-free?
Specifically, I'd be interested in writing the following changes:
- replace byteorder in favor of std methods
- make
SimpleQueue+ heapless optional - make all security features + dependencies (p256, ring, and rand_core) optional
- make
uuiddependency optional
These would all be in the attempt to remove unsafe code from the features necessary for insecure connections.
The TockOS project strongly favors minimal dependency trees, and #![forbid(unsafe)] crates, so that's what I'd be aiming for. I realize that this might not be inline with rubbles goals - if it isn't, I think I can still make this work - it would just involve vendoring rubble into tock rather than depending on it. But that would mean not contributing my work back here, and I'd like to avoid that if possible.
I might end up needing to vendor rubble anyways, since I'll eventually need a non-blocking BLE interface - I don't know how possible this is without big changes, or without removing the blocking interface. However, if you'd be open to some or all of these changes, I'd much rather make PRs & comply with reviews/etc. than keep the changes local. Thanks!