The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Новая версия языка программирования GNU Awk 4.2.0

20.10.2017 08:36

После четырёх с половиной лет разработки доступен новый значительный выпуск реализации языка программирования AWK от проекта GNU - Gawk 4.2.0. AWK был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк языка, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на преклонный возраст, AWK до сих пор активно используется администраторами для выполнения рутинных работ, связанных с парсингом различного рода текстовых файлов и генерации несложной результирующей статистики.

Ключевые изменения:

  • При запуске не в режиме POSIX переменные в ENVIRON теперь отражаются в окружение gawk и дочерних программ, запущенных через вызов system();
  • Увеличено качество псевдослучайных чисел, выдаваемых функцией rand(). Порядок чисел в последовательности по-прежнему повторяем, поэтому rand() не подходит для криптографических нужд;
  • Улучшена работа режима вывода отформатированного кода программы. При указании опции "--pretty-print" AWK-программа теперь не запускается;
  • Добавлена возможность сборки с использованием CMake, который теперь позиционируется в качестве альтернативного сборочного инструментария;
  • Добавлена настройка PROCINFO["NONFATAL"] при которой ошибки ввода/вывода не приводят к завершению выполнения. По аналогии PROCINFO["redirection", "NONFATAL"] действует для перенаправленных потоков;
  • Добавлена опция PROCINFO[input-file, "RETRY"], при установке которой в случае ошибки ввода/вывода предпринимается повторная попытка выполнения операции;
  • Нарушена бинарная совместимость для C API, Си-приложения связанные с gawk требуют пересборки;
  • Добавлена поддержка строго типизированных констант с регулярными выражениями, задаваемых в виде "@/.../". Такие константы можно присвоить переменным и использовать справа от операторов "~" и "!~", а также в составе выражений "case";
  • Добавлена функция typeof() для определения типа переменной (array, regexp, string, number);
  • Прекращена поддержка старого механизма подключения расширений, основанного на применении функции "extension";
  • Прекращена поддержка платформы GNU/Linux на системах Alpha;
  • Прекращена поддержка операционной системы MirBSD;
  • Возвращён в строй порт для DJGPP, для которого нашёлся сопровождающий;
  • Включена по умолчанию оптимизация кода выполняемых приложений, для отключения которой следует использовать опцию "-s/--no-optimize';
  • При наличии задействован механизм fwrite_unlocked, позволяющий на 7% - 18% поднять скорость вывода gawk '{ print }' для больших файлов;
  • Ускорены операции в режиме IGNORECASE;
  • Использование отрицательных значений в битовых функциях теперь приводит к завершению работы с ошибкой;
  • В mktime добавлен второй аргумент для включения преобразования времени в UTC вместо локального часового пояса;
  • Добавлен массив PROCINFO["argv"], в котором сохраняются все аргументы командной строки.


  1. Главная ссылка к новости (https://www.mail-archive.com/i...)
  2. OpenNews: Новая версия языка программирования GNU Awk 4.1.0
  3. OpenNews: Увидел свет GNU Awk 4.0.0
  4. OpenNews: Redis-клиент на awk
  5. OpenNews: Интервью с одним из трех авторов языка программирования AWK
  6. OpenNews: Новая программа: Awka - транслятор с AWK в ANSI C
Лицензия: CC-BY
Тип: Программы
Ключевые слова: awk
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (56) Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, blzz (?), 08:54, 20/10/2017 [ответить] [показать ветку] [····]    [к модератору]
  • +2 +/
    >> Улучшена работа режима вывода отформатированного кода программы. При указании опции "--pretty-print" AWK-программа теперь не запускается;

    улучшено на отличненько

     
     
  • 2.2, Аноним (-), 08:59, 20/10/2017 [^] [ответить]    [к модератору]
  • +7 +/
    Да, раньше было более чем странно, когда запуск фильтра для форматирования кода приводил к выполнению этого кода.
     
  • 2.38, Zarat (ok), 10:39, 21/10/2017 [^] [ответить]    [к модератору]
  • –1 +/
    Сам удивился, но как всегда корявый перевод из
    https://www.mail-archive.com/info-gnu@gnu.org/msg02352.html

    The --pretty-print option no longer runs the program too.

    Даже дословный был-бы лучше.
    т.е. понимать:
    - AWK-программа теперь не запускается;
    + теперь AWK-код не будет интерпретироваться (выполняться)

     
  • 1.3, Аноним (-), 09:05, 20/10/2017 [ответить] [показать ветку] [····]    [к модератору]
  • –7 +/
    Недоперл?
     
     
  • 2.4, bentall (ok), 09:14, 20/10/2017 [^] [ответить]    [к модератору]
  • +12 +/
    Прямой предок же. А так, когда нужно сделать что-то простое и достаточно-одноразовое с текстом — самое то.
     
     
  • 3.5, Anonymus (?), 09:39, 20/10/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    А sed не проще, разве?
     
     
  • 4.7, Аноним (-), 10:06, 20/10/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    sed не годится, когда нужно что-нибудь посчитать, например. Но на perl такие вещи делаются, как правило, проще. awk может потребоваться для максимальной переносимости, благо он POSIX, но тогда все плюшки gawk идут лесом.
     
  • 4.8, angra (ok), 10:09, 20/10/2017 [^] [ответить]    [к модератору]  
  • +7 +/
    По личному опыту, включающему в себя чтение скриптов и однострочников коллег, в подавляющем большинстве случаев awk используется для вытаскивания из потока нужных позиций(колонок), а sed для регексовой замены как в потоке так и напрямую в файлах. То есть они используются для разного и выбора как такового нет. При этом конечно можно каждым из них решить основную задачу другого, но неудобно.
     
     
  • 5.20, Аноним (-), 13:26, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > в подавляющем большинстве случаев awk используется для вытаскивания из потока нужных позиций(колонок)

    ...неосиляторами cut(1).

     
     
  • 6.22, angra (ok), 13:50, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    А зачем осиливать значительно более убогий инструмент, который к тому же не способен справится с основной задачей во многих случаях? Я пробовал его использовать лет десять назад, довольно быстро пришел к выводу, что вместо экономии времени получил прямо противоположный результат.
     
     
  • 7.27, Аноним (-), 14:42, 20/10/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Было бы, что там осиливать, я б ещё понял вопрос "зачем"...
    [code]$ time sh -c 'for i in 'seq 10000'; do cut -d: -f1 </etc/group >/dev/null; done'
    sh -c 'for i in 'seq 10000'; do cut -d: -f1 </etc/group >/dev/null; done'  0,06s user 0,59s system 16% cpu 3,856 total
    $ time sh -c 'for i in 'seq 10000'; do gawk -F: "{ print \$1 }" </etc/group >/dev/null; done'
    sh -c   0,14s user 0,83s system 9% cpu 10,673 total[/code]
    Кстати, раз уж на то пошло:
    [code]$ time sh -c 'for i in 'seq 10000'; do mawk -F: "{ print \$1 }" </etc/group >/dev/null; done'
    sh -c   0,05s user 0,63s system 15% cpu 4,301 total
    $ time sh -c 'for i in 'seq 10000'; do original-awk -F: "{ print \$1 }" </etc/group >/dev/null; done'                                                                  
    sh -c   0,08s user 0,66s system 14% cpu 5,229 total[/code]
     
     
  • 8.29, Andrey Mitrofanov (?), 17:26, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > Было бы, что там осиливать, я б ещё понял вопрос "зачем"...
    > [code]$ time sh -c 'for i in 'seq 10000'; do gawk -F:
    > "{ print \$1 }" </etc/group >/dev/null; done'
    > sh -c   0,14s user 0,83s system 9% cpu 10,673 total[/code]
    > Кстати, раз уж на то пошло:
    > [code]$ time sh -c 'for i in 'seq 10000'; do mawk -F:
    > "{ print \$1 }" </etc/group >/dev/null; done'
    > sh -c   0,05s user 0,63s system 15% cpu 4,301 total[/code]

    Вспоминание отдельного второго языка для того же самого истратит гораздо больше времени, чем "целые"  [B]0,14s[/B] и нарушит душевное спокойствие. Особенно, если с первого раза промахнуться в -f/-F или -t/-d.  Так мысль "неосиляторов" более понятна?

     
     
  • 9.30, Аноним (-), 17:41, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Ты упоролся? Какого ещё языка? Одна команду с парой опций — это у тебя язык? Блин, я, оказывается, сотни языков знаю!
    И, кстати, каким образом ты 0,14 с насчитал?
     
     
  • 10.36, angra (ok), 05:11, 21/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Ну не языка, а синтаксиса команды. Принципиальной разницы нет, по существу Андрей сказал правильно. Если уже хорошо знаешь более продвинутый инструмент, то зачем запоминать еще и более убогий? И когда мне понадобится вытащить определенные поля из потока я на полном автомате напишу это на perl или awk, а не буду вспоминать какие там опции у cut и сможет ли он вообще это сделать.
     
     
  • 11.40, Аноним (-), 13:44, 21/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > Если уже хорошо знаешь более продвинутый инструмент, то зачем запоминать еще и более убогий?

    Ты когда последний раз видел человека, который хорошо знает awk? Большинство кроме print в нём ничего не умеет и не использует.
    Но аргумент имеет право на существование, да. Именно поэтому я и не учу awk: зачем он мне, когда есть perl? Кстати, не так давно понадобилось для пущей переносимости переписать perl-однострок (делающий всего лишь urlencode) на awk. В результате однострок превратился строк в 30 кода. И кому оно надо (было бы, если бы отдельные личности не юзали урезанные контейнеры, где нет даже perl)?

     
     
  • 12.43, . (?), 18:14, 21/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Его не только в контейнерах нет - его нигде нет. Самому приносить надо.
    А awk - формально в POSIX. И это причина нумбер раз.
     
  • 12.45, angra (ok), 23:33, 21/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > Ты когда последний раз видел человека, который хорошо знает awk? Большинство кроме print в нём ничего не умеет и не использует.

    Поднимись выше по треду и прочитай, что я сказал про основное использование awk. Вдруг окажется, что практически то же самое. Заодно можешь обнаружить там комментарии от человека, который знает awk.

    > Именно поэтому я и не учу awk: зачем он мне, когда есть perl?

    Аналогично :)

    Сэр, вы точно хотите продолжить сражение с ветрянными мельницами?

     
  • 10.39, Zarat (ok), 10:44, 21/10/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    > Какого ещё языка?

    DSL cut-a

     
  • 8.34, angra (ok), 04:56, 21/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > Было бы, что там осиливать, я б ещё понял вопрос "зачем"...

    Про "ниасиляторов" не я говорил. Я сказал о ненужности cut и его неспособности решить указанную задачу в ряде случаев(это будет тебе домашним заданием). А твои подсчеты времени вообще никого из практиков не интересуют.

     
     
  • 9.41, Аноним (-), 13:54, 21/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Я прекрасно знаю про "задачи", которые cut не может решить. А также знаю, что в 95% случаев такие задачи возникают в результате неправильного решения другой задачи. Парсить вывод команды, не предназначенный для парсинга, нельзя, потому что в итоге, пусть даже в каком-нибудь маргинальном случае, ты получишь совсем не то, чего ожидал. А то, что предназначено для парсинга, всегда имеет строго один разделитель и отлично обрабатывается cut.
     
     
  • 10.44, . (?), 18:50, 21/10/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Му-ха-ха :) Какой восторженный ***** :-) Ну погнали по пунктам:

    >Я прекрасно знаю про "задачи", которые cut не может решить.

    Нет, не знаешь. Впрочем, а вдруг ... ну - излагай топ 2 причины по которой cut приходится выковыривать из скриптов.

    >А также знаю, что в 95% случаев такие задачи возникают в результате неправильного решения другой задачи.

    НУ да - все не в ногу, и только ты ... :)

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

    Когда ты окончишь школу и пойдёшь работать - тебя ожидает серьёзный культурологический шок! Прикинь - мир то вокруг не идеален! И даже мамкин борщ не вечен! :-)
    >А то, что предназначено для парсинга, всегда имеет строго один разделитель и отлично обрабатывается cut.

    Не знать HTML в 2017 %-o  ... Ты уже пятый год в пятом классе? Я угадал? :)

     
     
  • 11.46, Аноним (-), 23:56, 21/10/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > ну - излагай топ 2 причины по которой cut приходится выковыривать из скриптов.

    Для меня таких причин нет. Ты, видимо, зачем-то пытаешься разбирать "табличный" вывод какой-то хрени, где используется выравнивание пробелами (могу погадать, что это что-нибудь вроде ps, ls или даже top). Да, этого cut не умеет. Но этого делать в любом случае не следует. Вторую тебе? Ну не знаю, может быть, хочешь на выходе получить содержимое нескольких полей в произвольном порядке. Да, менять порядок cut не умеет тоже.

    > Когда ты окончишь школу и пойдёшь работать - тебя ожидает серьёзный культурологический шок!

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

    > HTML

    Ты HTML awk'ом разбираешь? Ну покажи, интересно поглядеть.

     
     
  • 12.47, Nolan (?), 02:29, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    cut слишком беден, что-то аналогичного обычному awk '$4 == "sda"{ print $3 / 1024; exit }' /proc/partitions ты на нём не сделаешь. А запуск perl, для подобных вещей, слишком дорог.
     
     
  • 13.48, Led (ok), 03:00, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > cut слишком беден, что-то аналогичного обычному awk '$4 == "sda"{ print $3
    > / 1024; exit }' /proc/partitions ты на нём не сделаешь. А
    > запуск perl, для подобных вещей, слишком дорог.

    expr 'grep -o '[[:digit:]]* sda$' /proc/partitions | cut -d' ' -f1' / 1024

     
     
  • 14.51, Noland (?), 11:49, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Это подтверждает мои слова - cut слишком беден, чтобы решить туже задачу требуется привлечение expr, greb и subshell, в результате вместо одного процесса awk порождается четыре (expr, '', grep, cut), это помимо ужасной читаемости и масштабируемости, например, потребуется обработка других полей: awk '$4 == "sda"{ print $2":"$1":"$3 / 1024; exit }' /proc/partitions
     
  • 13.50, Аноним (-), 11:41, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > что-то аналогичного обычному awk '$4 == "sda"{ print $3 / 1024; exit }' /proc/partitions ты на нём не сделаешь

    Вот о чём я и говорил. Все эти пляски с awk — от неумения решать задачи по-человечески.
    [code]expr $(cat /sys/block/sda/size) / 2048[/code]
    И даже cut не нужен.

     
     
  • 14.52, Noland (?), 11:57, 22/10/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    >> что-то аналогичного обычному awk '$4 == "sda"{ print $3 / 1024; exit }' /proc/partitions ты на нём не сделаешь
    > Вот о чём я и говорил. Все эти пляски с awk —
    > от неумения решать задачи по-человечески.
    > [code]expr $(cat /sys/block/sda/size) / 2048[/code]
    > И даже cut не нужен.

    Таже проблема, что и у предыдущего решения - порождение лишних процессов и отсутсвие маштабируемости, в данном случае три процесса вместо одного (expr, $(), cat), а если потребуется обработка нескольких полей. И это учитывая то, что "partitions" примитивный пример.

     
     
  • 15.54, Аноним (-), 12:23, 22/10/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > Таже проблема, что и у предыдущего решения - порождение лишних процессов

    Тебе процессов жалко? PID'ы исчерпать боишься, что ли? Тогда неправильно считаешь: одновременно работают не более двух дочерних процессов (сначала отрабатывает сабшелл с cat, после этого запускается expr). А если ты за скорость радеешь, то можешь проверить и убедиться, что моё решение работает быстрее твоего.
    Кстати, в реальном скрипте было бы не три, а два дочерних процесса, потому что вместо expr было бы $(( )) (цель ведь не вывести значение, а как-то использовать его, я полагаю?).

    > И это учитывая то, что "partitions" примитивный пример.

    Ну так приведи не примитивный.

     
     
  • 16.56, Noland (?), 14:20, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Считаю я правильно, а именно сколько процессов порождалось оболочкой, ещё точнее сколько "clone/fork" и обращений к дисковой подсистеме было совершено.   В данном случае на каждый вызов приходится ворох stat-ов (для поиска в PATH, чем он длиннее, тем их больше), clone/fork и exec. Если использовать абсолютные пути, то время немного сократится. Всё это легко увидеть если воспользоваться strace или truss.
    Разумеется варианта с "cat", для обработки файла содержащего одно поле, будет быстрее.
    Но я напомню, что речь шла именно о замене awk на cut. Поэтому, используя только cut требуется найти минимальный и максимальный vlan id на заданном интерфейсе, на awk можно составить: awk -v nif="lan0" 'BEGIN {min = -1; max = -1} $5 == nif {if (min == -1 || min > $3) min = $3; if (max == -1 || max < $3) max = $3} END {print min":"max}' /proc/net/vlan/config
    Это первое, что вспомнил.
     
     
  • 17.58, Аноним (-), 15:38, 22/10/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Нет, речь шла о замене awk print N на cut Твой пример с awk отличается, ... текст скрыт, показать
     
     
  • 18.60, Noland (?), 18:35, 22/10/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Спору нет, cut удобнее и эффективнее, если речь идёт только о выводе полей при условии однородных разделителей.
    К сожалению не у всех утилит есть режим вывод предназначенный для машинного разбора, а тем более возможность запросить некоторые значения по отдельности, как например сделано в blkid. Но даже наличие этих опций не убережёт от нежелания читать man.
     
  • 14.53, Noland (?), 12:12, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Если было бы предложено:
    read size < /sys/block/sda/size; echo $(($size / 2048))
    То, да, для данного случая (нужно работать с одним полем) оно более выигрышно.
     
     
  • 15.55, Аноним (-), 12:27, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > Если было бы предложено:
    > read size < /sys/block/sda/size; echo $(($size / 2048))
    > То, да, для данного случая (нужно работать с одним полем) оно более
    > выигрышно.

    Да. Но при этом менее читаемо (хотя всё равно лучше, чем на awk).

     
     
  • 16.57, Noland (?), 14:27, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Вопрос читаемости в данном случае очень спорный, а прирост производительности, хоть и незначительный, налицо.
     
     
  • 17.59, Аноним (-), 15:42, 22/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Спорный или нет, я ориентировался прежде всего на наилучшую читаемость. Мы ж тут не олимпиадные задачки решаем, да и тезис Кнута про корень всех зол никто не отменял.
     
  • 7.28, iCat (ok), 15:39, 20/10/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    >А зачем осиливать значительно более убогий инструмент...

    Ты картинки смотришь Photoshop, а кинофильмы - AdobePremier?

     
     
  • 8.35, angra (ok), 05:03, 21/10/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Ты не понимаешь разницу между просмотром и редактированием? Нет, я не редактирую фотографии в paint при наличии photoshop или gimp.
     
  • 6.33, Аноним (-), 01:51, 21/10/2017 [^] [ответить]    [к модератору]  
  • –4 +/
    Сразу видно что cut ты сам ни разу не использовал, иначе ты бы знал почему awk проще cut
     
  • 6.37, Поликарпыч (?), 10:12, 21/10/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Ты и с блокнотиком и Карела шиком логи проверяй.. Это для настоящих спецов.
     
  • 4.10, Andrey Mitrofanov (?), 11:09, 20/10/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > А sed не проще, разве?

    Разговор не про "проще" [или даже раньше], а про оказал влияние на создателя нового языка. Лари писал, что awk участвовал при зачатии.

    [CODE]It combines (in  the  author's  opinion,  anyway)
    some  of the best features of C, sed, awk, and sh,[/CODE]

    И да, sed проще --> в смысле примитивнее и ограниченнее.

    Обычно я ранжирую [строко-ориентированные под-]языки, используемые _в shell_, как cat <= grep <= sed <= awk. А перла я В) не осилил.

     
     
  • 5.17, VINRARUS (ok), 13:12, 20/10/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Ну sed быстрее чем awk, а в последнем релизе даже перегнал сам себя в 80 раз.
    http://forum.motofan.ru/index.php?s=&showtopic=162200&view=findpost&p=1783969

    Проблема в том шо некоторым недопрограмистам очень сложно освоить ключ -е, от чего они пишут несколько sed в конвеере.

     
     
  • 6.21, Аноним (-), 13:31, 20/10/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > Проблема в том шо некоторым недопрограмистам очень сложно освоить ключ -е, от
    > чего они пишут несколько sed в конвеере.

    А что, они и ";" не осилили?

     
     
  • 7.25, Аноним (-), 14:26, 20/10/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Хотя на самом деле большинство в sed не осиливает ничего кроме s///. В результате городят жуткие конвейеры из cat|grep|head|tail|sed.
     
  • 6.24, Andrey Mitrofanov (?), 14:25, 20/10/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > Ну sed быстрее чем awk, а в последнем релизе даже перегнал сам
    > себя в 80 раз.
    > http://forum.motofan.ru/index.php?s=&showtopic=162200&view=findpost&p=1783969
    > Проблема в том шо некоторым недопрограмистам очень сложно освоить ключ -е, от
    > чего они пишут несколько sed в конвеере.

    Бывают попромисты, не могущие в ';' ??  Ну, питонисты должны...[--8<--][CODE]PG_OPTS=$(2>/dev/null <"${0%/*}/.plugins.conf" sed -n 's/^ *psql_opts *= *//;T;p;q')[/CODE]

     
  • 3.6, еарапр (?), 09:49, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Ну, как бы, лисп же лучше.
     
  • 1.9, Аноним (-), 10:22, 20/10/2017 [ответить] [показать ветку] [····]    [к модератору]  
  • +1 +/
    > Прекращена поддержка платформы GNU/Linux на системах Alpha;

    Но... Оно же на Си...

     
     
  • 2.11, Iaaa (ok), 11:42, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    Скорее не нашли где потестить, и забили.
     
  • 2.13, alex (??), 11:49, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    скорее всего просто не на чем тестить
    а собрать самому из исходников никто не запрещает
     
     
  • 3.15, pripolz (?), 12:08, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > скорее всего просто не на чем тестить

    а qemu-system-alpha...

     
     
  • 4.23, Аноним (-), 14:24, 20/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > qemu-system-alpha

    Зачем так сложно, если есть qemu-alpha?
    Скорее это просто оказалось никому не надо.

     
  • 1.12, _bob (ok), 11:44, 20/10/2017 [ответить] [показать ветку] [····]    [к модератору]  
  • +/
    http://www.newlisp.org/ -- довольно неплох.
     
  • 1.32, freehck (ok), 23:50, 20/10/2017 [ответить] [показать ветку] [····]    [к модератору]  
  • –2 +/
    > Нарушена бинарная совместимость для C API, Си-приложения связанные с gawk требуют пересборки;

    Простите, может быть я наивен, но что надо сделать с библиотекой, чтобы сломать двоичную совместимость?

    Какие-нибудь функции удалили, что ли? Так если они не используются, то вроде бы не потребуется пересборки... Вот не понял.

     
     
  • 2.42, Аноним (-), 14:01, 21/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > Простите, может быть я наивен, но что надо сделать с библиотекой, чтобы
    > сломать двоичную совместимость?

    Например заменить какую-нибудь функцию макросом (или inline-функцией).

    > Какие-нибудь функции удалили, что ли? Так если они не используются, то вроде бы не потребуется пересборки...

    А если используются?

     
  • 2.49, angra (ok), 11:20, 22/10/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    Если удалить функции, то изменится еще и API. Наверное самый простой способ поломать ABI без API это изменить что-либо из экспортируемых типов или структур.
     
     
  • 3.63, freehck (ok), 11:52, 24/10/2017 [^] [ответить]    [к модератору]  
  • +/
    > Наверное самый простой способ поломать ABI без API это изменить
    > что-либо из экспортируемых типов или структур.

    Спасибо за исчерпывающий ответ!

     
  • 1.62, vantoo (ok), 13:39, 23/10/2017 [ответить] [показать ветку] [····]    [к модератору]  
  • +/
    В свое время перечитал от корки до корки "Gawk: Effective AWK Programming" и не пожалел. Использую его где только это может пригодится.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:


    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру
    Hosting by Ihor