단순히 uv 명령어를 래핑하는 거라 쉽게 생각했는데, 막상 Rust로 자식 프로세스를 띄우고 실시간으로 로그를 프론트로 넘기는 과정은 만만치 않았다.
tokio 비동기 런타임을 이용해서 파이썬 프로세스를 실행하고, stdout과 stderr를 라인 단위로 읽어서 Tauri 이벤트를 통해 React로 쏴주는 로직을 짰다. 처음에는 버퍼가 막혀서 로그가 한참 뒤에 쏟아지는 현상이 발생했다. 라인 버퍼링 설정을 손보고 나서야 겨우 실시간처럼 보이게 만들 수 있었다.
Rust의 소유권(ownership)과 채널(channel) 개념 때문에 컴파일러와 꽤 오래 싸웠지만, 빨간 줄이 다 사라지고 프론트 콘솔에 “Hello World”가 찍혔을 때의 쾌감은 이루 말할 수 없다. 역시 이 맛에 개발하지.