#compile-time #duration #instant #const #run-time #time

no-std fugit

Time library for embedded targets with ease-of-use and performance first

11 releases

0.3.7 Jun 6, 2023
0.3.6 Jun 23, 2022
0.3.5 Feb 14, 2022
0.3.3 Dec 25, 2021
0.1.4 Oct 31, 2021

#30 in Embedded development

Download history 17040/week @ 2024-10-05 16633/week @ 2024-10-12 16365/week @ 2024-10-19 14602/week @ 2024-10-26 16275/week @ 2024-11-02 13425/week @ 2024-11-09 14570/week @ 2024-11-16 14020/week @ 2024-11-23 14547/week @ 2024-11-30 14212/week @ 2024-12-07 18078/week @ 2024-12-14 8852/week @ 2024-12-21 11151/week @ 2024-12-28 16804/week @ 2025-01-04 19542/week @ 2025-01-11 12860/week @ 2025-01-18

61,568 downloads per month
Used in 240 crates (113 directly)

MIT/Apache

150KB
2.5K SLoC

fugit

fugit provides a comprehensive library of Duration and Instant for the handling of time in embedded systems, doing all it can at compile time.

This library is a heavily inspired of std::chrono's Duration from C++ which does all it can at compile time.

Aims

  • no_std library with goals of user-friendliness and performance first
    • All methods are const fn that can be (i.e. non-trait methods)
    • Use no traits, concrete types all the way for maximum const-ification
    • Operations are supported between different bases and backing storages instead of implementing custom traits
    • All constants needed for comparing or changing timebase are guaranteed compile time generated
  • Support for both u32 and u64 backing storage with efficient instruction lowering on MCUs
    • On Cortex-M3 and up: no soft-impls pulled in for both u32 and u64 except when changing base on u64
    • Comparisons on u32 and u64 do not use division, only changing base with all constants calculated at compile time
  • Selection of base happens at compile time
    • A common problem is that run time changing of base robs us of a lot of optimization opportunities, but since there are no traits and short-hands select the correct base at compile time.

Dependencies

~165KB