LINUX.ORG.RU

GNU sed 4.3

 ,


0

1

После 5 лет разработки состоялся релиз реализации потокового редактора sed от проекта GNU — 4.3.

Основные изменения:

  • Ускорена в 10 раз работа регулярных выражений.
  • Появилась новая опция --sandbox, запрещающая выполнение программ при использовании команд r/w/e.
  • Теперь используется unlocked-io в случае доступности на системе, что позволит ускорить операции ввода-вывода.
  • Удалена устаревшая команда L,
  • Исправлено множество ошибок.

>>> Подробности

★★★★★

Проверено: jollheef ()

Ускорена в 10 раз работа регулярных выражений.

Нет предела совершенству. Что они там сделали?

AlarinPerfect ()
Ответ на: комментарий от AlarinPerfect

По ссылке ходим. Там и ссылка на просмотр разницы со старым кодом.

** Improvements

sed's regular expression matching is now typically 10x faster

sed now uses unlocked-io where available, resulting in faster I/O operations.

Bfgeshka ★★★★★ ()
Последнее исправление: Bfgeshka (всего исправлений: 1)

Ускорена в 10 раз работа регулярных выражений.

Теперь шахматы на нем тормозить не будут?

Twissel ★★★★★ ()

unlocked-io

Что это?

Появилась новая опция --sandbox, запрещающая выполнение программ при использовании команд r/w/e.

За это надо поесть!

r3lgar ★★★ ()
Последнее исправление: r3lgar (всего исправлений: 1)

Pелиз реализации реализуемого реализатора.

anonymous ()

А где drBatty? Почему он не скажет своё последнее слово?

anonymous ()

Ускорена в 10 раз работа регулярных выражений.

<Дежурная шутка про sleep/>

ox55ff ()
Ответ на: комментарий от r3lgar

То-то я думаю, что я сегодня всё ем и ем...

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

То-то я думаю, что я сегодня всё ем и ем...

Не только же пить.

r3lgar ★★★ ()

Ура! Со следующей версией авк догонит.

Что за L? Кто-то ей хоть раз пользовался?

evilface ★★ ()
Ответ на: комментарий от evilface

Что за L? Кто-то ей хоть раз пользовался?

The «L» command (format a paragraph like the fmt(1) command would)
has been listed in the documentation as a failed experiment for at
least 10 years. That command is now removed.


Всё равно не понял, зачем оно надо. Ну и ладно с ним, про неё даже в мане нет ничего.

И не нашёл в оригинале упомянутой выше ссылки на различия в коде, дающие выигрыш в 10 раз, был бы благодарен, если бы кто-то дал.

evilface ★★ ()

Ну супер новость; теперь уиндозу точно крышка.

Infra_HDC ★★★★ ()
Ответ на: комментарий от Twissel

Теперь шахматы на нем тормозить не будут?

ЩИТО?

anonymous ()
Ответ на: комментарий от evilface
`L N'
     This GNU `sed' extension fills and joins lines in pattern space to
     produce output lines of (at most) N characters, like `fmt' does;
     if N is omitted, the default as specified on the command line is
     used.  This command is considered a failed experiment and unless
     there is enough request (which seems unlikely) will be removed in
     future versions.

maloi ★★★★★ ()
Ответ на: комментарий от maloi

Понятно, спасибо.

В дебиановском мане на сед этого действительно нет. sed версии 4.2.2.

evilface ★★ ()
Ответ на: комментарий от anonymous

ЩИТО?

Шахматы, арканоид, Марио, гравити, флаппи бёрд и превеликое множество других игр имеют реализацию на sed, ага.

evilface ★★ ()
Ответ на: комментарий от Twissel

Теперь это надо патчить:

> sed -f chess.sed
sed: файл chess.sed строка 312: строки для команды `y' имеют разную длину

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

Всё что касается y/// в оригинале:


  The 'y' (transliterate) operator once again works with a NUL byte
  on the RHS.  E.g., sed 'y/b/\x00/' now works like tr b '\0'.  GNU sed
  has never before recognized \x00 in this context. 


Так-то в исходнике строка
y/pqkinrPQKINR12345678abcd/♟♛♚♝♞♜♙♕♔♗♘♖987654323579/
,
которая и раньше по идее работать не должна, ибо юникод и символы разной длины. Но sed, насколько я помню, поддерживает юникод, а значит должна, как и сейчас. На 4.2.2 точно работает, сейчас проверил.
Вывод: либо раньше «случайно» поддерживался юникод, либо он сейчас сломался, либо я чего-то не так понимаю.

evilface ★★ ()
Ответ на: комментарий от evilface

Специально собрал, с этим выражением нормально работает.

evilface ★★ ()
Ответ на: комментарий от evilface

Да, игра играет. saahriktu, ты что-то сделал не так.

