Skip to content

Rynk Protocol#962

Open
HaoboGu wants to merge 24 commits into
mainfrom
feat/rynk
Open

Rynk Protocol#962
HaoboGu wants to merge 24 commits into
mainfrom
feat/rynk

Conversation

@HaoboGu

@HaoboGu HaoboGu commented Jul 16, 2026

Copy link
Copy Markdown
Owner

successor of #848, cleaned the commit history

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 16, 2026

Copy link
Copy Markdown

Deploying rmk-rs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 5b91e47
Status: ✅  Deploy successful!
Preview URL: https://5cd11ce0.rmk-4a2.pages.dev
Branch Preview URL: https://feat-rynk.rmk-4a2.pages.dev

View logs

@HaoboGu HaoboGu mentioned this pull request Jul 16, 2026
15 tasks
@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

Size Report

Example main PR Diff .text .data .bss
use_config/nrf52832_ble 394.6 KiB 393.4 KiB -0.32% ⬇️ -184 0 -1120
use_config/nrf52840_ble 439.9 KiB 434.6 KiB -1.19% ⬇️ -740 0 -4664
use_config/nrf52840_ble_split (central) 497.8 KiB 497.6 KiB -0.04% ⬇️ +564 0 -816
use_config/nrf52840_ble_split (peripheral) 321.9 KiB 321.4 KiB -0.15% ⬇️ -512 0 +8
use_config/pi_pico_w_ble 668.5 KiB 667.5 KiB -0.15% ⬇️ -228 0 -816
use_config/rp2040 146.9 KiB 143.7 KiB -2.13% ⬇️ -2056 0 -1160
use_config/rp2040_split (central) 160.4 KiB 157.2 KiB -1.98% ⬇️ -2180 0 -1072
use_config/rp2040_split (peripheral) 27.8 KiB 27.9 KiB +0.30% ⬆️ +80 0 +8
use_config/stm32f1 62.2 KiB 61.5 KiB -1.18% ⬇️ -128 0 -624
use_config/stm32h7 99.9 KiB 99.5 KiB -0.40% ⬇️ +624 0 -1040
use_rust/nrf52832_ble 382.0 KiB 380.1 KiB -0.49% ⬇️ -744 0 -1200
use_rust/nrf52840_ble 436.2 KiB 431.9 KiB -1.00% ⬇️ -732 0 -3752
use_rust/nrf52840_ble_split (central) 505.9 KiB 503.7 KiB -0.44% ⬇️ -296 0 -1984
use_rust/nrf52840_ble_split (peripheral) 318.3 KiB 317.9 KiB -0.11% ⬇️ -368 0 +8
use_rust/pi_pico_w_ble 668.9 KiB 667.4 KiB -0.21% ⬇️ -568 0 -904
use_rust/rp2040 146.6 KiB 143.0 KiB -2.42% ⬇️ -2396 0 -1240
use_rust/rp2040_split (central) 159.3 KiB 155.9 KiB -2.13% ⬇️ -2316 0 -1160
use_rust/rp2040_split (peripheral) 28.2 KiB 28.2 KiB +0.30% ⬆️ +80 0 +8
use_rust/stm32f1 61.6 KiB 60.8 KiB -1.31% ⬇️ -128 0 -704
use_rust/stm32h7 119.5 KiB 117.6 KiB -1.66% ⬇️ -784 0 -1256
use_config/nrf52832_ble — 394.6 KiB → 393.4 KiB (-0.32% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 361796	   8620	  32384	 402800	  62570	rmk-nrf52832

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 361980	   8620	  33504	 404104	  62a88	rmk-nrf52832

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +1.2% +2.42Ki  [ = ]       0    .debug_ranges
  +0.3%    +875  [ = ]       0    .debug_line
  +0.1%    +393  [ = ]       0    .strtab
   +57%     +23  [ = ]       0    [Unmapped]
  +0.1%      +8  [ = ]       0    .debug_abbrev
  -0.1%    -184  -0.1%    -184    .text
  -0.5%    -232  [ = ]       0    .debug_aranges
  -1.1%    -504  [ = ]       0    .debug_frame
  [ = ]       0  -3.4% -1.09Ki    .bss
  -0.9% -1.09Ki  [ = ]       0    .symtab
  -0.6% -4.44Ki  [ = ]       0    .debug_loc
  -0.3% -6.25Ki  [ = ]       0    .debug_info
  -0.7% -24.0Ki  [ = ]       0    .debug_str
  -0.4% -33.0Ki  -0.3% -1.27Ki    TOTAL
use_config/nrf52840_ble — 439.9 KiB → 434.6 KiB (-1.19% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 394044	   8628	  42408	 445080	  6ca98	rmk-nrf52840

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 394784	   8628	  47072	 450484	  6dfb4	rmk-nrf52840

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.9% +6.78Ki  [ = ]       0    .debug_loc
  +0.3%    +672  [ = ]       0    .debug_ranges
  +0.1%    +417  [ = ]       0    .debug_line
  +0.1%    +356  [ = ]       0    .strtab
  +0.1%     +48  +0.1%     +48    .rodata
  +0.9%      +8  [ = ]       0    .defmt
  +8.2%      +5  [ = ]       0    [Unmapped]
  -0.1%     -56  [ = ]       0    .debug_aranges
  -0.2%    -224  [ = ]       0    .symtab
  -0.6%    -272  [ = ]       0    .debug_frame
  -0.2%    -788  -0.2%    -788    .text
  [ = ]       0 -10.1% -4.55Ki    .bss
  -0.2% -4.83Ki  [ = ]       0    .debug_info
  -0.6% -26.4Ki  [ = ]       0    .debug_str
  -0.3% -24.3Ki  -1.2% -5.28Ki    TOTAL
use_config/nrf52840_ble_split (central) — 497.8 KiB → 497.6 KiB (-0.04% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 452256	   8684	  48568	 509508	  7c644	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 451692	   8684	  49384	 509760	  7c740	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +6.74Ki  [ = ]       0    .debug_str
  +0.7% +5.78Ki  [ = ]       0    .debug_loc
  +2.8% +1.32Ki  [ = ]       0    .debug_aranges
  +0.2%    +744  [ = ]       0    .debug_line
  +0.2%    +512  [ = ]       0    .debug_ranges
  +0.1%    +496  +0.1%    +496    .text
  +0.2%     +68  +0.2%     +68    .rodata
   +26%     +14  [ = ]       0    [Unmapped]
  -0.4%     -31  [ = ]       0    .debug_abbrev
  -0.0%    -155  [ = ]       0    .debug_info
  -0.7%    -356  [ = ]       0    .debug_frame
  -0.1%    -496  [ = ]       0    .strtab
  -0.3%    -528  [ = ]       0    .symtab
  [ = ]       0  -1.7%    -816    .bss
  +0.1% +14.1Ki  -0.0%    -252    TOTAL
use_config/nrf52840_ble_split (peripheral) — 321.9 KiB → 321.4 KiB (-0.15% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 291680	   8500	  28904	 329084	  5057c	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 292192	   8500	  28896	 329588	  50774	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.9% +27.5Ki  [ = ]       0    .debug_str
  +0.3% +5.16Ki  [ = ]       0    .debug_info
  +3.7% +1.51Ki  [ = ]       0    .debug_aranges
  +0.1%     +80  [ = ]       0    .symtab
  +0.0%     +79  [ = ]       0    .strtab
  +0.2%     +56  [ = ]       0    .debug_frame
  [ = ]       0  +0.0%      +8    .bss
  -7.8%      -5  [ = ]       0    [Unmapped]
  -0.1%     -16  -0.1%     -16    .rodata
  -0.0%     -29  [ = ]       0    .debug_line
  -0.2%    -496  -0.2%    -496    .text
  -0.8% -1.27Ki  [ = ]       0    .debug_ranges
  -0.9% -5.07Ki  [ = ]       0    .debug_loc
  +0.4% +27.5Ki  -0.2%    -504    TOTAL
use_config/pi_pico_w_ble — 668.5 KiB → 667.5 KiB (-0.15% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 630952	      0	  52544	 683496	  a6de8	rmk-pi-pico-w

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 631180	      0	  53360	 684540	  a71fc	rmk-pi-pico-w

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +4.54Ki  [ = ]       0    .debug_str
  +0.3% +3.38Ki  [ = ]       0    .debug_loc
  +4.0% +1.63Ki  [ = ]       0    .debug_aranges
  +0.0%    +450  [ = ]       0    .debug_info
  +0.1%    +403  [ = ]       0    .strtab
  +0.1%    +401  [ = ]       0    .debug_line
  +0.5%    +400  [ = ]       0    .symtab
  +0.0%     +36  +0.0%     +36    .rodata
   +12%      +8  [ = ]       0    [Unmapped]
  -0.1%      -8  [ = ]       0    .debug_abbrev
  -0.1%     -28  [ = ]       0    .debug_frame
  -0.1%    -264  -0.1%    -264    .text
  -0.2%    -472  [ = ]       0    .debug_ranges
  [ = ]       0  -1.6%    -816    .bss
  +0.1% +10.5Ki  -0.2% -1.02Ki    TOTAL
use_config/rp2040 — 146.9 KiB → 143.7 KiB (-2.13% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 133560	      0	  13612	 147172	  23ee4	rmk-rp2040

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 135616	      0	  14772	 150388	  24b74	rmk-rp2040

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +3.9%    +632  [ = ]       0    .debug_aranges
   +19%      +9  [ = ]       0    [Unmapped]
  -0.3%     -20  [ = ]       0    .debug_abbrev
  -1.0%    -168  [ = ]       0    .debug_frame
  -1.1%    -176  -1.1%    -176    .rodata
  -0.6%    -208  [ = ]       0    .symtab
  -0.2%    -297  [ = ]       0    .strtab
  [ = ]       0  -8.4% -1.13Ki    .bss
  -0.4% -1.29Ki  [ = ]       0    .debug_loc
  -1.6% -1.84Ki  -1.6% -1.84Ki    .text
  -1.3% -2.08Ki  [ = ]       0    .debug_line
  -3.2% -2.62Ki  [ = ]       0    .debug_ranges
  -2.2% -21.5Ki  [ = ]       0    .debug_info
  -3.2% -54.4Ki  [ = ]       0    .debug_str
  -2.4% -83.9Ki  -2.1% -3.14Ki    TOTAL
use_config/rp2040_split (central) — 160.4 KiB → 157.2 KiB (-1.98% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 146416	      0	  14564	 160980	  274d4	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 148596	      0	  15636	 164232	  28188	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +3.8%    +656  [ = ]       0    .debug_aranges
  +1.8%      +8  [ = ]       0    .defmt
  +2.3%      +4  +2.9%      +4    .data
  +3.3%      +2  [ = ]       0    [Unmapped]
  -0.3%     -20  [ = ]       0    .debug_abbrev
  -0.8%    -156  -0.8%    -156    .rodata
  -0.9%    -168  [ = ]       0    .debug_frame
  -0.2%    -212  [ = ]       0    .strtab
  -0.7%    -240  [ = ]       0    .symtab
  [ = ]       0  -7.3% -1.05Ki    .bss
  -1.6% -1.98Ki  -1.6% -1.98Ki    .text
  -1.3% -2.37Ki  [ = ]       0    .debug_line
  -2.6% -2.43Ki  [ = ]       0    .debug_ranges
  -1.0% -3.62Ki  [ = ]       0    .debug_loc
  -1.3% -15.0Ki  [ = ]       0    .debug_info
  -1.7% -33.6Ki  [ = ]       0    .debug_str
  -1.4% -59.1Ki  -2.0% -3.18Ki    TOTAL
use_config/rp2040_split (peripheral) — 27.8 KiB → 27.9 KiB (+0.30% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  25696	     60	   2804	  28560	   6f90	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  25616	     60	   2796	  28472	   6f38	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +1.5% +12.3Ki  [ = ]       0    .debug_str
  +0.8% +2.92Ki  [ = ]       0    .debug_info
  +5.2%    +696  [ = ]       0    .debug_aranges
  +0.6%    +455  [ = ]       0    .debug_loc
  +0.3%     +64  +0.3%     +64    .text
  +0.6%     +32  [ = ]       0    .debug_frame
  +0.4%     +32  [ = ]       0    .symtab
   +47%     +17  [ = ]       0    [Unmapped]
  +0.3%     +16  +0.3%     +16    .rodata
  [ = ]       0  +0.5%      +8    .bss
  +0.0%      +8  [ = ]       0    .debug_ranges
  +0.0%      +1  [ = ]       0    .debug_line
  +0.0%      +1  [ = ]       0    .strtab
  -0.3%     -18  [ = ]       0    .debug_abbrev
  +1.1% +16.5Ki  +0.3%     +88    TOTAL
use_config/stm32f1 — 62.2 KiB → 61.5 KiB (-1.18% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  56764	     28	   6168	  62960	   f5f0	rmk-stm32f1

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  56892	     28	   6792	  63712	   f8e0	rmk-stm32f1

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +2.5% +3.00Ki  [ = ]       0    .debug_loc
  +0.4% +2.22Ki  [ = ]       0    .debug_info
  +0.1% +1.22Ki  [ = ]       0    .debug_str
  +0.3%    +258  [ = ]       0    .debug_line
  -0.5%      -4  -0.5%      -4    .rodata
  -1.4%     -88  [ = ]       0    .debug_aranges
  -0.2%    -124  -0.2%    -124    .text
  -1.3%    -176  [ = ]       0    .debug_frame
  -0.6%    -256  [ = ]       0    .debug_ranges
  -0.6%    -287  [ = ]       0    .strtab
  -1.7%    -352  [ = ]       0    .symtab
  [ = ]       0  -9.2%    -624    .bss
  +0.3% +5.43Ki  -1.2%    -752    TOTAL
use_config/stm32h7 — 99.9 KiB → 99.5 KiB (-0.40% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  93700	    264	   7936	 101900	  18e0c	rmk-stm32h7

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  93076	    264	   8976	 102316	  18fac	rmk-stm32h7

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +5.6% +3.66Ki  [ = ]       0    .debug_ranges
  +1.7% +3.06Ki  [ = ]       0    .debug_loc
  +3.4% +1.09Ki  [ = ]       0    .debug_aranges
  +4.0%    +504  +4.0%    +504    .rodata
  +0.2%    +120  +0.2%    +120    .text
  -5.8%      -9  [ = ]       0    .defmt
 -24.0%     -12  [ = ]       0    [Unmapped]
  -1.6%    -105  [ = ]       0    .debug_abbrev
  -2.0%    -300  [ = ]       0    .debug_frame
  -0.2%    -302  [ = ]       0    .debug_line
  -3.0%    -832  [ = ]       0    .symtab
  [ = ]       0 -11.6% -1.02Ki    .bss
  -0.3% -2.44Ki  [ = ]       0    .debug_info
  -4.5% -2.99Ki  [ = ]       0    .strtab
  -0.6% -11.9Ki  [ = ]       0    .debug_str
  -0.3% -10.4Ki  -0.4%    -416    TOTAL
use_rust/nrf52832_ble — 382.0 KiB → 380.1 KiB (-0.49% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 349240	   8620	  31336	 389196	  5f04c	rmk-nrf52832

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 349984	   8620	  32536	 391140	  5f7e4	rmk-nrf52832

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.6% +1.70Ki  [ = ]       0    .strtab
  +0.1%    +186  [ = ]       0    .debug_line
  +0.1%    +184  [ = ]       0    .debug_ranges
  +1.2%     +96  [ = ]       0    .debug_abbrev
  +0.0%      +8  +0.0%      +8    .rodata
  +1.5%      +7  [ = ]       0    .defmt
 -35.2%     -25  [ = ]       0    [Unmapped]
  -0.2%     -96  [ = ]       0    .debug_aranges
  -0.5%    -220  [ = ]       0    .debug_frame
  -0.4%    -448  [ = ]       0    .symtab
  -0.2%    -752  -0.2%    -752    .text
  [ = ]       0  -3.8% -1.17Ki    .bss
  -0.4% -2.60Ki  [ = ]       0    .debug_loc
  -0.3% -6.08Ki  [ = ]       0    .debug_info
  -0.7% -23.0Ki  [ = ]       0    .debug_str
  -0.4% -31.0Ki  -0.5% -1.90Ki    TOTAL
use_rust/nrf52840_ble — 436.2 KiB → 431.9 KiB (-1.00% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 393932	   8628	  39656	 442216	  6bf68	rmk-nrf52840

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 394664	   8628	  43408	 446700	  6d0ec	rmk-nrf52840

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.3%    +958  [ = ]       0    .strtab
  +0.2%     +72  +0.2%     +72    .rodata
  +0.6%     +47  [ = ]       0    .debug_abbrev
  -0.2%    -104  [ = ]       0    .debug_aranges
  -0.5%    -244  [ = ]       0    .debug_frame
  -0.1%    -299  [ = ]       0    .debug_line
  -0.3%    -368  [ = ]       0    .symtab
  -0.2%    -804  -0.2%    -804    .text
  -0.5% -1.20Ki  [ = ]       0    .debug_ranges
  [ = ]       0  -8.9% -3.66Ki    .bss
  -0.7% -5.07Ki  [ = ]       0    .debug_loc
  -0.4% -7.57Ki  [ = ]       0    .debug_info
  -0.7% -26.2Ki  [ = ]       0    .debug_str
  -0.5% -40.8Ki  -1.0% -4.38Ki    TOTAL
use_rust/nrf52840_ble_split (central) — 505.9 KiB → 503.7 KiB (-0.44% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 454792	   8684	  52328	 515804	  7dedc	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 455088	   8684	  54312	 518084	  7e7c4	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.3% +1.12Ki  [ = ]       0    .strtab
  +0.0%    +170  [ = ]       0    .debug_line
  +0.2%     +84  +0.2%     +84    .rodata
  +0.0%     +64  [ = ]       0    .symtab
   +17%      +9  [ = ]       0    [Unmapped]
  +0.1%      +8  [ = ]       0    .debug_abbrev
  -0.0%     -16  [ = ]       0    .debug_aranges
  -0.0%     -40  [ = ]       0    .debug_ranges
  -0.1%     -72  [ = ]       0    .debug_frame
  -0.0%    -318  [ = ]       0    .debug_loc
  -0.1%    -380  -0.1%    -380    .text
  [ = ]       0  -3.7% -1.94Ki    .bss
  -0.2% -4.86Ki  [ = ]       0    .debug_info
  -0.4% -16.7Ki  [ = ]       0    .debug_str
  -0.2% -21.0Ki  -0.4% -2.23Ki    TOTAL
use_rust/nrf52840_ble_split (peripheral) — 318.3 KiB → 317.9 KiB (-0.11% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 289896	   8500	  27152	 325548	  4f7ac	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 290264	   8500	  27144	 325908	  4f914	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%     +88  [ = ]       0    .strtab
  +0.0%     +16  [ = ]       0    .debug_aranges
  [ = ]       0  +0.0%      +8    .bss
 -24.3%     -17  [ = ]       0    [Unmapped]
  -0.1%     -20  [ = ]       0    .debug_frame
  -0.0%     -32  [ = ]       0    .symtab
  -0.1%    -368  -0.1%    -368    .text
  -0.2%    -375  [ = ]       0    .debug_line
  -0.3%    -496  [ = ]       0    .debug_ranges
  -0.1% -1.48Ki  [ = ]       0    .debug_info
  -0.1% -3.21Ki  [ = ]       0    .debug_str
  -0.8% -4.50Ki  [ = ]       0    .debug_loc
  -0.2% -10.4Ki  -0.1%    -360    TOTAL
use_rust/pi_pico_w_ble — 668.9 KiB → 667.4 KiB (-0.21% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 630812	      0	  52648	 683460	  a6dc4	rmk-pi-pico-w

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 631380	      0	  53552	 684932	  a7384	rmk-pi-pico-w

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.3%    +923  [ = ]       0    .strtab
  +0.0%     +40  +0.0%     +40    .rodata
  +0.0%     +16  [ = ]       0    .symtab
 -10.0%      -6  [ = ]       0    [Unmapped]
  -0.1%      -8  [ = ]       0    .debug_abbrev
  -0.0%      -8  [ = ]       0    .debug_aranges
  -0.1%     -56  [ = ]       0    .debug_frame
  -0.2%    -608  -0.2%    -608    .text
  -0.3%    -688  [ = ]       0    .debug_ranges
  [ = ]       0  -1.7%    -904    .bss
  -0.2% -1.01Ki  [ = ]       0    .debug_line
  -0.3% -3.22Ki  [ = ]       0    .debug_loc
  -0.3% -8.24Ki  [ = ]       0    .debug_info
  -0.6% -25.4Ki  [ = ]       0    .debug_str
  -0.4% -38.2Ki  -0.2% -1.44Ki    TOTAL
use_rust/rp2040 — 146.6 KiB → 143.0 KiB (-2.42% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 132992	      0	  13452	 146444	  23c0c	rmk-rp2040

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 135388	      0	  14692	 150080	  24a40	rmk-rp2040

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  -7.7%      -4  [ = ]       0    [Unmapped]
  -0.3%     -20  [ = ]       0    .debug_abbrev
  -0.3%     -56  [ = ]       0    .debug_aranges
  -1.1%    -176  -1.1%    -176    .rodata
  -1.2%    -200  [ = ]       0    .debug_frame
  -0.2%    -294  [ = ]       0    .strtab
  -1.0%    -336  [ = ]       0    .symtab
  [ = ]       0  -9.1% -1.21Ki    .bss
  -1.9% -2.17Ki  -1.9% -2.17Ki    .text
  -3.3% -2.70Ki  [ = ]       0    .debug_ranges
  -1.7% -2.77Ki  [ = ]       0    .debug_line
  -1.2% -3.59Ki  [ = ]       0    .debug_loc
  -2.6% -25.2Ki  [ = ]       0    .debug_info
  -3.7% -61.6Ki  [ = ]       0    .debug_str
  -2.8% -99.2Ki  -2.4% -3.55Ki    TOTAL
use_rust/rp2040_split (central) — 159.3 KiB → 155.9 KiB (-2.13% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 145344	      0	  14308	 159652	  26fa4	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 147660	      0	  15468	 163128	  27d38	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +3.8%    +656  [ = ]       0    .debug_aranges
  +0.0%     +62  [ = ]       0    .debug_loc
   +31%     +11  [ = ]       0    [Unmapped]
  +1.8%      +8  [ = ]       0    .defmt
  +2.3%      +4  +2.9%      +4    .data
  -0.3%     -20  [ = ]       0    .debug_abbrev
  -0.1%     -48  [ = ]       0    .symtab
  -0.1%    -125  [ = ]       0    .strtab
  -0.9%    -160  -0.9%    -160    .rodata
  -0.9%    -168  [ = ]       0    .debug_frame
  [ = ]       0  -8.0% -1.13Ki    .bss
  -2.1% -1.91Ki  [ = ]       0    .debug_ranges
  -1.7% -2.11Ki  -1.7% -2.11Ki    .text
  -1.3% -2.39Ki  [ = ]       0    .debug_line
  -1.3% -14.2Ki  [ = ]       0    .debug_info
  -1.4% -28.4Ki  [ = ]       0    .debug_str
  -1.2% -48.8Ki  -2.1% -3.39Ki    TOTAL
use_rust/rp2040_split (peripheral) — 28.2 KiB → 28.2 KiB (+0.30% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  25796	     60	   3068	  28924	   70fc	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  25716	     60	   3060	  28836	   70a4	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +1.5% +12.3Ki  [ = ]       0    .debug_str
  +0.8% +2.92Ki  [ = ]       0    .debug_info
  +5.2%    +696  [ = ]       0    .debug_aranges
  +0.7%    +485  [ = ]       0    .debug_loc
  +0.3%     +64  +0.3%     +64    .text
  +0.6%     +32  [ = ]       0    .debug_frame
  +0.4%     +32  [ = ]       0    .symtab
  +0.3%     +16  +0.3%     +16    .rodata
  [ = ]       0  +0.4%      +8    .bss
  +0.0%      +2  [ = ]       0    .strtab
  -0.3%     -18  [ = ]       0    .debug_abbrev
 -31.8%     -21  [ = ]       0    [Unmapped]
  -0.2%     -32  [ = ]       0    .debug_ranges
  +1.1% +16.4Ki  +0.3%     +88    TOTAL
use_rust/stm32f1 — 61.6 KiB → 60.8 KiB (-1.31% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  56132	     28	   6104	  62264	   f338	rmk-stm32f1

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  56260	     28	   6808	  63096	   f678	rmk-stm32f1

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.4% +2.29Ki  [ = ]       0    .debug_info
  +1.2% +1.42Ki  [ = ]       0    .debug_loc
  +0.1%    +936  [ = ]       0    .debug_str
  +0.1%    +102  [ = ]       0    .debug_line
  -2.1%      -1  [ = ]       0    [Unmapped]
  -0.5%      -4  -0.6%      -4    .rodata
  -0.2%    -124  -0.2%    -124    .text
  -3.0%    -144  [ = ]       0    .debug_aranges
  -2.1%    -272  [ = ]       0    .debug_frame
  -1.0%    -452  [ = ]       0    .strtab
  -2.9%    -576  [ = ]       0    .symtab
  -1.6%    -696  [ = ]       0    .debug_ranges
  [ = ]       0 -10.3%    -704    .bss
  +0.1% +2.51Ki  -1.3%    -832    TOTAL
use_rust/stm32h7 — 119.5 KiB → 117.6 KiB (-1.66% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 106328	    320	  13724	 120372	  1d634	rmk-stm32h7

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 107112	    320	  14980	 122412	  1de2c	rmk-stm32h7

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.4% +9.26Ki  [ = ]       0    .debug_str
  +9.0% +3.34Ki  [ = ]       0    .debug_aranges
   +31%     +13  [ = ]       0    [Unmapped]
  +0.1%      +6  [ = ]       0    .debug_abbrev
  -0.3%      -1  [ = ]       0    .defmt
  -0.3%     -12  -0.3%     -12    .rodata
  -1.4%    -272  [ = ]       0    .debug_frame
  -1.7%    -608  [ = ]       0    .symtab
  -0.8%    -772  -0.8%    -772    .text
  -0.6%    -849  [ = ]       0    .debug_line
  [ = ]       0  -9.0% -1.23Ki    .bss
  -1.8% -1.43Ki  [ = ]       0    .debug_ranges
  -1.0% -2.38Ki  [ = ]       0    .debug_loc
  -2.5% -2.53Ki  [ = ]       0    .strtab
  -0.3% -3.36Ki  [ = ]       0    .debug_info
  +0.0%    +476  -1.7% -1.99Ki    TOTAL

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0d170130ff

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rynk/rynk-kle/src/to_kle.rs
@HaoboGu
HaoboGu force-pushed the feat/rynk branch 10 times, most recently from d257c8b to c56fde3 Compare July 19, 2026 07:51
HaoboGu added 16 commits July 19, 2026 21:34
Replace the placeholder rmk protocol module with the Rynk wire format: command, endpoint, and topic tables, error and message types, layout and system payloads, plus wire snapshots. Add tsify-based TypeScript type generation for host reuse.
…[keymap.layer]]

Separate the physical key map from the keymap: drop the legacy matrix_map/keymap path and its codegen, and add the macro codegen for the new schema.
… handler

Route USB and BLE host access through one handler and replace the vial_lock feature with host_lock.
Includes the lock gate, device-info and layout-blob endpoints, and keymap bulk transfer across layer boundaries.
Generates the TypeScript type bindings consumed by the web demo.
… examples

Add rp2040_rynk and qemu-riscv-rynk, adapt example sources, and regenerate Cargo.lock files.
Signed-off-by: Haobo Gu <haobogu@outlook.com>
Store each tap-hold's timing profile as a u8 index into a small,
deduplicated `taphold_profiles` table rather than an inline 4-byte
`MorseProfile`. `KeyAction::TapHold` shrinks from 12 to 7 bytes, which
also drops the u32's 4-byte alignment padding across every
KeyAction-sized RAM buffer (keymap array, held-key buffer, combos,
forks, morse cache).

Measured on the nrf52840 example at a 5x14x5 (350-key) board:
.bss -2408 bytes, .text -4 bytes (no flash cost). Savings scale with
board size; the table cost (CAP*4, default CAP=16 -> 64 B) is fixed.

- keyboard.toml: named profiles are interned automatically by the
  proc-macro; users keep referencing them by name.
- pure-Rust: default macros (th!/mt!/lt!/tt!) are unchanged; the
  custom-profile macros (thp!/mtp!/ltp!/ttp!) now take a table index
  and the user populates `behavior.morse.taphold_profiles`.
- Table capacity is configurable via `[rmk] taphold_profile_max_num`.
- Vial wire format is unchanged (profile isn't carried); the stored
  KeyAction encoding changes but auto-migrates via the build-hash guard.

Regenerated the rmk_protocol keymap endpoint snapshots (KeyAction
schema change propagates to keymap/combo/encoder/fork endpoints).
* refactor: redesign core rynk traits, achieve full-duplex communication

Signed-off-by: Haobo Gu <haobogu@outlook.com>

* refactor: update rynk crates to use the new contract

Signed-off-by: Haobo Gu <haobogu@outlook.com>

* chore(rynk): trim comments

* refactor(rynk): third simplification pass

- rynk-wasm: drop the label round-trip (JS already owns the picker name)
  and the WebDevice wrapper — JsByteLink is a local wasm-bindgen type, so
  it implements RynkDevice directly; device.rs deleted
- qemu_behavior: drop six request_raw calls duplicating the typed calls
  right above them (request delegates to request_raw, same code path)
- driver/tests: drop three tests subsumed by supersets (cmd mismatch,
  topic-during-request, cancelled-request recovery)
- rynk-serial: declare the tokio feature actually used (io-util, not time)

Signed-off-by: Haobo Gu <haobogu@outlook.com>

---------

Signed-off-by: Haobo Gu <haobogu@outlook.com>
Signed-off-by: Haobo Gu <haobogu@outlook.com>
Rebasing onto origin/main linearized away the merge commit 9b8d64c,
which carried hand-made changes not present in either parent: the
nrf54lm20_ble example tweaks, the rynk_loopback fixture downsize, and
the rynk/Cargo.lock removal. Restore them to match the pre-rebase tree.
Signed-off-by: Haobo Gu <haobogu@outlook.com>

Copy link
Copy Markdown
Contributor

I tested the Rynk USB path from this PR at aa3398ea on a Glove80 (nRF52840, split keyboard).

CDC OUT worked: the firmware received and decoded requests. CDC IN did not complete on the host, even though the firmware's write future returned successfully. I tried asserting DTR, starting the host read before sending, direct libusb access, 64-byte packets, and changing interface/endpoint order and numbers; none changed the result.

Using Rynk's existing 32-byte HID framing on the same build worked reliably. I could read all eight 6×14 keymap layers, and the split central and peripheral both remained connected.

This may be specific to the nRF52840/Embassy CDC path rather than Rynk itself, so I don't think the PR should simply replace CDC everywhere. Would a selectable USB HID transport be useful here? I have the firmware and native Linux host changes working and can extract a small patch if that direction makes sense.

@HaoboGu

HaoboGu commented Jul 20, 2026

Copy link
Copy Markdown
Owner Author

I tested the Rynk USB path from this PR at aa3398ea on a Glove80 (nRF52840, split keyboard).

CDC OUT worked: the firmware received and decoded requests. CDC IN did not complete on the host, even though the firmware's write future returned successfully. I tried asserting DTR, starting the host read before sending, direct libusb access, 64-byte packets, and changing interface/endpoint order and numbers; none changed the result.

Using Rynk's existing 32-byte HID framing on the same build worked reliably. I could read all eight 6×14 keymap layers, and the split central and peripheral both remained connected.

This may be specific to the nRF52840/Embassy CDC path rather than Rynk itself, so I don't think the PR should simply replace CDC everywhere. Would a selectable USB HID transport be useful here? I have the firmware and native Linux host changes working and can extract a small patch if that direction makes sense.

I think it might be a linux specific descriptor bug.

HaoboGu added 2 commits July 20, 2026 18:16
- features/rynk.md: drop the non-existent `bulk` Cargo feature (the
  `features = ["bulk"]` snippet failed to compile); bulk is always on with
  `rynk`, sized by `rynk_buffer_size`. Note the tool-author example needs
  `embassy-futures`.
- migration/v08_v09.md: fix the fabricated `bulk_transfer` -> `bulk` rename
  (removed, folded into `rynk`); document the `KeyAction::TapHold` u8-index
  break, the removed `[rmk].protocol_max_bulk_size` key, and the new
  unknown-key strictness.
- configuration/layout.md: remove the `PDF(n)` action (unsupported in
  keyboard.toml — the keymap grammar has no rule for it), document the `Trns`
  transparent form, and split two examples that shared one toml fence.
- rmk/CHANGELOG.md: add the Rynk feature entry and the BREAKING `keyboard.toml`
  layout-schema change.
A USB bulk-IN transfer completes on the host only once it sees a packet shorter than the max packet size. A device-to-host frame whose length is a multiple of that size (64 at Full-Speed) ends on a full packet, so the host read stays pending. Wrap the CDC Sender in a small Write adapter that appends a zero-length packet after such a frame.

Scoped to the USB transport; run_session, UART, and BLE are untouched. This is an independent robustness fix, not the root cause of the nRF52840 "CDC IN never completes" report — there even the short handshake response and raw libusb hung, which a ZLP cannot explain.

Signed-off-by: Haobo Gu <haobogu@outlook.com>
Signed-off-by: Haobo Gu <haobogu@outlook.com>
Comment thread .github/workflows/ci.yml Dismissed
HaoboGu added 3 commits July 22, 2026 23:03
run_session now mutes topics until the client requests GetCapabilities
(b0c4ec7), so the topic loopback tests hung waiting for frames that were
drained. Handshake first, as every real host does at connect.

Signed-off-by: Haobo Gu <haobogu@outlook.com>
Claude-Session: https://claude.ai/code/session_015SYk627CMYYUUoctAryhzP
Signed-off-by: Haobo Gu <haobogu@outlook.com>
Signed-off-by: Haobo Gu <haobogu@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants