In stock
View Purchasing OptionsProject update 36 of 39
The 0.9.14 release of Xous includes numerous quality-of-life improvements for Precursor users.
vault
by ~100x by refactoring the item cache to work on a Vec
that is repeatedly sorted, instead of on a BTreeMap
that is sorted once and then referenced as a shared object. Turns out that repeatedly sorting data is far cheaper than shared references or copying data to the heap (as a way to avoid shared references). See PR #389 for an in-depth analysis.vault
password fields, as well as left/right cursor movement to call up an insertion point that can be used to insert and delete characters in the middle of a field.vault
(flips the deny key from F1 to F4)vault
to type usernames (in addition to passwords)Tall
font, and the rendering subsystem has been refactored to handle the larger 32-pixel sprites.Tall
, which should improve readability without sacrificing user prompts (i.e., dialog boxes should still fit on the screen).precursorupdater
where --config
argument would not quit and run an update insteadlibs/tls
.gdb-stub
on hardware is now quite reliable, thanks to some performance improvements by @xobs. Just remember that single stepping does not work on XIP images (and, by default now, apps are compiled as xip
)v2p
flag.new()
function. It's actually allowed to do this. So, @xobs has created the "deferred-init + Box" pattern to harden against this. Deferred-init refers to binding the address of the hardware structure to the interrupt handler after new()
has returned. This ensures that at least all the optimizations that may happen inside new()
are finalized. Additionally, wrapping the result of new()
inside Box()
ensures that the resulting structure is put on the heap. Because Box
also implements Pin
, the compiler won't muck with the address any further and should prevent future incompatibilities with Rust. The only place this pattern could not be applied is in the USB stack, because the USB crate we use expects to have an un-Box'd hardware management structure. However, deferred-init alone seems to be good enough, at least for now, to allow this to work.utralib
. If you're curious as to what's in the pipeline and taking most of my time, you can follow along here. Hardware is hard!ProcessStartup
where repr(C)
was missing, thanks to @vihaanjim for finding that subtle bug!That’s it for this release. I was fairly happy to see that my daily-use Precursor hit over 700 hours of uptime before I updated it to this release.
Happy hacking!
-bunnie