LINUX.ORG.RU

Представлен форк Perl: «stableperl»

 


1

5

Марк Леманн, также известный как schmorp, создатель библиотеки libev, AnyEvent и Coro, объявил о создании форка Perl под названием «stableperl».

Как известно, Марк постоянно конфликтовал с разработчиками Perl5 из-за регулярных нарушений обратной совместимости в новых релизах, а релиз Perl 5.22.0, который привёл к неработоспособности Coro, очевидно, стал последней каплей.

По словам Марка, Stableperl — это попытка восстановления стабильности и совместимости до уровня, о котором говорит официальная документация Perl. Сам форк рассматривается как замена стандартному Perl, который будет поддерживаться и после окончания обычного времени поддержки. В нём исправлены наиболее заметные ошибки, которые текущие разработчики Perl5 «отказываются» исправлять: в первую очередь производительность хеша и порча данных в фазе глобального деструктора. Также stableperl рассматривается как защита от дальнейших поломок, которые могут допустить текущие разработчики Perl5.

Установив stableperl можно продолжать использовать CPAN, а также использовать модули, которые будут специально разработаны под stableperl. Форк не будет принимать патчи, которые нарушают обратную совместимость, т.е. там не будет новых возможностей и фич, основная цель — совместимость со стандартным Perl.

Первый релиз stableperl-5.22.0-1.001.

Его основные отличия от Perl 5.22:

  • Удалены изменения, которые запрещают модификацию публичных структур Perl (EXT_MGVTBL и PadlistNAMES). Они использовались в модуле Coro.
  • Функция хеша заменена на FNV-1A. Это достаточно простой и быстрый алгоритм для функции хеширования и даёт прирост ~40%.
  • Удалён флаг -fstack-protect, который невозможно было переопределить пользователю. Он не работает на всех платформах и может создать проблемы.

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

Deleted

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

Лал, что еще тут можно сказать. Пользователи языков без стандартов обречены на такие страдания.

loz ★★★★★
()

Стабильно мертвяк?

anonymous
()

Больше перлов. Хороших! Разных!

b0c0813f
()

В Москве злоумышленники похитили биотуалет

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

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

Шестой то когда?

Под Рождество.

время упускают.

А куда торопиться? p5 и p6 совсем разные ЯП, независимые группы разработчиков.

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

А чего его ждать, если он многократно сосёт по скорости.

anonymous
()

В правильно понял, что когда у чела либа не заработала под новым перлом он решил переписать не либу а перл?

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

Он решил всего лишь форкнуть Пёрл, решить некоторые проблемы, которые были в старой версии.

Deleted
()
Последнее исправление: romeo250501 (всего исправлений: 2)

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

buratino ★★★★★
()

Марк Леманн

А, этот тот клоун, который задефайнил запятую? Помню сколько нервов потратил, стараясь осознать величину его гениальности. Точно не помню, но что-то вроде:

#define EV_A_ MAIN_LOOP,
makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 1)

Классная шутка, учитывая скорость развития Perl.

Nebuchadnezzar ★★★★
()

Кто там в соседней ветке фапал на динамическое развитие гибчайшего и мощнейшего? Вот и первые жертвы «развития», гы-гы.

anonymous
()

порча данных в фазе глобального деструктора

Готов к продакшн, лол.

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

Люди Perl 6 ждут

Разве последний ждавший не умер 2 года назад?

anonymous
()
Ответ на: комментарий от ya-betmen

когда у чела либа не заработала под новым перлом он решил переписать не либу а перл?

палец такому в рот не клади :)

pihter ★★★★★
()

Ночь, город, предатели спят
Ад печей станет им живым кошмаром
Суд идет и работает морг,
Газовые камеры и душ с кислотою

anonymous
()
Ответ на: комментарий от ya-betmen

Он написал, что проще переписать перл, чем переделывать модуль. В любом случае это лучше, чем прибить гвоздями Coro к Perl 5.20 и ждать века пока не придёт новая команда мейнтейнеров перл и вернёт все взад.

Вобщем, если не нужен Coro, то и форк тебе не понадобится. А с другой стороны, чем больше форков, тем лучше. Глядишь очко у текущей команды заиграет, что все уйдут на stableperl и спустятся на землю, начнут думать о реальной совместимости, а не той, что выдумали.

anonymous
()

Ждем в дистрибутивах.

dexpl ★★★★★
()

велосипедов не может быть много

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

А, этот тот клоун, который задефайнил запятую? Помню сколько нервов потратил, стараясь осознать величину его гениальности.

