0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
1
<p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
2
<p>В прошлом большом релизе Ruby под номером 3.1.0<a>появился</a>новый компилятор и дебагер. А в этом релизе авторы работают над поддержкой<a>WASI</a>(The WebAssembly System Interface) и регулярными выражениями.</p>
2
<p>В прошлом большом релизе Ruby под номером 3.1.0<a>появился</a>новый компилятор и дебагер. А в этом релизе авторы работают над поддержкой<a>WASI</a>(The WebAssembly System Interface) и регулярными выражениями.</p>
3
<p><strong>WebAssembly.</strong> Разработчики добавили первичную поддержку WebAssembly на основе WASI-интерфейса. Это позволит запускать бинарные CRuby-файлы в браузере, бессерверных средах и встроенных WebAssembly/WASI-системах. На данный момент порт проходит базовые и bootstrap-тесты, но не использует Thread API.</p>
3
<p><strong>WebAssembly.</strong> Разработчики добавили первичную поддержку WebAssembly на основе WASI-интерфейса. Это позволит запускать бинарные CRuby-файлы в браузере, бессерверных средах и встроенных WebAssembly/WASI-системах. На данный момент порт проходит базовые и bootstrap-тесты, но не использует Thread API.</p>
4
Поддержка WebAssembly. Источник:<a>блог Ruby</a><p><strong>Регулярные выражения.</strong>Добавили задержку (timeout) для Regexp-сравнений. Timeout позволяет задавать время, за которое Regexp-выражение должны проверить, иначе появляется ошибка. Это даст разработчикам возможность предотвращать<a>ReDoS</a>-атаки заранее.</p>
4
Поддержка WebAssembly. Источник:<a>блог Ruby</a><p><strong>Регулярные выражения.</strong>Добавили задержку (timeout) для Regexp-сравнений. Timeout позволяет задавать время, за которое Regexp-выражение должны проверить, иначе появляется ошибка. Это даст разработчикам возможность предотвращать<a>ReDoS</a>-атаки заранее.</p>
5
Regexp.timeout = 1.0 /^a*b?a*$/ =~ "a" * 50000 + "x" #=> Regexp::TimeoutError is raised in one second<p><strong>Улучшения в оптимизации.</strong>Изменили и пофиксили следующие типы данных:</p>
5
Regexp.timeout = 1.0 /^a*b?a*$/ =~ "a" * 50000 + "x" #=> Regexp::TimeoutError is raised in one second<p><strong>Улучшения в оптимизации.</strong>Изменили и пофиксили следующие типы данных:</p>
6
<p>Hash.</p>
6
<p>Hash.</p>
7
<ul><li>Hash#shift теперь возвращает nil, если хеш пуст.</li>
7
<ul><li>Hash#shift теперь возвращает nil, если хеш пуст.</li>
8
</ul><p>MatchData.</p>
8
</ul><p>MatchData.</p>
9
<ul><li>Добавили MatchData#byteoffset.</li>
9
<ul><li>Добавили MatchData#byteoffset.</li>
10
</ul><p>Module.</p>
10
</ul><p>Module.</p>
11
<ul><li>Добавили Module.used_refinements.</li>
11
<ul><li>Добавили Module.used_refinements.</li>
12
<li>Добавили Module#refinements.</li>
12
<li>Добавили Module#refinements.</li>
13
<li>Добавили Module#const_added.</li>
13
<li>Добавили Module#const_added.</li>
14
</ul><p>Proc.</p>
14
</ul><p>Proc.</p>
15
<ul><li>Proc#dup возвращает экземпляр подкласса.</li>
15
<ul><li>Proc#dup возвращает экземпляр подкласса.</li>
16
<li>Proc#parameters теперь принимает лямбда-ключи.</li>
16
<li>Proc#parameters теперь принимает лямбда-ключи.</li>
17
</ul><p>Refinement.</p>
17
</ul><p>Refinement.</p>
18
<ul><li>Добавили Refinement#refined_class.</li>
18
<ul><li>Добавили Refinement#refined_class.</li>
19
</ul><p>Set.</p>
19
</ul><p>Set.</p>
20
<ul><li>Set теперь доступен как builtin-класс.</li>
20
<ul><li>Set теперь доступен как builtin-класс.</li>
21
</ul><p>String.</p>
21
</ul><p>String.</p>
22
<ul><li>Добавили String#byteindex и String#byterindex.</li>
22
<ul><li>Добавили String#byteindex и String#byterindex.</li>
23
<li>Обновили версию Unicode до 14.0.0 и Emoji - до 14.0.</li>
23
<li>Обновили версию Unicode до 14.0.0 и Emoji - до 14.0.</li>
24
<li>Добавили String#bytesplice.</li>
24
<li>Добавили String#bytesplice.</li>
25
</ul><p>Struct.</p>
25
</ul><p>Struct.</p>
26
<ul><li>Struct-класс теперь можно инициализировать без<strong>keyword_init: true</strong>в <strong>Struct.new</strong>.</li>
26
<ul><li>Struct-класс теперь можно инициализировать без<strong>keyword_init: true</strong>в <strong>Struct.new</strong>.</li>
27
</ul><p><strong>Что ещё?</strong>Убрали сторонние бандлеры -<a>libyaml</a>,<a>libffi</a> - и сделали функцию поиска паттернов для языков стабильной.</p>
27
</ul><p><strong>Что ещё?</strong>Убрали сторонние бандлеры -<a>libyaml</a>,<a>libffi</a> - и сделали функцию поиска паттернов для языков стабильной.</p>
28
<p>Подробнее прочитать обо всех изменениях можно на <a>сайте Ruby</a>, а протестировать новые функции - в <a>TryRuby Playground</a>.</p>
28
<p>Подробнее прочитать обо всех изменениях можно на <a>сайте Ruby</a>, а протестировать новые функции - в <a>TryRuby Playground</a>.</p>
29
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
29
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>