% ../sed-4.3/sed/sed --version 
../sed-4.3/sed/sed (GNU sed) 4.3
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.

evilface ★★ ()
Ответ на: комментарий от evilface

Так это же саахрикту, у него юникодофобия. Конечно, работать не будет.

intelfx ★★★★★ ()
Ответ на: комментарий от saahriktu
% export LANG="ru_RU.KOI8-R"

% ../sed-4.3/sed/sed -f ./chess.sed 
../sed-4.3/sed/sed: file ./chess.sed line 312: strings for `y' command are different lengths

% sed -f ./chess.sed                                                              
sed: file ./chess.sed line 312: strings for `y' command are different lengths


В общем, чуть выше написали раньше, чем я успел проверить. При koi8 юникод и в старом седе не работает.

evilface ★★ ()
Ответ на: комментарий от evilface

Да, так и есть. Автор там широко задействовал юникодные символы.

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

Юникодофоб! Смотрите на юникодофоба! *Тычу пальцем*

Wizard_ ★★★★★ ()
Ответ на: комментарий от maloi

Ух ты. А я и не знал, что в sed такое было. Ну теперь-то без разницы — раз до сих пор ни разу не понадобилась, значит, действительно «не нужно», и правильно выкинули :-)

DeVliegendeHollander ★★ ()
Ответ на: комментарий от Wizard_

Ну ты как будто в первый раз этого персонажа видишь.

Все уже насмотрелись на него.

DeVliegendeHollander ★★ ()
Ответ на: комментарий от saahriktu

Да, так и есть. Автор там широко задействовал юникодные символы.

А можете попробовать эксперемента ради сделать export LANG="en_US.UTF-8" перед запуском?

evilface ★★ ()
Ответ на: комментарий от evilface

Я уже, кажется, портанул под локаль KOI8-R: gopher://sdf.org/9/users/saahriktu/filez/notbyme/SedChess.tar.xz

Может быть не до конца портанул, но, вроде как, запускается и ходы делаются.

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

Ага, работает. В юнироде сломалось совсем, но когда ставлю локаль как раньше, шахматы отображаются буквами, поле усеяно знаками вопроса (какой-то неотображаемый символ, видимо), снизу надпись такая же. Возможно, причины в моей изначальной кодировке.

evilface ★★ ()
Ответ на: комментарий от evilface
export LANG="en_US.UTF-8"
sed -f chess.sed[br]
sed: file chess.sed line 5: unknown command: `<'

Причем, в системе по-умолчанию настроено ru_RU.UTF-8.

Sociopsih ★★ ()
Ответ на: комментарий от Sociopsih

Забавно, но на пятой строке (и рядом) даже символа такого нет.

evilface ★★ ()
Ответ на: комментарий от saahriktu

Автор там широко задействовал юникодные символы.

как будто это что-то плохое

NextGenenration ()
Ответ на: комментарий от NextGenenration

Одно дело юзать юникодные символы для сообщений. Тогда «iconv -c» никакую логику не ломает. И совсем другое дело пихать юникодные символы в сам код или логику.

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

усложнять себе жизнь ради 1.5 землекопа? они сами патч сделают. ты же уже патчил емнип ls чтоб не править конфиги?

NextGenenration ()
Ответ на: комментарий от NextGenenration

Это же какая должна быть логика чтобы юникод что-то в ней облегчал?!... Для большинства случаев ASCII выше крыши. При этом бинарные массивы никто не отменял. Совсем не обязательно работать с бинарными массивами через юникод.

saahriktu ★★★ ()
Ответ на: комментарий от NextGenenration

Константы можно хранить в массивах. Массивы - усложнение?

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

если работает и без массивов, то зачем массивы? даже если да(ответ на предыдущий вопрос), то массив всё равно надо выносить так как в нём юникод. усложнение десу

NextGenenration ()
Ответ на: комментарий от NextGenenration

Усложнение это или нет - зависит от точки зрения. С точки зрения Unixway'я максимально простым является тот код, от которого отделены данные. В отдельные файлы данных. Чтобы в коде был только код.

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

С точки зрения Unixway'я максимально простым является тот код, от которого отделены данные. В отдельные файлы данных

hello world уже два файла? вот так слепое следование усложняет простые вещи

NextGenenration ()
Ответ на: комментарий от NextGenenration

hello world уже два файла?

Да.

усложняет

Но, код-то упрощает. Unixway заточен именно на архитектурную простоту кода несмотря на остальные сложности. Зато без него архитектура резко усложняется несмотря на остальную простоту.

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

Но, код-то упрощает

Где? в коде нужно прописать какой файл открывать и что из него читать. неоправданное усложнение.

Зато без него архитектура резко усложняется несмотря на остальную простоту

в каком месте усложняется?

NextGenenration ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.