uutils coreutils 0.11.0: компиляторный стиль диагностики ошибок с указанием на проблему

Pointing at the error: compiler-style diagnostics in uutils coreutils

Проект uutils coreutils внедрил в свою версию 0.11.0 новый формат вывода ошибок для 28 утилит: теперь при синтаксической ошибке в аргументах (например, в выражениях test, режимах chmod, ключах sort или наборах tr) на терминал выводится отчет с кареткой, указывающей на проблемный символ или аргумент. Это стало возможным благодаря библиотеке ariadne, ранее использованной в uutils awk. Для совместимости с GNU coreutils новый вывод включается только при работе с терминалом, сохраняя прежние однострочные сообщения в скриптах и конвейерах. Поведение можно настроить переменной окружения UUTILS_DIAG.

Unix-инструменты сообщают об ошибках одной строкой в stderr. Эта строка говорит, что пошло не так, но не где.
  1. discardable_dan

    Обработка ошибок в компиляторах стала самой интересной частью моей работы. Если посчитать, большинство вызовов компилятора — это вызовы, приводящие к ошибкам. Так что эти вызовы действительно должны выдавать наилучшие возможные ошибки! (Возможно, в мире LLM это менее актуально, но точно было так до них.) Отслеживание диапазонов, выполнение дополнительной алгоритмической работы и исследование того, почему ожидание не оправдалось, чтобы дать пользователю максимально информативную ошибку, — это дополнительная работа на основном вычислительном пути. Но она окупается: легко диагностируемые баги и быстрые исправления, представленные прямо в коде. Отслеживание диапазонов, чтобы указать на исходные определения, и т.п., всегда кажется сантехнической работой, пока не увидишь ошибку, которая точно объясняет, что пошло не так. И как только увидишь, ошибки перестают быть разочарованием, над которым ты пытаешься раскинуть сеть.

  2. shakna

    Пожалуйста, прогоните всё это через TTS-движок.

    Да, иметь реально направленную информацию очень полезно. Но необходимость использовать TUI для этого меня раздражает. Не случайно я в основном пользуюсь JAWS.

  3. emilfihlman

    Крутое новшество (на самом деле хорошее и классное).

    Сделайте это после того, как действительно доведёте версию на Rust до полного соответствия версии на C.

    Безумие добавлять сложность, ломать совместимость и вносить новые баги в программное обеспечение, которое должно работать корректно.

Ещё за этот день

2026-09-05