Repository navigation
- The Windows setup window shows a cronstable icon in its title bar and on
its taskbar button: the pendulum from the logo, on the dark tile of the
iOS app icon. The setup executable, the installed application entry, and
User Account Control (UAC) prompts keep the full cronstable logo. - The
devextra is the one development dependency list: tox and CI install
it, aspip install -e ".[dev]"does. The two generated lists that tox
also reads are inrequirements/:min.txtfortox -e mindepsand
dev-freethreaded.txtfor Python 3.14t.
Performance compared with 1.2.61
Regression check: passed. No compared metric exceeded its regression thresholds.
Both versions were benchmarked in alternating rounds on the same machine. Results use the lowest runtime and median memory usage across rounds. Negative changes mean less time or memory; positive changes mean more.
Benchmark comparisons (100 metrics)
Noise (±) estimates run-to-run variation across both versions. A result fails the regression check only if the increase exceeds its percentage limit, its minimum absolute change, and 2 times the noise estimate. n/a means too few rounds to estimate noise; the other limits still apply.
The Regression limit column accounts for the minimum absolute change, expressed as a percentage of the baseline. Not enforced marks informational metrics.
Startup times include Python startup overhead. Their percentage changes exclude that overhead when it can be measured separately and leaves a positive runtime in both versions.
| Benchmark | 1.2.61 | 1.2.62 | Change | Noise (±) | Regression limit |
|---|---|---|---|---|---|
| loop.stall_metrics_2000 | 28.94 ms | 27.03 ms | -6.6% | 4.6% | Not enforced |
| state.list_records_2k | 23.29 ms | 22.67 ms | -2.7% | 2.6% | 42.93% (declared 15%) |
| startup.import_cronexpr | 25.57 ms | 25.73 ms | +2.5% | 2.7% | 25% |
| webui.radar_walk_500 | 410.0 us | 400.0 us | -2.4% | 1.3% | 487.8% (declared 25%) |
| state.depends_on_past_gate | 3.06 ms | 3.13 ms | +2.2% | 1.0% | 65.34% (declared 25%) |
| mem.gc_pause_100k | 130.49 ms | 133.20 ms | +2.1% | 3.8% | 25% |
| cronexpr.next_dst_2k | 40.58 ms | 41.41 ms | +2.0% | 2.4% | 24.64% (declared 15%) |
| state.boot_rehydrate_populated | 40.14 ms | 39.41 ms | -1.8% | 1.0% | 24.91% (declared 15%) |
| schedule.next_fires_2k | 25.36 ms | 24.92 ms | -1.7% | 2.2% | 39.43% (declared 15%) |
| cronexpr.parse_complex | 24.60 ms | 24.20 ms | -1.6% | 2.2% | 40.65% (declared 15%) |
| state.gc_sweep_2k_streams | 33.11 ms | 32.63 ms | -1.5% | 2.2% | 45.3% (declared 25%) |
| config.jobconfig_3k | 67.54 ms | 68.49 ms | +1.4% | 2.5% | 15% |
| schedule.due_pass_100k | 16.20 ms | 15.97 ms | -1.4% | 1.7% | 61.73% (declared 25%) |
| loop.idle_wake_rate | 21.92 ms | 21.62 ms | -1.4% | 2.4% | 25% |
| config.reload_warm_include_50 | 100.37 ms | 99.01 ms | -1.4% | 0.9% | 25% |
| dag.plan_claim_10k | 13.54 ms | 13.71 ms | +1.3% | 3.5% | 73.87% (declared 15%) |
| schedule.cold_build_100k | 494.83 ms | 488.45 ms | -1.3% | 1.6% | 15% |
| job.report_noop_100k | 52.84 ms | 52.17 ms | -1.3% | 3.5% | 15% |
| redact.clean_20k | 20.73 ms | 20.49 ms | -1.2% | 3.0% | 48.23% (declared 15%) |
| state.list_records_warm | 107.82 ms | 106.58 ms | -1.2% | 0.9% | 15% |
| schedule.lint_250_zoned | 7.87 ms | 7.78 ms | -1.1% | 2.0% | 127% (declared 15%) |
| tui.log_search_20k | 15.39 ms | 15.23 ms | -1.0% | 1.2% | 64.99% (declared 15%) |
| dag.build_layered_10k | 49.99 ms | 49.50 ms | -1.0% | 1.6% | 20% (declared 15%) |
| cluster.job_owner_2k | 57.90 ms | 58.47 ms | +1.0% | 2.6% | 17.27% (declared 15%) |
| state.append_1k | 127.50 ms | 126.25 ms | -1.0% | 1.1% | 39.22% (declared 15%) |
| job.stream_capture_120k | 35.46 ms | 35.80 ms | +1.0% | 2.3% | 28.2% (declared 15%) |
| state.lease_renew_200 | 50.44 ms | 50.91 ms | +0.9% | 1.0% | 99.13% (declared 25%) |
| loop.stall_completions_500 | 10.17 ms | 10.08 ms | -0.9% | 0.9% | 49.14% (declared 25%) |
| prometheus.render_500 | 17.11 ms | 17.25 ms | +0.8% | 1.9% | 58.45% (declared 15%) |
| cronexpr.test_match_200k | 25.51 ms | 25.31 ms | -0.8% | 1.9% | 39.2% (declared 15%) |
| ical.render_500x7d | 51.33 ms | 51.73 ms | +0.8% | 0.8% | 19.48% (declared 15%) |
| cronexpr.occurrences_1k | 13.92 ms | 14.03 ms | +0.8% | 1.8% | 71.83% (declared 15%) |
| config.parse_crontab_1k | 12.69 ms | 12.60 ms | -0.8% | 0.9% | 78.77% (declared 15%) |
| schedule.reseed_local_20k | 94.59 ms | 93.90 ms | -0.7% | 1.8% | 15% |
| webui.render_fleet_15x400 | 23.77 ms | 23.94 ms | +0.7% | 0.6% | 25% |
| json.roundtrip_orjson_3k | 208.06 ms | 206.62 ms | -0.7% | 0.6% | 15% |
| config.parse_yaml_3k | 2.004 s | 1.991 s | -0.7% | 2.6% | 15% |
| dag.advance_quiescent_chain | 70.89 ms | 70.42 ms | -0.7% | 0.5% | 25% |
| state.fanout_gather_100 | 10.16 ms | 10.22 ms | +0.6% | 3.2% | 98.41% (declared 25%) |
| json.roundtrip_3k | 582.72 ms | 579.17 ms | -0.6% | 1.2% | 15% |
| dag.adopt_scan_500 | 102.02 ms | 101.40 ms | -0.6% | 0.7% | 25% |
| fingerprint.job_set_id_10k | 304.60 ms | 306.37 ms | +0.6% | 1.1% | 15% |
| cronexpr.next_simple | 38.38 ms | 38.60 ms | +0.6% | 1.8% | 26.06% (declared 15%) |
| config.reload_gc_100k | 2.470 s | 2.456 s | -0.5% | 1.1% | 25% |
| redact.secrets_5k | 20.60 ms | 20.49 ms | -0.5% | 1.1% | 48.54% (declared 15%) |
| dag.list_runs_warm | 13.05 ms | 12.98 ms | -0.5% | 1.2% | 25% |
| tui.drawer_paint_5k | 105.22 ms | 105.76 ms | +0.5% | 0.7% | 15% |
| cluster.fleet_view_15x400 | 84.43 ms | 84.86 ms | +0.5% | 1.0% | 25% |
| mcp.handle_200 | 153.78 ms | 154.52 ms | +0.5% | 0.7% | 15% |
| resources.monitor_stop_100 | 294.05 ms | 292.72 ms | -0.5% | 1.5% | 25% |
| redact.adversarial_10k | 36.19 ms | 36.35 ms | +0.4% | 2.0% | 27.63% (declared 15%) |
| state.kv_roundtrip_200 | 56.12 ms | 56.36 ms | +0.4% | 1.1% | 17.82% (declared 15%) |
| schedule.reseed_100k | 203.52 ms | 202.68 ms | -0.4% | 1.4% | 15% |
| dag.mapped_drain_256 | 19.64 ms | 19.72 ms | +0.4% | 1.0% | 50.92% (declared 25%) |
| dag.finish_fanin_1k | 3.36 ms | 3.34 ms | -0.4% | 0.7% | 149% (declared 25%) |
| startup.version | 53.93 ms | 54.01 ms | +0.4% | 0.2% | 25% |
| state.mutate_document_1k | 143.67 ms | 144.21 ms | +0.4% | 0.7% | 34.8% (declared 25%) |
| webapi.sse_burst_20k | 46.06 ms | 45.91 ms | -0.3% | 1.2% | 15% |
| startup.python_baseline | 17.27 ms | 17.22 ms | -0.3% | 1.3% | Not enforced |
| state.artifact_get_newest | 21.74 ms | 21.81 ms | +0.3% | 1.8% | 25% |
| schedule.duplicates_20k | 17.42 ms | 17.36 ms | -0.3% | 3.5% | 57.41% (declared 15%) |
| state.derive_max_cold | 19.95 ms | 20.01 ms | +0.3% | 1.0% | 50.12% (declared 15%) |
| dag.build_chain_10k | 29.03 ms | 28.94 ms | -0.3% | 0.5% | 34.45% (declared 15%) |
| schedule.suggest_slot_5k | 4.39 ms | 4.41 ms | +0.3% | 0.9% | 227.6% (declared 15%) |
| startup.job_set_id_100 | 227.77 ms | 227.09 ms | -0.3% | 2.9% | 25% |
| webui.render_term_5k | 108.30 ms | 108.60 ms | +0.3% | 0.9% | 25% |
| state.list_documents_600 | 56.06 ms | 56.21 ms | +0.3% | 1.5% | 21.41% (declared 15%) |
| loop.stall_jobs_500 | 20.89 ms | 20.84 ms | -0.3% | 0.8% | Not enforced |
| startup.validate_config_100 | 221.58 ms | 221.00 ms | -0.3% | 1.4% | 25% |
| webapi.gzip_body_500 | 63.78 ms | 63.95 ms | +0.3% | 1.0% | 15% |
| state.derive_max_warm | 146.36 ms | 146.67 ms | +0.2% | 0.6% | 15% |
| statsd.emit_2k | 12.93 ms | 12.95 ms | +0.2% | 1.1% | 77.35% (declared 25%) |
| dag.advance_quiescent_1k | 72.41 ms | 72.27 ms | -0.2% | 0.4% | 25% |
| cronexpr.next_complex | 15.71 ms | 15.68 ms | -0.2% | 1.0% | 63.67% (declared 15%) |
| dag.list_dags_warm | 1.09 ms | 1.09 ms | -0.2% | 1.6% | 183.9% (declared 25%) |
| schedule.pressure_20k_48h | 16.61 ms | 16.64 ms | +0.1% | 2.1% | 60.2% (declared 15%) |
| tui.log_restyle_5k | 31.38 ms | 31.42 ms | +0.1% | 1.7% | 31.87% (declared 15%) |
| startup.import_daemon | 179.96 ms | 179.71 ms | -0.1% | 1.2% | 25% |
| config.parse_yaml_300 | 200.69 ms | 200.93 ms | +0.1% | 0.7% | 15% |
| config.reload_warm_50 | 46.65 ms | 46.59 ms | -0.1% | 1.6% | 25% |
| state.artifact_list_churn | 1.48 ms | 1.48 ms | -0.1% | 3.2% | 338.1% (declared 25%) |
| webapi.auth_scope_20k | 88.57 ms | 88.66 ms | +0.1% | 1.4% | 15% |
| webapi.jobs_payload_500 | 50.81 ms | 50.85 ms | +0.1% | 1.9% | 19.68% (declared 15%) |
| push.seal_500 | 90.58 ms | 90.52 ms | -0.1% | 0.8% | 15% |
| webui.render_rows_500 | 17.10 ms | 17.11 ms | +0.1% | 1.0% | 25% |
| startup.import_config | 95.96 ms | 95.94 ms | +0.0% | 0.4% | 25% |
| cluster.parse_summaries_6k | 86.72 ms | 86.75 ms | +0.0% | 0.9% | 15% |
| config.interp_2k | 66.03 ms | 66.01 ms | -0.0% | 1.0% | 15% |
| tui.dag_graph_paint_2k | 228.23 ms | 228.21 ms | -0.0% | 1.4% | 15% |
| mem.rss_daemon_import | 37.48 MB | 37.48 MB | -0.0% | 0.2% | 25% |
| cronexpr.parse_simple | 44.05 ms | 44.05 ms | -0.0% | 3.5% | 22.7% (declared 15%) |
| webui.log_count_5k | 100.0 us | 100.0 us | +0.0% | 0.0% | 2000% (declared 25%) |
| webui.append_line_5k | 15.0 us | 15.0 us | +0.0% | 4.7% | 25% |
| webui.week_walk_500 | 2.85 ms | 2.85 ms | +0.0% | 5.0% | 70.18% (declared 25%) |
| webapi.jobs_bytes_500 | 181.42 KB | 181.42 KB | +0.0% | 0.0% | 15% |
| webapi.jobs_gzip_500 | 5.19 KB | 5.19 KB | +0.0% | 0.0% | 15% |
| mem.crontab_10k | 2.80 MB | 2.80 MB | +0.0% | 0.0% | 17.85% (declared 15%) |
| mem.jobconfig_2k | 1.60 MB | 1.60 MB | +0.0% | 0.0% | 31.34% (declared 15%) |
| mem.retired_output_1k | 0.12 MB | 0.12 MB | +0.0% | 0.0% | 433.7% (declared 15%) |
| mem.rss_version | 14.45 MB | 14.45 MB | +0.0% | 0.0% | 25% |
Full Changelog: 1.2.61...1.2.62