러스트(Rust) 기반의 새로운 스트리밍 마크다운 렌더러 '브룩MD(BrookMD)'가 공개되어, 웹, 모바일, 데스크톱 등 다양한 플랫폼에서 효율적인 마크다운 처리를 가능하게 합니다. 이 프로젝트의 핵심은 단일 러스트 코어(core)를 통해 모든 플랫폼에 동일한 버전의 JSON 와이어(wire) 포맷을 제공하며, 특히 대규모 언어모델(LLM)의 실시간 스트리밍 출력을 메인 스레드에 부담을 주지 않고 렌더링하는 데 강점을 보입니다. 이를 통해 여러 LLM 스트림이 동시에 활성화되어도 사용자 인터페이스(UI)가 멈추거나 느려지지 않고 원활하게 작동합니다.
브룩MD는 웹 환경에서 웹 워커(Web Worker)를 활용하여 마크다운 파싱(parsing)과 렌더링을 메인 스레드 외부에서 처리합니다. 각 스트림마다 별도의 웹 워커 풀(pool)을 할당하여, 파서(parser)는 활성화된 부분만 재파싱하고 변경된 내용은 검증된 스플라이스(splice) 형태로 워커 경계를 넘어 전달됩니다. 이는 거대한 단일 블록이 계속 성장하더라도 O(n)의 바이트(byte)를 유지하며, 하이라이팅(highlighting)이나 수학 공식, 머메이드(Mermaid) 다이어그램 같은 무거운 렌더링 작업은 블록이 완료될 때까지 지연시켜 성능을 최적화합니다. 또한, 테이블, 헤딩, 코드 블록 등 구조화된 데이터는 'block.kind.data' 채널을 통해 타입이 지정된 스트리밍 데이터로 노출되어, HTML 재파싱이나 AST(Abstract Syntax Tree) 탐색 없이도 정렬, 필터링, 목차 생성 같은 고급 기능을 구현할 수 있습니다.
이러한 브룩MD의 등장은 LLM 기반 애플리케이션 개발에 중요한 영향을 미칠 것으로 보입니다. 실시간으로 생성되는 LLM 응답을 사용자에게 끊김 없이 보여주는 것은 사용자 경험(UX)에 매우 중요하며, 브룩MD는 이러한 요구사항을 기술적으로 충족시킵니다. 개발자는 리액트(React), 뷰(Vue), 스벨트(S벨트), 솔리드(Solid) 등 다양한 웹 프레임워크와 리액트 네이티브, 스위프트, 코틀린(Kotlin), 플러터(Flutter) 등 모바일 환경에서도 동일한 러스트 코어를 활용할 수 있어 개발 효율성을 높일 수 있습니다. 특히, 제로 런타임 의존성(zero runtime dependencies)과 서버사이드 렌더링(SSR) 지원은 브룩MD가 다양한 프로젝트에 유연하게 통합될 수 있음을 의미하며, 이는 개발자들이 더욱 복잡하고 인터랙티브한 LLM 기반 서비스를 구축하는 데 기여할 것입니다.