Fix #[range] to act as a soft min/max
Follow up to #2464
We still need to cap it in the frontend component because of dragging the value, which needs to bottom out and be instantly reversible by changing the mouse direction instead of having to travel the full distance it wasn't moving beyond its backend-enforced cap. I'll have to do some thinking about this.
Performance Benchmark Results
compile_demo_art_iai::compile_group::compile_to_proto with_setup_0:load_from_name(isometric-fountain)
Instructions: 25,124,142 (master) -> 25,102,250 (HEAD) : $$\color{lime}-0.09\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 311,567| 310,870 -0.22%
D1mw 97,295| 98,974 +1.73%
DLmr 29,054| 28,586 -1.61%
DLmw 48,779| 33,343 -31.64%
Dr 6,082,467| 6,080,321 -0.04%
Dw 4,306,340| 4,299,330 -0.16%
EstimatedCycles 39,684,301| 39,207,165 -1.20%
I1mr 43,876| 50,502 +15.10%
ILmr 847| 867 +2.36%
Ir 25,124,142| 25,102,250 -0.09%
L1hits 35,060,211| 35,021,555 -0.11%
LLhits 374,058| 397,550 +6.28%
RamHits 78,680| 62,796 -20.19%
TotalRW 35,512,949| 35,481,901 -0.09%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_1:load_from_name(painted-dreams)
Instructions: 13,089,121 (master) -> 12,285,217 (HEAD) : $$\color{lime}-6.14\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 156,970| 146,268 -6.82%
D1mw 49,832| 47,345 -4.99%
DLmr 564| 330 -41.49%
DLmw 15,867| 15,386 -3.03%
Dr 3,170,050| 2,976,467 -6.11%
Dw 2,235,030| 2,095,593 -6.24%
EstimatedCycles 19,923,813| 18,718,803 -6.05%
I1mr 21,841| 23,386 +7.07%
ILmr 737| 735 -0.27%
Ir 13,089,121| 12,285,217 -6.14%
L1hits 18,265,558| 17,140,278 -6.16%
LLhits 211,475| 200,548 -5.17%
RamHits 17,168| 16,451 -4.18%
TotalRW 18,494,201| 17,357,277 -6.15%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_2:load_from_name(procedural-string-lights)
Instructions: 2,205,999 (master) -> 2,657,571 (HEAD) : $$\color{red}+20.47\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 22,623| 27,640 +22.18%
D1mw 10,837| 12,568 +15.97%
DLmr 22| 22 +0.00%
DLmw 1,567| 2,610 +66.56%
Dr 509,976| 616,312 +20.85%
Dw 372,649| 449,778 +20.70%
EstimatedCycles 3,310,850| 4,012,163 +21.18%
I1mr 4,749| 6,770 +42.56%
ILmr 724| 721 -0.41%
Ir 2,205,999| 2,657,571 +20.47%
L1hits 3,050,415| 3,676,683 +20.53%
LLhits 35,896| 43,625 +21.53%
RamHits 2,313| 3,353 +44.96%
TotalRW 3,088,624| 3,723,661 +20.56%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_3:load_from_name(parametric-dunescape)
Instructions: 14,477,695 (master) -> 12,553,372 (HEAD) : $$\color{lime}-13.29\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 187,402| 155,936 -16.79%
D1mw 65,836| 50,733 -22.94%
DLmr 54| 44 -18.52%
DLmw 14,371| 12,172 -15.30%
Dr 3,469,087| 3,010,949 -13.21%
Dw 2,484,952| 2,144,880 -13.69%
EstimatedCycles 21,978,778| 19,010,247 -13.51%
I1mr 18,908| 20,695 +9.45%
ILmr 857| 837 -2.33%
Ir 14,477,695| 12,553,372 -13.29%
L1hits 20,159,588| 17,481,837 -13.28%
LLhits 256,864| 214,311 -16.57%
RamHits 15,282| 13,053 -14.59%
TotalRW 20,431,734| 17,709,201 -13.33%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_4:load_from_name(red-dress)
Instructions: 30,714,611 (master) -> 30,068,892 (HEAD) : $$\color{lime}-2.10\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 392,536| 383,265 -2.36%
D1mw 130,799| 126,464 -3.31%
DLmr 42,473| 40,765 -4.02%
DLmw 58,823| 63,978 +8.76%
Dr 7,376,611| 7,225,528 -2.05%
Dw 5,234,486| 5,116,967 -2.25%
EstimatedCycles 48,674,666| 47,837,847 -1.72%
I1mr 47,622| 54,721 +14.91%
ILmr 875| 879 +0.46%
Ir 30,714,611| 30,068,892 -2.10%
L1hits 42,754,751| 41,846,937 -2.12%
LLhits 468,786| 458,828 -2.12%
RamHits 102,171| 105,622 +3.38%
TotalRW 43,325,708| 42,411,387 -2.11%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_5:load_from_name(valley-of-spires)
Instructions: 19,072,063 (master) -> 19,061,296 (HEAD) : $$\color{lime}-0.06\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 237,449| 234,798 -1.12%
D1mw 77,011| 76,337 -0.88%
DLmr 11,822| 12,177 +3.00%
DLmw 28,361| 29,567 +4.25%
Dr 4,601,746| 4,602,658 +0.02%
Dw 3,259,098| 3,254,969 -0.13%
EstimatedCycles 29,552,005| 29,589,253 +0.13%
I1mr 33,032| 37,555 +13.69%
ILmr 788| 775 -1.65%
Ir 19,072,063| 19,061,296 -0.06%
L1hits 26,585,415| 26,570,233 -0.06%
LLhits 306,521| 306,171 -0.11%
RamHits 40,971| 42,519 +3.78%
TotalRW 26,932,907| 26,918,923 -0.05%
This current solution disregards the backend's hard max and lets the frontend display a false state until its layout gets re-sent:
https://github.com/user-attachments/assets/b989ebad-fab4-4697-8fa9-75be1852f997
@otdavies requested in a chat with me:
also, I want auto-tangents to also go negative
I believe doing that can't happen till this PR is done.