1. 신규 체커 추가 및 성능 최적화
Flycheck 36은 최신 개발 생태계의 요구를 반영하여 고성능 도구들을 새롭게 지원합니다. 우선 Rust로 작성되어 기존 도구들보다 압도적으로 빠른 속도를 제공하는 JavaScript 및 TypeScript용 린터인 oxlint를 위한 javascript-oxlint 체커가 추가되었습니다. 또한 Emacs의 내장 기능을 활용하는 org-lint 체커가 도입되어 Org 모드 사용자들에게 유용한 링크 오류 및 중복 ID 탐지 기능을 제공합니다. 특히 org-lint는 이전의 하위 프로세스 방식이 아닌 현재 Emacs 프로세스 내에서 실행되도록 재설계되어, 외부 패키지가 제공하는 소스 블록 언어에 대한 오탐지를 획기적으로 줄였습니다.
2. 보안 취약점(CVE-2024-53920) 해결 및 안전성 강화
이번 업데이트의 핵심 중 하나는 emacs-lisp 체커에서 발견된 보안 취약점을 해결한 것입니다. 기존에는 Elisp 파일의 바이트 컴파일 과정에서 매크로 확장이 발생할 때, 신뢰할 수 없는 로컬 변수나 eval 지시문을 통해 임의의 코드가 실행될 위험이 있었습니다. Flycheck 36은 로컬 eval 지시문을 비활성화하고 로컬 변수의 범위를 안전한 값으로 엄격히 제한함으로써 이러한 위협을 차단했습니다. 이는 사용자가 외부에서 가져온 Elisp 파일을 검사할 때 발생할 수 있는 잠재적인 보안 사고를 예방하는 중요한 조치입니다.
3. 주요 도구의 기능 개선 및 사용자 경험(UX) 향상
기존에 널리 사용되던 체커들의 기능도 대폭 강화되었습니다. sh-shellcheck는 셸 방언을 자동으로 감지하는 옵션과 추가 명령줄 인자를 전달할 수 있는 설정을 지원하며, Python 개발자들이 선호하는 Ruff 체커에는 에러의 원인을 즉시 확인할 수 있는 설명 기능이 추가되었습니다. 또한 Pyright 사용 시 에러 ID가 명확히 표시되도록 개선되었습니다. UI 측면에서는 모드 라인 표시기에 정보(Info) 레벨의 진단 결과가 포함되도록 수정되었으며, 버퍼를 새로고침할 때 자동으로 구문 검사가 다시 수행되는 등 작업 흐름의 끊김을 최소화하는 다양한 편의 기능이 도입되었습니다.
4. 레거시 체커 정리 및 현대적인 문서화
프로젝트의 장기적인 건강성을 위해 더 이상 유지보수되지 않는 오래된 도구들을 과감히 제거했습니다. 2019년에 중단된 TSLint를 비롯하여, Ruby 기반의 Sass 린터, Erubis, Ruumba 및 CSSLint 등이 삭제되었습니다. 이러한 ‘대청소’는 코드베이스를 가볍게 유지하고 개발 자원을 현대적인 도구에 집중하기 위함입니다. 아울러 공식 웹사이트는 Furo 테마로 전환되어 완벽한 다크 모드와 모바일 최적화를 지원하게 되었으며, 사용자들은 더욱 쾌적하게 최신 문서를 참조할 수 있게 되었습니다.
5. Flycheck의 철학과 향후 발전 방향
Flymake와 Eglot의 강력한 통합 속에서도 Flycheck는 커뮤니티 중심의 유연한 개발 방식을 강점으로 내세우고 있습니다. FSF 저작권 양도 절차 없이도 누구나 쉽게 기여할 수 있는 구조는 Flycheck가 빠르게 성장할 수 있는 원동력입니다. 향후 버전 37에서는 Tree-sitter와의 통합을 통해 더욱 정교한 구문 분석을 지원할 예정이며, OCaml과 Swift 등 새로운 언어 지원도 준비 중입니다. 또한 최신 Emacs API를 적극적으로 활용하기 위해 하위 호환성을 조정하는 등 지속적인 진화를 멈추지 않을 계획입니다.