Какие части данных/когда экспериментальны?

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

Фон

use feature "switch" был в Perl с 5.10. Начиная с 5.10 по 5.14, perlsyn указывает, что это стабильная поддерживаемая функция.

Начиная с 5.16, однако perlsyn начинает называть его "экспериментальной функцией переключения" и становится намного более запутанным в отношении того, что считается экспериментальные.

Части документации, похоже, указывают, что все об этой функции экспериментально:

Под функцией "switch" Perl получает экспериментальные ключевые слова given, when, default, continue и break.

Там даже целый раздел о Экспериментальные данные о заданных и когда.

Однако, perlsyn также говорит, что "foreach - неэкспериментальный способ установки локализатора" и дает пример, который, по-видимому, подразумевает, что foreach/when не является экспериментальным.

Насколько я могу судить, "экспериментальный" язык исходил из commit c2f1e22, который ссылается на RT # 90926, который по-прежнему не дает большого контекста, даже если он сопряжен с RT # 90906.

Ответ 1

Получена ли вся функция "переключения"?

Нет. Это всегда было.

Обновление: О, вау, может быть, я ошибаюсь. Я не могу найти упоминания об этом в 5.10.0 или .1. Может, это не так? Или, может быть, они забыли это отметить? В любом случае, кажется, они перепутались хуже, чем я думал, если так! Но, основываясь на том, что я видел с тех пор, я думаю, что этот урок был изучен. (например, я все еще думаю, что values $ref - плохая идея, но по крайней мере она была отмечена экспериментальной от дня 1).

Есть ли в ней части, на которые я могу положиться, без будущих версий Perl, нарушающих мой код?

Технически, нет, хотя разработчики всегда осторожны, когда дело доходит до обратной совместимости.

В общем, какова политика изменения стабильных характеристик для экспериментальных?

Я не вижу, чтобы это происходило. Вместо этого будет использоваться процесс устаревания.


Изменения до сих пор:

  • given меняется от создания лексического $_ до локализации $_, например, для циклов foreach в 5.18 (или это уже произошло в 5.16?).

  • 5.10.1 произошли значительные изменения в интеллектуальном сопоставлении *. Не используйте (smart-matching in) 5.10.0.

Возможные будущие изменения:

  • Поведение smart-matching * по-прежнему является горячей темой.

* — Правда, это особенность, отличная от заданной-когда, но она такая же или тесно связана с большинством людей.