У меня для тебя плохие новости: это не Леманн клоун, это ты балбес. libev отлично эмбедится, позволяя даже отказаться от дополнительного параметра контекста при необходимости.

До тебя, видимо, не доперло, зачем нужны EV_A_ и EV_A, а также EV_P_ и EV_P_?

kawaii_neko ★★★★
()

Что? Зачем?

т.е. там не будет новых возможностей и фич, основная цель — совместимость со стандартным Perl.

А кто такой «стандартный Perl» с которым должна быть совместимость? Perl-5.22 совместим со стандартным Perl?

Функция хеша заменена на FNV-1A. Это достаточно простой и быстрый алгоритм для функции хеширования и даёт прирост ~40%.

А зачем этот алгоритм был заменён на какой-то другой в Perl-5.22? Только ради тормозов?

Camel ★★★★★
()

Он не работает на всех платформах и может создать проблемы

Он работает не на всех платформах и может создать проблемы

/fixed

no-such-file ★★★★★
()
Ответ на: Что? Зачем? от Camel

А кто такой «стандартный Perl» с которым должна быть совместимость? Perl-5.22 совместим со стандартным Perl?

Стандартный perl - это публичные интерфейсы (внешние, API). У Марка модуль использует особенности внутренних структур ядра, а внутренние структуры могут изменяться. По логике, Марк должен был сам пофиксить CORO (http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg228290.html):

But it's not our responsibility to fix every CPAN module that relies on some internal implementation detail of the perl core.

Но похоже это сильно сложно (http://schplog.schmorp.de/2015-06-06-a-stable-perl.html):

Some troubling patches have been reverted.

Two changes in Perl that prohibit modifying some public perl structures (EXT_MGVTBL and PadlistNAMES). Coro needs to access a lot of the more arcane details of perl, and is very difficult to get working without access to these structures.

These changes are trivial to undo in perl, and very hard to work around from within Coro.

Тем не менее, эта спорная ситуация похоже не в пользу Марка, хоть и его поступок заслуживает уважения.

А зачем этот алгоритм был заменён на какой-то другой в Perl-5.22? Только ради тормозов?

Вы так пишете как будто до 5.22 был FNV-1A.

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

Кстати вот нашел патч http://perl5.git.perl.org/perl.git/commitdiff/73949fca082fe50bf47755c5ffa3282... который возвращает работоспособность CORO. Разработчики пошли навстречу несмотря на то что стабильность внутренних структур ядра не была заявленной.

Как видим в очередной раз в perl-сообществе здравый смысл берет верх. И это здорово!!

Но форк stableperl лишним не будет.

anonymous
()

Удалены изменения, которые запрещают модификацию публичных структур Perl (EXT_MGVTBL и PadlistNAMES). Они использовались в модуле Coro.
Функция хеша заменена на FNV-1A. Это достаточно простой и быстрый алгоритм для функции хеширования и даёт прирост ~40%.
Удалён флаг -fstack-protect, который невозможно было переопределить пользователю. Он не работает на всех платформах и может создать проблемы.

Дырявая перловка!

ЗЫ: Разрабов классического перла поддерживаю!

anonymous
()

порча данных в фазе глобального деструктора

Вот бы увидеть все детали, а то сие выглядит как будто perl содержит известный баг и разработчики отказываются его фиксить.

ЕМНИП, порча данных в фазе глобального деструктора возможна когда программист не следует perlapi. Разработчики ядра отказывают потому что это не их дело, хотя они могли бы нарастить логику закрытия сессии интепретатора. Расскажите в деталях если кто помнит подробности.

anonymous
()

Диванные кукаретики

Диванные кукаретики в интернете:

Лал, что еще тут можно сказать. Пользователи языков без стандартов обречены на такие страдания.

Стабильно мертвяк?

Кто там в соседней ветке фапал на динамическое развитие гибчайшего и мощнейшего? Вот и первые жертвы «развития», гы-гы.

Готов к продакшн, лол.

Дырявая перловка!

продолжение следует..

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

До тебя, видимо, не доперло, зачем нужны EV_A_ и EV_A, а также EV_P_ и EV_P_?

Для того, чтобы сэкономить запятую?

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

На моей машине файл /usr/include/ev.h строка 170

#define EV_A_ EV_A,

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

ev_io_stop (EV_A_ w);

Вроде как вызов функции, но в тоже время вроде как указан тип переменной w )

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 2)
Ответ на: комментарий от makoven

Для того, чтобы ты мог сделать EV_A/EV_A_ пустыми (не передавать дополнительных параметров) и ничего не сломалось. Надеюсь, ты не занимаешься программированием на C.

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

