Exreg는 Russ Cox의 연구를 기반으로, 기존 백트래킹 엔진의 ReDoS 취약점(지수적 시간 복잡도)을 해결합니다. Thompson 스타일 NFA 엔진은 모든 경로를 병렬 시뮬레이션하여 입력 크기에 선형적인 실행 시간을 보장, 안정성을 제공합니다.
아키텍처는 파서(AST), 컴파일러(바이트코드), 가상 머신으로 구성됩니다. 주요 구현 특징은 다음과 같습니다.
유니코드 및 내부 데이터베이스
UCD 파일에서 바이너리 데이터베이스를 생성하고, 필요 시 코드포인트 집합을 로드합니다. 효율적인 처리를 위해 pack/unpack을 사용한 커스텀 바이너리 포맷을 적용했습니다.
USet 및 ByteSet을 통한 효율성
코드포인트는 USet 객체(반개 구간 컬렉션)에 저장되어 집합 연산을 효율적으로 처리하며, 컴파일 단계에서 제거됩니다. 바이트코드 실행 시에는 ByteSet 객체(8개의 32비트 정수 배열)를 활용, 비트 연산으로 빠른 바이트 멤버십 테스트를 지원합니다.
단순화된 인코딩 처리
Exreg는 Onigmo와 달리 유니코드 인코딩만 지원하며 (?u)를 기본으로 합니다. 명시적 인코딩이 없으면 UTF-8을 가정하고, 문자열을 바이트 단위로 처리하여 VM 내부에 바이트 표현을 인코딩함으로써 API를 단순화합니다.