HTML Diff
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" #=&gt; Regexp::TimeoutError is raised in one second<p><strong>Улучшения в оптимизации.</strong>Изменили и пофиксили следующие типы данных:</p>
5 Regexp.timeout = 1.0 /^a*b?a*$/ =~ "a" * 50000 + "x" #=&gt; 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>