Допустим, у тебя в приложении всего один event loop и по каким-то причинам ты решил глобально сэкономить на передаче дополнительного параметра. Нет ничего проще:

#define EV_MULTIPLICITY 0
#include "ev.h"

...
void watcher(EV_P_ ev_io *io, int revents)
{
  ev_tstamp now = ev_now(EV_A);
  ev_io_stop(EV_A_ io);
  /* do smth */

  ev_io_start(EV_A_ io);
}
Затем одного цикла стало недостаточно (или понадобились дополнительные параметры). Ты просто переопределяешь EV_A_/EV_A и EV_P_/EV_P, и твое приложение отлично компилируется и работает. Если бы был только один вариант с EV_A/EV_P, тебе бы приходилось добавлять/убирать запятые после них.

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

из ev.h

/* support multiple event loops? */
#if EV_MULTIPLICITY
struct ev_loop;
# define EV_P  struct ev_loop *loop               /* a loop as sole parameter in a declaration */
# define EV_P_ EV_P,                              /* a loop as first of multiple parameters */
# define EV_A  loop                               /* a loop as sole argument to a function call */
# define EV_A_ EV_A,                              /* a loop as first of multiple arguments */
# define EV_DEFAULT_UC  ev_default_loop_uc_ ()    /* the default loop, if initialised, as sole arg */
# define EV_DEFAULT_UC_ EV_DEFAULT_UC,            /* the default loop as first of multiple arguments */
# define EV_DEFAULT  ev_default_loop (0)          /* the default loop as sole arg */
# define EV_DEFAULT_ EV_DEFAULT,                  /* the default loop as first of multiple arguments */
#else
# define EV_P void
# define EV_P_
# define EV_A
# define EV_A_
# define EV_DEFAULT
# define EV_DEFAULT_
# define EV_DEFAULT_UC
# define EV_DEFAULT_UC_
# undef EV_EMBED_ENABLE
#endif

Вас тоже в кукаретики, извините.

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

Долго медитировал над твоим постом и постом злобного анонимуса ниже. Какое-то смутное понимание появилось: кажется, эти кульбиты с дефайнами нужны, чтобы писать код, который одинаково будет работать и с лупом по-умолчанию и с лупом не по-умолчанию.

Спасибо за разъяснения.

А что скажете про libuv? Стоит ли использвать его вместо libev?

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

А что скажете про libuv?

Не доводилось использовать.

У libuv другая идеология (completion callbacks вместо readiness callbacks), заморочки на поддержку macos/windows, которые мне неинтересны, ну и функционал побогаче.

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

Долго медитировал над твоим постом и постом злобного анонимуса ниже. Какое-то смутное понимание появилось: кажется, эти кульбиты с дефайнами нужны, чтобы писать код, который одинаково будет работать и с лупом по-умолчанию и с лупом не по-умолчанию.

Я не злобный, просто достали кукаретики и быдлота. Как только новость про perl, так сразу набегают кукаретики из-за своей обиды, т.к. их осилил perl (а не они его).

А вы вообще назвали Марка клоуном:

Марк Леманн

А, этот тот клоун, который задефайнил запятую?

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

Марк далеко не дурак, и совсем не кукаретик как вы. Просто посмотрите на количество модулей http://search.cpan.org/~mlehmann/. Я знаю на деле как он разговаривает и реагирует, т.к. когда-то мы с ним пересекались по разработке libev. А вы не просто кукаретик, вы то самое быдло с ЧСВ. People = shit.

Честь имею.

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

Pork, лол. Мусульмане на шаг не подойдут.

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

Нет.

У тебя слова, а у меня прецеденты. Так что отдыхай, кукаретик.

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

а не деле оказывается что вы не осознавали своего ламерства

Я прекрасно осознаю свое ламерство и никогда его особо не скрывал )

Может вы развеете мои подсознательные страхи относительно libev, не дающие мне начать осваивать его. Скажем, добавил я в луп десяток файловых дескрипторов, сокетов и таймеров. Могу я быть уверен, что libev ограничится select-ом, и не породит батарею тредов и форков?

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

Я прекрасно осознаю свое ламерство и никогда его особо не скрывал )

То есть ты осознавая свое ламерство назвал Марка клоуном? Ты школьник или идиот?

Может вы развеете мои подсознательные страхи относительно libev, не дающие мне начать осваивать его. Скажем, добавил я в луп десяток файловых дескрипторов, сокетов и таймеров. Могу я быть уверен, что libev ограничится select-ом, и не породит батарею тредов и форков?

С быдло разговор очень короткий: да пошел ты.

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

У какой бугурт у перлофага который день! Огонь!

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