Skip to content

포메터 (oxfmt)

현재 우리는 높은 성능을 자랑하는, Prettier와 호환되는 포메터를 개발하기 위해 Prettier와 Biome 포메터를 Oxc로 마이그레이션하고 있습니다.

아키텍처 개요

Oxc 포메터는 Prettier와 동일한 핵심 개념을 기반으로 하지만, 상당한 성능 최적화가 이루어졌습니다:

  • 문서 모델: Prettier 및 Biome의 문서 인터미디어트 표현(중간 표현) 사용
  • 예쁘게 출력: Wadler의 예쁘게 출력 알고리즘 구현
  • AST 통합: 빠른 파서를 활용하여 최적의 성능 제공

성능 고려 사항

최적화 전략

  • 메모리 영역(Memory Arena): AST를 번프 할당자에 할당
  • 문자열 내삽(String Interning): 공통 문자열 재사용
  • 지연 평가(Lazy Evaluation): 비용이 큰 계산을 지연 처리

현재 도전 과제

기술적 과제

  1. 주석 처리: 주석 위치와 서식 유지
  2. 자바스크립트 특이사항: 자바스크립트 문법의 경계 케이스 처리
  3. 성능과 호환성 간 균형: 속도와 정확한 Prettier 출력 사이의 조율
  4. 메모리 관리: 대용량 파일에 대한 효율적인 처리

누락된 기능

  • [ ] 플러그인 시스템 호환성
  • [x] 구성 파일 지원
  • [ ] 에디터 통합
  • [x] CLI 도구
  • [x] 언어 서버 프로토콜