blob: 17c8d8176302b6bdd647c894b6295387bef72238 [file] [view]
# Releases
## 0.2.0 (WIP)
- Many functions are asynchronous
- To make 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 `core::executor::block_on(value)` to retrieve the `value`
- `syscalls::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 reason
- Commands are no longer `unsafe`
- The low-level syscalls have been moved to `syscalls::raw`
- `syscalls::subscribe_ptr` becomes `syscalls::raw::subscribe`
- `syscalls::allow_ptr` becomes `syscalls::raw::allow`
- Targets without support for atomics can be built
- Most API functions, including `main()`, return a `Result<T, TockError>`
- The timer now supports to be used simultaneously. To make this safe, `TimerDriver` is now a singleton.
## a8bb4fa9be504517d5533511fd8e607ea61f1750 (0.1.0)
- First and highly experimental `libtock-rs` API