빌드

이 모든 게 한 런타임 위에서

작성: makemind · 2026년 6월 11일

지난 넉 달 동안 장치를 하나씩 붙였다.

2월에는 GUI가 없는 이었다. WeAct STM32H723을 USB로 꽂고, 보드가 화면 정의를 내놓게 했다. 3월에는 세 회사 계측기를 한 화면에 세웠다. 4월에는 블랙박스에서 영상을 만질 수 있는 도구를 아예 없앴다. 5월에는 온실 센서를 갈아 끼워도 규칙이 안 바뀌게 했다.

매달 하나씩 만들다 보면 좋은 이야기가 늘어나긴 하는데, 그게 정말 하나의 것인지 비슷하게 생긴 네 개인지는 모른다. 그래서 이번 달에는 새 장치를 안 만들고 지금까지 만든 걸 세어 봤다.

세어 본 방법

버전 번호를 대조하는 건 증거가 안 된다. 버전은 손으로 올리는 숫자고, 같은 번호를 붙인 채로 벌어진 사본은 흔하다.

그래서 화면을 실제로 그리고 들고 있는 세 파일의 바이트를 비교했다.

RENDERER="lib/src/renderer/renderer.dart"
FACTORY="lib/src/widgets/widget_factory.dart"
STATE="lib/src/state/state_manager.dart"

각 샘플은 자기 안에 런타임을 벤더링해서 들고 있다. 따로 다운받아서 혼자 돌아가야 하니까. 그래서 사본이 스물일곱 벌이고, 벌어질 기회도 스물일곱 번 있었다.

결과

sample                     version  renderer       widget_factory state_manager
bench-instruments          0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
board-over-serial          0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
booking-slots              0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
clinic-flow                0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
club-dues                  0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
dashcam-boundary           0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
...
taxi-dashboard             0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
two-shops                  0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
waiting-line               0.5.1    5d4989b6a199   fb156b4a17be   850341b1e8a3
   27 copies of the runtime · renderer, widget_factory and state_manager
   identical byte for byte · 0.5.1

한 줄도 안 벌어졌다.

그런데 뒤에 있는 것들은 하나도 안 같다

이 대조가 의미 있으려면 뒤에 있는 장치가 서로 달라야 한다. 전부 같은 종류였으면 화면이 같은 건 당연한 일이다.

sample                     device     backing
bench-instruments          c-sim      instruments/instruments.c
board-over-serial          hardware   STM32H723 over USB serial, ESP32 over Wi-Fi TCP
booking-slots              dart       server process
greenhouse-independent     c-sim      greenhouse_bus/greenhouse_bus.c
lcd-hmi                    c-sim      panel_firmware/panel_firmware.c
pos-kiosk-kds              c-sim      terminal_sim/terminal_sim.c
taxi-dashboard             c-sim      vehicle_bus/vehicle_bus.c

세 종류다. 진짜 보드(USB 시리얼과 Wi-Fi TCP 둘 다), C로 쓴 펌웨어·버스 시뮬레이터 다섯, 그리고 Dart 서버.

이걸 검증이 명시적으로 지킨다 — 종류가 셋 미만이면 실패하고, 실물 하드웨어가 목록에 없어도 실패한다.

[ "$NKIND" -ge 3 ] || { echo "   only $NKIND kind(s) of device"; exit 1; }
grep -q "hardware   STM32H723" "$S" || { echo "   no real hardware in the corpus"; exit 1; }

이 콘텐츠는 개발자 이상이 필요합니다

로그인 후 플랜을 업그레이드하면 계속 읽을 수 있습니다.

플랜 보기
Twitter