Releases
0.2.0 (WIP)
Comprehensive Changes
- Many functions are asynchronous
- To create an
async main function you can use the attribute #[libtock::main] - To retrieve the value of an asynchronous
value, use value.await - This is only possible within an
async fn, so either- Make the caller
fn of .await an async fn - Not recommended: Use
libtock::executor::block_on(value) to retrieve the value
- Most API functions, including
main(), return a Result<T, TockError> - All drivers can exclusively be retrieved by
retrieve_drivers which returns a Drivers singleton. Drivers can be shared between different tasks only if it is safe to do so. - The low-level functions have been moved to a new crate called
libtock-core. This crate is intended to be less experimental and more stable.
Changed APIs
- The basic APIs have been made consistent. They are initialized via driver factories and no longer require a
WithCallback object, s.t. the callback subscription is more intuitive. The affected APIs are:- LEDs
- Buttons
- GPIO
- Temperature
- ADC (partially)
- The timer API now supports concurrent sleep operations
Syscalls
syscalls::subscribe is actually usablesyscalls::yieldk_for is no longer available- Yielding manually is discouraged as it conflicts with Rust's safety guarantees. If you need to wait for a condition, use
futures::wait_until and .await.
syscalls::yieldk has become unsafe for the same reasonsyscalls::command is no longer unsafe- The low-level syscalls have been moved to
syscalls::rawsyscalls::subscribe_ptr becomes syscalls::raw::subscribesyscalls::allow_ptr becomes syscalls::raw::allow
Miscellaneous
- Flashing examples is no longer restricted to the nRF52 DK board
./run_example.sh has been deleted- Instead, use
PLATFORM=<platform> cargo r<arch> <your_app>. This will build the app for your CPU architecture and platform-specific memory layout and flash it via J-Link to your board
- Targets without support for atomics can be built
- The
TockAllocator is no longer included by default and needs to to be opted-in via --features=alloc hardware_test.rs is now called libtock_test.rs to make clear that the intent is to test the correctness of libtock-rs, not the hardware or the kernel- The panic handler can now be customized using the
custom_panic_handler feature - The error alloc handler can now be customized using the
custom_alloc_error_handler feature
a8bb4fa9be504517d5533511fd8e607ea61f1750 (0.1.0)
- First and highly experimental
libtock-rs API