Alexander Kuklev (akuklev) wrote,
Alexander Kuklev
akuklev

Category:
  • Music:

Perl

Давеча товарищ Темерев задумал в Перле захреначить незахреначиваемое.
А именно, воспротивиться завету великого Ларри Уолла «full qualified idenifier is context independent».

Когда на перлмонкс сказали, что это принципиально невозможно, я сильно заинтересовался вопросом.
На деле выяснилось, что для создания принципиально невозможного мне требуется порядка 20 часов непрерывной работы, google.com (1 шт) и исходники языка программирования (1 шт, дохрена мегабайт и нихрена непонятно).

Херовина работает. Использование выглядит так:

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

use namespace New::Root::Context;

# А теперь у нас рутовым контекстом
# (только для дочерних пакетов, для
# обычных переменных ничего не изменилось)
# Стал New::Root::Context!
#
# Все дочерние пакеты старого дерева
# запихнуты в ROOT::blablabla.

# Если надо ROOT переименовать, то
# работает так:

use namespace New::Root::Context, root => 'TOOR';


Работает эта фиговина весьма dirtyhack'но, но для статических пакетов стопроцентно стабильно.
Для динамически создаваемых работает, скажем так, приемлимо. На поверхности никаких глюков нет, базовые юнит-тесты проходят без нареканий. Т.е. всё хорошо работает, но неожиданно может какая-нибудь глюка всплыть и никто (кроме меня и Larry Wall'а) не догадается, откуда.
Ну и конечно при динамическом создании объектов никакой thread safety.

Какая нахер thread safety, когда пакет нагло лезет в compiler globals? :(

Но работает, сцукно. Работает.

Чего-то я уже спать хочу, хотя за окном всё ещё светло.. А, это УЖЕ светло!
Ну, тем более спать. :-)
Subscribe

  • Прогресс

    Десять дней назад, вторая ступень SpaceX'овского корабля Starship своим ходом слетала своим ходом на десять километров вверх, и усмепшно приземлилась…

  • О водосбережении

    Как известно, питьевая вода во многих странах дефицитный ресурс. И даже в дождливой Германии летом иногда случаются засухи, в результате которых она…

  • 36

    Традиционный деньрожденный пост. Год выдался необычный. :)

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 8 comments