Достаточно ли пакета Debian 'original-awk' для проверки POSIX-совместимости сценария AWK? - PullRequest
0 голосов
/ 27 апреля 2019

В данном случае я имею в виду original-awk/stable,now 2012-12-20-6.

Другими словами, существуют ли какие-либо существенные версии * nix / BSD, на которых может быть запущена версия AWK, не совсем точно описанная в Awk ProgrammingЯзык (Ахо, Вайнбергер, Керниган)?

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Это не ответ, но за мой комментарий вот список элементов, которые POSIX не определил, и которые я попросил, чтобы парни из gawk предупредили, когда вы вызываете gawk с помощью --lint:

enter image description here

Обратите внимание, что помимо совместимости с POSIX существуют и другие проблемы с переносимостью. Например, классы символов, такие как [[:digit:]], являются переносимыми для всех awks POSIX, но не поддерживаются хотя бы одним распространенным awk, плохо названным nawk (он был новым, когда появился в середине 80-х по сравнению с серединой -70 лет - теперь не так много!).

Кроме того, приведенная выше таблица не включает в себя функциональность, четко задокументированную как расширения gawk и отключенную с помощью --posix, например gensub(), или что-либо, о чем --lint уже сообщал - намерение создать меня, чтобы получить «пропавшие» неопределенное поведение включено в вывод --lint.

1 голос
/ 27 апреля 2019

Вы, похоже, делаете несколько предположений и задаете несколько вопросов здесь.

Реализует ли https://github.com/onetrueawk/awk именно спецификацию POSIX и ничего больше?

Я думаю, что ответ - нет;будут поведения, которые не описаны в POSIX, либо потому, что спецификация недостаточно детализирована, либо потому, что автор реализовал функцию, которая не указана в стандарте.

Обратите внимание также, что FIXES описывает POSIXулучшение совместимости с этого года;по-видимому, это был не последний, даже если намерение сопровождающего вполне может заключаться в том, чтобы придерживаться POSIX.

POSIX также является движущейся целью.Хотя прогресс медленный, он получает обновления.

Соответствует ли книга 1988 года стандарту POSIX 2019 года?

Нет, очевидно, нет.Это два совершенно разных типа документов для совершенно разных целей.

Повлияла ли оригинальная реализация Awk на POSIX?Совершенно очевидно.Они взяли это и объявили это как единственную истинную справочную реализацию?Очевидно, нет.Во-первых, это определенно поставило бы под угрозу их миссию - вы не можете отдать предпочтение какой-либо конкретной реализации за счет других, если хотите, чтобы работа вашего комитета по взаимодействию имела успех на местах.

Является ли POSIX aРазумный базовый уровень совместимости?

В конечном итоге это должно быть, но всегда будут сценарии, когда, скажем, небольшой объем памяти важнее, чем фактическая совместимость, не говоря уже о штампе, который стоит время иденьги, чтобы получить.

(Не поймите меня неправильно, во многих ситуациях я и многие другие будут платить за этот сертификат или брать наши деньги в другом месте, если он отсутствует. Я просто указываю, что тамТакже во многих ситуациях нам все равно.)

В любом случае, вы, похоже, подходите к этому с неправильной точки зрения.Если вы не знаете больше о спецификации POSIX, чем автор Awk, есть вероятность, что в вашем скрипте есть ошибки взаимодействия, которые не исчезнут, если ваш скрипт выполняется в реализации Awk, которая отлично реализует соответствующую спецификацию POSIX.Ваш набор тестов должен тестировать на специфическое поведение, а не полагать, что спецификация и ее реализация не содержат ошибок с вашей точки зрения.

Является ли bwk Awk минимальным базовым уровнем совместимости?

Нет, я думаю, вы обнаружите, что есть несколько других реализаций Awk, которые в некоторых случаях являются более примитивными.

Моя память туманная, но у меня есть воспоминания о случаях, когда Awk был впереди пакета(может быть, что-то с поддержкой Unicode?) и случаи, когда mawk, а не nawk, был тем, который не мог вести себя.

На заднем плане, кто-то на сцене шепчет "Busybox."

Является ли сборка 2012 года представителем?

Определенно нет.Как указано выше, bwk Awk по-прежнему активно поддерживается и даже развивается.

...