Herb v0.8의 새로운 기능

What's New in Herb v0.8

작성자
HackerNews
발행일
2025년 11월 13일

핵심 요약

  • 1 Herb v0.8은 Rust 및 Java 공식 바인딩을 통해 언어 지원을 확장하고, .herb.yml 설정 파일 도입으로 도구 사용자 정의를 강화했습니다.
  • 2 린터는 자동 수정, 인라인 비활성화 주석, 사용자 정의 규칙 및 14가지 새로운 규칙을 추가하여 HTML+ERB 템플릿의 품질 관리를 대폭 개선했습니다.
  • 3 엔진 및 파서의 핵심 개선 사항은 ERB 트리밍, 사용자 정의 이스케이프 함수, 향상된 오류 메시지 및 내부 메모리 최적화를 포함하여 템플릿 처리의 정확성과 성능을 향상시켰습니다.

도입

2025년 11월 12일, HTML+ERB 파일 작업을 위한 도구 생태계인 Herb의 v0.8 버전이 출시되었습니다. 이번 릴리스는 Herb의 역사상 가장 많은 기능이 추가된 버전으로, .html.erb 파일 작업 시 개발자 경험을 향상시키고, Ruby에서 HTML 렌더링을 개선하며, Ruby 및 Rails 뷰 레이어의 혁신을 주도하는 것을 목표로 합니다. Herb v0.8은 새로운 언어 바인딩, 강화된 도구, 강력한 린팅 및 포맷팅 기능, 그리고 수많은 버그 수정 및 편의성 개선 사항을 포함하여 Herb 생태계 전반에 걸쳐 중요한 발전을 가져왔습니다.

Herb v0.8은 다양한 영역에서 상당한 개선을 이루었습니다. 주요 변경 사항은 다음과 같습니다.

새로운 언어 바인딩

  • Rust 바인딩: Crates.io를 통해 herb로 제공되며, 관용적인 Rust API로 Herb의 파싱 기능에 대한 전체 접근을 제공합니다.

  • Java 바인딩: JNI를 통해 Java, Kotlin, Scala 등 JVM 생태계에 HTML+ERB 파싱 기능을 제공합니다.

설정 파일 지원

  • .herb.yml 파일이 도입되어 Herb Linter 및 Formatter의 동작을 프로젝트 전체에서 사용자 정의하고 팀과 공유할 수 있습니다.

린터 개선

  • 자동 수정 (--fix): 수정 가능한 위반 사항을 자동으로 수정하는 새로운 옵션이 추가되었습니다.

  • 인라인 비활성화 주석: <%# herb:disable %> 주석을 사용하여 특정 린터 규칙을 인라인으로 비활성화할 수 있습니다.

  • 새로운 린터 규칙: 14개의 새로운 규칙이 추가되어 HTML+ERB 템플릿 작성에 도움을 줍니다.

  • 사용자 정의 린터 규칙: .herb/rules/ 디렉토리에 JavaScript 파일을 배치하여 프로젝트별 요구 사항에 맞는 사용자 정의 규칙을 정의할 수 있습니다.

  • CLI 다중 파일 지원: herb-lint CLI가 이제 여러 파일/디렉토리 또는 글로브를 인수로 허용합니다.

Herb Rewriters

  • 새로운 @herb-tools/rewriter 패키지가 도입되어 Herb 구문 트리를 전략적으로 순회, 수정 및 재작성하는 강력한 시스템을 제공합니다.

  • 사용자 정의 Rewriter: .herb/rewriters/ 디렉토리에 JavaScript 파일을 배치하여 사용자 정의 Rewriter를 생성할 수 있습니다.

포매터 개선

  • 텍스트 콘텐츠 및 공백 서식과 관련된 많은 버그가 수정되었습니다.

  • <%# herb:disable %> 주석 배치 보존, case 문 자식 처리 개선, frontmatter 콘텐츠 존중 및 Rails 스캐폴드 템플릿 건너뛰기 등의 개선이 이루어졌습니다.

  • Tailwind CSS 클래스 정렬 통합: @herb-tools/tailwind-class-sorter가 내장 Rewriter로 통합되어 Tailwind 클래스 순서가 항상 일관되게 유지됩니다.

언어 서버 개선

  • 저장 시 수정 (Fix-on-Save): 린트 위반 사항에 대한 자동 수정 기능이 추가되었습니다.

  • 코드 액션: 현재 위치에서 린터 규칙을 비활성화하거나 .herb.yml을 직접 업데이트하는 코드 액션을 제공합니다.

Herb CLI 개선

  • parselex 명령에 컬러 출력이 추가되어 파서 출력 검사 및 디버깅이 용이해졌습니다.

  • 파싱 오류 요약이 추가되어 긴 출력에서도 오류를 쉽게 파악할 수 있습니다.

  • herb analyze 명령이 Herb::Engine을 사용하여 모든 HTML+ERB 템플릿을 파싱 및 컴파일하여 잠재적 문제와 구문 오류를 조기에 경고합니다.

Visual Studio Code 개선

  • 새로운 .herb.yml 설정을 완벽하게 지원하며, 상태 표시줄, 설정 메뉴 및 설정 생성/관리 기능을 제공합니다.

  • Rails Devcontainer 설정의 일부로 Herb LSP 확장이 기본으로 설치됩니다.

엔진 개선

  • 적절한 ERB 트리밍 지원: <%--%> ERB 태그가 이제 컴파일 및 평가 시 존중됩니다.

  • 사용자 정의 가능한 이스케이프 함수: HTML, JavaScript, CSS 이스케이프 함수를 사용자 정의할 수 있게 되었습니다.

  • =begin/=end Ruby 블록 주석을 올바르게 처리하며, 컴파일된 Ruby 출력에서 <%# ... %><% # ... %> 주석을 완전히 제거하여 런타임 구문 오류를 방지합니다.

파서 개선

  • HTML 태그 매칭을 위한 두 번 통과 알고리즘을 사용하여 ERB 제어 흐름 경계를 더 잘 처리하고 더 정확한 오류 메시지를 제공합니다.

내부 메모리 및 성능 개선

  • Arena Allocator 구현 및 hb_string_T 구조체 도입을 통해 메모리 관리 효율성을 높이고 메모리 누수를 수정했습니다.

결론

Herb v0.8은 새로운 언어 지원, 강화된 린팅 및 포맷팅 기능, 핵심 엔진 및 파서의 정교한 개선을 통해 HTML+ERB 개발자 경험을 혁신하는 중요한 발걸음을 내디뎠습니다. 특히 Ruby 및 Rails 뷰 레이어의 현대화에 기여하며, 더 효율적이고 안정적인 템플릿 개발 환경을 제공합니다. 향후 로드맵에는 추가 린터 규칙, 엔진 성능 최적화, 언어 서버 기능 확장, JRuby 및 TruffleRuby 지원, Haml/Slim 마이그레이션 도구 등이 포함되어 Herb의 지속적인 발전을 예고합니다. 이러한 발전은 전략적 파트너십을 통해 더욱 가속화될 것이며, Ruby 커뮤니티의 참여와 지원이 Herb의 미래를 형성하는 데 중요한 역할을 할 것입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!