Tryst::RepeatingTimer
A cancellable repeating timer that fires on the main thread.
Created via App#every. Reschedules itself after each tick using Tcl's
after command. The block runs in the event loop, so it must
complete quickly to avoid blocking the UI.
Tracks timing drift: if a tick fires significantly late (more than 2x the interval), a warning is printed to stderr. This helps catch blocks that are too slow for the requested interval.
One tick never gets that check: the first one, when the timer was armed while no event loop was running (App#event_loop_running?). Drift is measured from the moment the timer arms, so a timer created during startup can only report how long the rest of startup took before #mainloop began - "the loop wasn't pumping yet", which is indistinguishable from "the loop was blocked" if you look at drift alone. Warning about it is a guaranteed false positive on every application that builds its UI before entering the loop, so it's skipped instead. Everything from the second tick on is measured normally, since by then the loop is what rearmed the timer.
@see App#every