Show HN: OmniDiff - Rust로 만든 매우 빠른 콘텐츠 인식 오픈소스 Git diff 도구

23 hours ago 5

OmniDiff는 코드뿐 아니라 이미지, 폰트, 압축 파일, PDF도 내용에 맞는 방식으로 비교하며, 터미널에서 변경된 부분을 시각적으로 보여줌 코드는 tree-sitter 기반 구조 비교를 25개 언어에 적용하고, 비텍스트 파일은 이름이 아닌 바이트로 형식을 판별해 픽셀, 글리프, 페이지, 내부 파일 단위로 비교함 프로젝트의 노트북 측정에서 코드 테스트 2,302건의 처리 시간은 중앙값 4.2ms, p99 177ms였으며, 대규모 저장소 표본의 코드 변경 쌍 99.95%를 주어진 시간과 메모리 한도 안에 처리함 Git과 Jujutsu 연동, 대화형 TUI, 일반 텍스트 및 JSON 출력을 지원함. 다만 git diff와 jj diff에서는 비대화형으로 동작하며, Git의 대화형 뷰어는 git difftool로 열어야 함 사람이 표시한 정답과 비교하는 정확도 목표는 아직 미달임. --minimal 기준 완전 일치율은 69.6%, 불일치 바이트가 1% 이하인 테스트 비율은 91.5%이며, 남은 오차는 매칭보다 강조 표시 규칙의 영향이 큼 콘텐츠별로 달라지는 비교 방식 OmniDiff는 파일 전체나 줄 전체가 아니라 실제로 바뀐 내용을 구분하는 콘텐츠 인식 diff 도구임 브라우저 시연에서 실제 코드 변경 20건을 Unix diff와 나란히 비교할 수 있음 콘텐츠 예제는 OpenDocument 파일, 컴파일된 번역 카탈로그, 정지 이미지와 애니메이션을 보여줌 코드 언어는 확장자로 감지하며, 25개 언어를 tree-sitter 문법으로 파싱해 구조적으로 비교함 C, C#, C++, CSS, Go, HTML, Java, JavaScript, JSON, Kotlin, Lua, Perl, PHP, Python, R, Ruby, Rust, Scala, Shell(Bash), Swift, TSX, TypeScript, Vimscript, XML, YAML을 지원함 Bazel, Dart, Emacs Lisp, Markdown, Protocol Buffers, SQL은 확장자를 인식하지만 내장 문법이 없어 일반 텍스트로 비교함 알 수 없는 확장자도 일반 텍스트로 줄 단위 비교함 비텍스트 파일은 파일명 대신 바이트로 식별하고, 담긴 콘텐츠에 맞춰 비교함 이미지: PNG, JPEG, GIF, WebP, BMP, ICO, TIFF를 픽셀 단위로 비교하며, 애니메이션은 프레임별로 처리함 압축 파일: zip과 이를 사용하는 jar, Of...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