-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Kroneum #21
Add Kroneum #21
Conversation
Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @ryankurte (or someone else) soon. If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes. Please see the contribution instructions for more information. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks like a great project, thanks for submitting it!
bors r+
21: Add Kroneum r=adamgreig a=azasypkin Hey, I'd like to showcase my Kroneum device. It's an experimental (yet), minimalist, accessible (no GUI) and fully open source (both in code and hardware) time tracker device. * Source code: https://github.com/azasypkin/kroneum * License: https://github.com/azasypkin/kroneum/blob/master/LICENSE * Software: https://github.com/azasypkin/kroneum/tree/master/sw (firmware + CLI tool) * Hardware: https://github.com/azasypkin/kroneum/tree/master/hw/pcb/Rev_0.5 **NOTE:** I've linked to the rendered photo even though repository contains photo of real assembled device (it just looks better than the photo taken with my not-the-best-in-class phone camera). Would be happy to hear any improvement suggestions even if it's not accepted, thanks! ---- # Evaluation guidelines ## Hard requirements - [x] It's an application (binary crate) that runs on embedded hardware (Single Board Computer, development board or custom PCB). - **YES** (custom PCB + custom enclosure) - [x] The main logic of the application must be written in Rust. - **YES** (including USB CLI tool) - [x] The source code must be public. Licensing terms are unimportant. - **YES** (including PCB and enclosure design files) ## Bonus points - [x] The project is unlike the projects currently on display. - **YES** (it seems) - [x] The documentation includes instructions on how to build the program, or the firmware can be built with just `cargo build`. - **YES** - [x] The repository has a CI setup. - **YES** (very basic one though) - [x] The application compiles on stable. - **YES** - [ ] The application code is free from `unsafe` code and all `unsafe` code has been pushed to libraries that only expose a safe API. - **NO** (still have a bunch of cases where I couldn't find a good way to get rid of `unsafe`) - [x] Code that's not target specific, if any, has unit tests. - **YES and NO** (target agnostic [api](https://github.com/azasypkin/kroneum/tree/master/sw/firmware/api) crate has a number of unit tests, but not everything is covered) - [x] Support code, if any, is documented. - **YES** (via code comments) ## Penalties - [x] The application contains potential soundness issues. For example, using `mem::transmute`, unchecked creation of singletons and unchecked use of `static mut` variables are huge red flags. - **YES and NO** (still have one root `static Mutex<RefCell>`, cannot migrate to and not really happy about `cortex-m-rtfm` 🤷♂️ ) - [x] Explicit panicking (e.g. `unwrap`) is used instead of proper error handling. However, note that `unreachable!` is OK if properly used. - **YES** (have a few `.expect(..)` at the `main` during device bootstrap stage) Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com>
Build succeeded |
Thanks for the quick review! |
Hey,
I'd like to showcase my Kroneum device. It's an experimental (yet), minimalist, accessible (no GUI) and fully open source (both in code and hardware) time tracker device.
NOTE: I've linked to the rendered photo even though repository contains photo of real assembled device (it just looks better than the photo taken with my not-the-best-in-class phone camera).
Would be happy to hear any improvement suggestions even if it's not accepted, thanks!
Evaluation guidelines
Hard requirements
It's an application (binary crate) that runs on embedded hardware (Single Board Computer, development board or custom PCB). - YES (custom PCB + custom enclosure)
The main logic of the application must be written in Rust. - YES (including USB CLI tool)
The source code must be public. Licensing terms are unimportant. - YES (including PCB and enclosure design files)
Bonus points
cargo build
. - YESunsafe
code and allunsafe
code has been pushed to libraries that only expose a safe API. - NO (still have a bunch of cases where I couldn't find a good way to get rid ofunsafe
)Penalties
The application contains potential soundness issues. For example, using
mem::transmute
, unchecked creation of singletons and unchecked use ofstatic mut
variables are huge red flags. - YES and NO (still have one rootstatic Mutex<RefCell>
, cannot migrate to and not really happy aboutcortex-m-rtfm
🤷♂️ )Explicit panicking (e.g.
unwrap
) is used instead of proper error handling.However, note that
unreachable!
is OK if properly used. - YES (have a few.expect(..)
at themain
during device bootstrap stage)