This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
donglora/vendor/crunchy
swaitsandClaude Opus 4.6 3102fc747a feat: add display UI with splash screen, dashboard, and RSSI sparkline
Implement full SSD1306 OLED display support:
- Splash screen on boot (1.5s) with project name, version, board
- Dashboard showing radio state, config, counters, RSSI/SNR
- RSSI history sparkline (64-sample ring buffer, 2px-wide bars)
- DisplayOn/DisplayOff host commands routed via dedicated channel
- Pure render functions against generic DrawTarget (no hardware coupling)
- Display on/off control bypasses radio task entirely

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:42:54 -06:00
..

Crunchy

The crunchy unroller - deterministically unroll constant loops. For number "crunching".

The Rust optimizer will unroll constant loops that don't use the loop variable, like this:

for _ in 0..100 {
  println!("Hello!");
}

However, using the loop variable will cause it to never unroll the loop. This is unfortunate because it means that you can't constant-fold the loop variable, and if you end up stomping on the registers it will have to do a load for each iteration. This crate ensures that your code is unrolled and const-folded. It only works on literals, unfortunately, but there's a work-around:

debug_assert_eq!(MY_CONSTANT, 100);
unroll! {
  for i in 0..100 {
    println!("Iteration {}", i);
  }
}

This means that your tests will catch if you redefine the constant.

To default maximum number of loops to unroll is 128, but that can be easily decreased or increased using the cargo features:

  • limit_64
  • limit_128
  • limit_256
  • limit_512
  • limit_1024
  • limit_2048