Ruff v0.16.0 출시, 기본 활성화 규칙이 59개에서 413개로 대폭 증가함
마크다운 파일 내 Python 코드 포맷팅 및 새로운 주석 기반 규칙 비활성화 기능 추가
코드 품질 향상에 대한 기대와 함께, 과도한 규칙 적용에 대한 비판적 의견도 존재함
Astral 인수 후에도 Ruff와 uv의 활발한 개발 지속
커뮤니티에서는 Ruff v0.16.0에서 기본 활성화 규칙이 59개에서 413개로 늘어난 것에 대해 코드 품질 향상에 대한 기대감을 표하고 있습니다. 특히 문법 오류 및 즉각적인 런타임 오류를 포함한 심각한 문제들을 별도 설정 없이 잡아낼 수 있다는 점을 긍정적으로 평가합니다. 하지만 일부에서는 지나치게 엄격하거나 임의적인 규칙이 개발자의 의도를 놓치거나 불필요한 에너지 소모를 유발할 수 있다는 비판도 제기됩니다. 예를 들어, 주석의 공백이나 따옴표 스타일 같은 사소한 규칙이 실제 코드의 복잡성이나 가독성 문제보다 우선시될 수 있다는 지적입니다.
이번 업데이트로 Ruff는 마크다운 파일 내에 포함된 Python 코드 블록을 포맷팅하는 기능을 추가했습니다. 이는 README 파일이나 문서 내 코드 예제의 일관성을 유지하는 데 도움을 줄 것으로 보입니다. `py`, `python3`, `pyi`, `pycon` 등 다양한 정보 문자열을 인식하며, `fmt: off/on` 주석을 통해 포맷팅을 제어할 수 있습니다. Quarto 노트북 포맷팅도 지원하여 개발 문서화 작업의 효율성을 높일 수 있다는 평가입니다.
Ruff v0.16.0은 `ruff: ignore`, `ruff: file-ignore`와 같은 새로운 주석을 통해 특정 규칙을 파일 전체 또는 특정 줄에서 비활성화하는 기능을 도입했습니다. 이는 기존의 `noqa`와 유사하지만, 규칙 코드와 함께 비활성화 이유를 명시할 수 있어 코드의 가독성과 유지보수성을 향상시킵니다. `--add-ignore` CLI 플래그를 통해 자동화도 지원하며, 개발 워크플로우에서의 유연성을 높였다는 점에서 주목받고 있습니다.
일부 사용자는 Go 언어의 린터 생태계가 Ruff, Oxc, Biome 등 다른 언어의 도구들에 비해 파편화되어 있고 품질이 떨어진다고 지적합니다. Ruff와 같이 통합적이고 고품질의 도구가 Go 언어에도 필요하다는 의견이 제시되었습니다. 이는 Ruff가 Black, Flake8, isort 등 여러 도구의 기능을 통합하면서도 뛰어난 성능을 보여주는 것과 대조됩니다. 또한, Astral이 OpenAI에 인수된 후에도 Ruff와 uv의 개발이 활발히 이루어지고 있다는 점은 개발자 커뮤니티의 신뢰를 얻고 있음을 보여줍니다.
v0.16.0 릴리스에 포함된 '작은 수의 호환성 변경(small number of breaking changes)'에 대해 일부 사용자는 불만을 표했습니다. 특히 `ty`와 같은 다른 프로젝트와 달리 Ruff가 v1.0.0 이전에도 이러한 변경을 도입하는 것에 대해 의문을 제기하며, 버전 관리의 일관성을 지적했습니다. 수백 번씩 실행되는 도구의 업데이트가 예기치 않은 문제를 일으킬 수 있다는 우려와 함께, Astral의 OpenAI 인수 이후 이러한 변화에 대한 민감성이 높아졌다는 의견도 있었습니다.