전체 글

Firefox 157에 JPEG XL 지원 추가, Rust 디코더와 점진적 렌더링

xXfacebook페이스북

Firefox가 JPEG XL 지원을 다시 시작한다. 2021년에 실험적 지원이 있었으나 10만 줄의 C++ 코드에서 보안 취약점이 발견되어 보류됐다. 이번에는 Rust로 작성된 jxl-rs 디코더를 통해 2026년 9월 29일 출시 예정인 Firefox 157 Stable에 들어간다.

JPEG XL과 AVIF 파일 크기 비교를 보여주는 막대 그래프. 여우 이미지를 무손실로 압축했을 때 AVIF 1.76MB, JPEG XL 1.45MB, WebP 1.55MB로 JPEG XL이 가장 작다.

JPEG XL은 무손실 압축에서 AVIF보다 더 작은 파일을 만든다.

JPEG XL이란

JPEG XL은 JPEG 후속 표준 이미지 포맷이다. 무손실 압축과 손실 압축을 모두 지원하며, 기존 JPEG를 변환 없이 다시 인코딩할 수 있다. 주요 특징은 다음과 같다.

  • 무손실 JPEG 변환: 기존 JPEG 파일을 손실 없이 JPEG XL로 변환 가능
  • 넓은 색역: HDR 이미지와 광색역 지원
  • 효율적인 압축: 특히 무손실 모드에서 경쟁 포맷 대비 작은 파일 크기

Mozilla 블로그의 테스트에서 여우 이미지를 무손실로 압축했을 때 AVIF는 1.76MB, WebP는 1.55MB인 반면 JPEG XL은 1.45MB였다.

Firefox의 Rust 디코더 구현

Firefox 157은 jxl-rs를 JPEG XL 디코더로 탑재한다. Rust로 작성된 JPEG XL 라이브러리로, 기존 C++ 디코더의 메모리 안전성 문제를 해결한다.

2021년 Firefox 구현은 10만 줄의 C++ 코드를 사용했다. 보안 취약점이 발견되어 지원이 보류되었다. 이번에 채택된 jxl-rs는 Rust의 메모리 안전성 보장을 통해 이 문제를 근본적으로 해결한다.

C++ 10만 줄 코드를 Rust jxl-rs로 대체하는 개념도. 왼쪽 큰 박스가 C++ 코드이고 오른쪽 작은 박스가 jxl-rs

Rust 디코더로 전환하여 메모리 안전성을 확보했다.

점진적 렌더링

Firefox의 JPEG XL 구현은 점진적 렌더링(progressive rendering)을 지원한다. 이미지가 로드될 때 먼저 저해상도 버전을 보여주고 점차 고해상도로 업데이트하는 방식이다.

Safari가 2023년에 JPEG XL을 지원했을 때 이 기능이 빠져 있었다. Firefox 구현은 더 완전하다. 점진적 렌더링은 느린 연결에서 이미지를 로드할 때 사용자 경험을 개선한다.

브라우저 간 지원 현황

JPEG XL은 Interop 2026 브라우저 상호운용성 이니셔티브의 일부로 선정되었다. 현재 상황은 다음과 같다.

브라우저 상태 비고
Firefox Nightly 지원 중 157 Stable은 2026년 9월 29일
Safari 2023년 지원 시작 점진적 렌더링 미포함
Chrome 플래그 뒤에 구현됨 145에서 디코딩 복원

Mozilla 블로그는 "2026년 말까지 모든 주요 브라우저가 JPEG XL을 지원할 것"이라고 전망한다. Chrome도 이미 Intent to Ship을 발표했으며, Edge는 Chromium 기반이므로 Chrome을 따라갈 가능성이 높다.

Interop 2025 대시보드 스크린샷 비교. 매우 높음 품질에서 AVIF 11.6kB, JPEG XL 23.8kB. 무손실에서 AVIF 164kB, JPEG XL 92kB

Interop 2025 테스트에서 JPEG XL은 무손실에서 AVIF보다 훨씬 작다.

개발자를 위한 포맷 선택 가이드

Mozilla 블로그의 비교 테스트 결과는 다음과 같다.

여우 이미지 (자연 사진)

  • 중간-높음 품질: AVIF 116kB, JPEG XL 134kB
  • 매우 높음 품질: AVIF 227kB, JPEG XL 264kB
  • 무손실: AVIF 1.76MB, JPEG XL 1.45MB, WebP 1.55MB

Interop 2025 대시보드 스크린샷 (그래픽이 많은 이미지)

  • 매우 높음 품질: AVIF 11.6kB, JPEG XL 23.8kB
  • 무손실: AVIF 164kB, JPEG XL 92kB, WebP 96kB

AVIF는 손실 압축에서 더 작고, JPEG XL은 무손실 압축에서 더 작다. 두 포맷은 상호 보완적인 관계이며 사용 사례에 따라 선택할 수 있다.

정리

Firefox 157은 Rust 기반 JPEG XL 디코더를 탑재한다. 10만 줄의 C++ 코드를 jxl-rs로 대체하여 메모리 안전성을 확보했고, Safari에서 빠졌던 점진적 렌더링도 지원한다. 2026년 9월 29일 Stable 출시를 앞두고 Nightly에서 이미 테스트할 수 있다.

근거와 참고

이 글 공유하기xXfacebook페이스북