diff --git a/ru/news/_posts/2023-03-28-redos-in-uri-cve-2023-28755.md b/ru/news/_posts/2023-03-28-redos-in-uri-cve-2023-28755.md new file mode 100644 index 0000000000..2f22074e8e --- /dev/null +++ b/ru/news/_posts/2023-03-28-redos-in-uri-cve-2023-28755.md @@ -0,0 +1,46 @@ +--- +layout: news_post +title: "CVE-2023-28755: Уязвимость ReDoS в URI" +author: "hsbt" +translator: "ablzh" +date: 2023-03-28 01:00:00 +0000 +tags: security +lang: ru +--- + +Мы выпустили версии 0.12.1, 0.11.1, 0.10.2 и 0.10.0.1 гема uri с исправлением уязвимости отказа в обслуживании через регулярные выражения (ReDoS). +Этой уязвимости присвоен CVE идентификатор [CVE-2023-28755](https://www.cve.org/CVERecord?id=CVE-2023-28755). + +## Подробности + +В компоненте URI обнаружена уязвимость ReDoS. Парсер URI некорректно обрабатывает недопустимые URL с определёнными символами. Это увеличивает время парсинга строк в объекты URI. + +Этой уязвимости подвержены версии 0.12.0, 0.11.0, 0.10.1, 0.10.0 гема `uri` и все версии до 0.10.0. + +## Рекомендуемые действия + +Мы рекомендуем обновить гем `uri` до 0.12.1. Для совместимости с версией, поставляемой со старыми ветками Ruby, вместо этого можно обновиться следующим образом: + +* Для пользователей Ruby 2.7: обновите до `uri` 0.10.0.1 +* Для пользователей Ruby 3.0: обновите до `uri` 0.10.2 +* Для пользователей Ruby 3.1: обновите до `uri` 0.11.1 +* Для пользователей Ruby 3.2: обновите до `uri` 0.12.1 + +Для обновления можно использовать `gem update uri`. Если вы используете bundler, добавьте `gem "uri", ">= 0.12.1"` (или другую версию, указанную выше) в ваш `Gemfile`. + +## Уязвимые версии + +* Гем uri 0.12.0 +* Гем uri 0.11.0 +* Гем uri 0.10.1 +* Гем uri 0.10.0 и более ранние версии + +## Благодарности + +Благодарим [Dominic Couture](https://hackerone.com/dee-see?type=user) за обнаружение этой проблемы. + +## История + +* Изначально опубликовано 2023-03-28 01:00:00 (UTC) +* Обновлён список уязвимых версий 2023-03-28 02:00:00 (UTC) +* Обновлена ссылка на CVE идентификатор 2023-03-28 04:00:00 (UTC) diff --git a/ru/news/_posts/2023-06-29-redos-in-uri-CVE-2023-36617.md b/ru/news/_posts/2023-06-29-redos-in-uri-CVE-2023-36617.md new file mode 100644 index 0000000000..8ff574658e --- /dev/null +++ b/ru/news/_posts/2023-06-29-redos-in-uri-CVE-2023-36617.md @@ -0,0 +1,45 @@ +--- +layout: news_post +title: "CVE-2023-36617: Уязвимость ReDoS в URI" +author: "hsbt" +translator: "ablzh" +date: 2023-06-29 01:00:00 +0000 +tags: security +lang: ru +--- + +Мы выпустили версии 0.12.2 и 0.10.3 гема uri с исправлением уязвимости отказа в обслуживании через регулярные выражения (ReDoS). +Этой уязвимости присвоен CVE идентификатор [CVE-2023-36617](https://www.cve.org/CVERecord?id=CVE-2023-36617). + +## Подробности + +В компоненте URI для Ruby до версии 0.12.1 включительно обнаружена уязвимость ReDoS. Парсер URI некорректно обрабатывает недопустимые URL с определёнными символами. Это увеличивает время парсинга строк в объекты URI с помощью rfc2396_parser.rb и rfc3986_parser.rb. + +ПРИМЕЧАНИЕ: эта проблема возникла из-за неполного исправления [CVE-2023-28755](https://www.ruby-lang.org/ru/news/2023/03/28/redos-in-uri-cve-2023-28755/). + +Гем `uri` версии 0.12.1 и все версии до 0.12.1 подвержены этой уязвимости. + +## Рекомендуемые действия + +Мы рекомендуем обновить гем `uri` до 0.12.2. Для совместимости с версией, поставляемой со старыми ветками Ruby, вместо этого можно обновиться следующим образом: + +* Для пользователей Ruby 3.0: обновите до `uri` 0.10.3 +* Для пользователей Ruby 3.1: обновите до `uri` 0.12.2 +* Для пользователей Ruby 3.2: обновите до `uri` 0.12.2, либо обновите Ruby до 3.2.3 + +Для обновления можно использовать `gem update uri`. Если вы используете bundler, добавьте `gem "uri", ">= 0.12.2"` (или другую версию, указанную выше) в ваш `Gemfile`. + +## Уязвимые версии + +* Гем uri 0.12.1 и более ранние версии + +## Благодарности + +Благодарим [ooooooo_q](https://hackerone.com/ooooooo_q) за обнаружение этой проблемы. + +Благодарим [nobu](https://github.com/nobu) за исправление этой проблемы. + +## История + +* Добавлены новые рекомендуемые действия для Ruby 3.2 2024-01-18 12:00:00 (UTC) +* Изначально опубликовано 2023-06-29 01:00:00 (UTC) diff --git a/ru/news/_posts/2024-01-18-ruby-3-2-3-released.md b/ru/news/_posts/2024-01-18-ruby-3-2-3-released.md new file mode 100644 index 0000000000..b742e71267 --- /dev/null +++ b/ru/news/_posts/2024-01-18-ruby-3-2-3-released.md @@ -0,0 +1,48 @@ +--- +layout: news_post +title: "Вышел Ruby 3.2.3" +author: "nagachika" +translator: "ablzh" +date: 2024-01-18 09:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.2.3. + +В этот релиз вошли многочисленные исправления ошибок. +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_2_3). + +В этот релиз также вошло обновление гема uri до версии 0.12.2, содержащее исправление уязвимости. +Подробности приведены ниже. + +* [CVE-2023-36617: Уязвимость ReDoS в URI]({%link ru/news/_posts/2023-06-29-redos-in-uri-CVE-2023-36617.md %}) + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.2.3" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-03-21-buffer-overread-cve-2024-27280.md b/ru/news/_posts/2024-03-21-buffer-overread-cve-2024-27280.md new file mode 100644 index 0000000000..652630a4a1 --- /dev/null +++ b/ru/news/_posts/2024-03-21-buffer-overread-cve-2024-27280.md @@ -0,0 +1,46 @@ +--- +layout: news_post +title: "CVE-2024-27280: Уязвимость чтения за границами буфера (buffer overread) в StringIO" +author: "hsbt" +translator: "ablzh" +date: 2024-03-21 4:00:00 +0000 +tags: security +lang: ru +--- + +Мы выпустили версии 3.0.1.1 и 3.0.1.2 гема StringIO с исправлением уязвимости чтения за границами буфера (buffer overread). +Этой уязвимости присвоен CVE идентификатор [CVE-2024-27280](https://www.cve.org/CVERecord?id=CVE-2024-27280). + +## Подробности + +Проблема обнаружена в StringIO 3.0.1, поставляемом с Ruby 3.0.x до 3.0.6 включительно и 3.1.x до 3.1.4 включительно. + +Методы `ungetbyte` и `ungetc` объекта StringIO могут читать за пределами строки, а последующий вызов `StringIO.gets` — возвращать содержимое памяти. + +Эта уязвимость не затрагивает StringIO 3.0.3 и новее, а также Ruby 3.2.x и новее. + +## Рекомендуемые действия + +Мы рекомендуем обновить гем StringIO до версии 3.0.3 или новее. Для совместимости с версией, поставляемой со старыми ветками Ruby, вместо этого можно обновиться следующим образом: + +* Для пользователей Ruby 3.0: обновите до `stringio` 3.0.1.1 +* Для пользователей Ruby 3.1: обновите до `stringio` 3.0.1.2 + +Примечание: StringIO 3.0.1.2 содержит не только исправление этой уязвимости, но и исправление ошибки [[Bug #19389]](https://github.com/ruby/ruby/commit/1d24a931c458c93463da1d5885f33edef3677cc2). + +Для обновления можно использовать `gem update stringio`. Если вы используете bundler, добавьте `gem "stringio", ">= 3.0.1.2"` в ваш `Gemfile`. + +## Уязвимые версии + +* Ruby 3.0.6 и более ранние версии +* Ruby 3.1.4 и более ранние версии +* Гем StringIO 3.0.1 и более ранние версии + +## Благодарности + +Благодарим [david_h1](https://hackerone.com/david_h1?type=user) за обнаружение этой проблемы. + +## История + +* Исправлена указанная уязвимая версия StringIO (3.0.2 -> 3.0.1) 2024-04-11 12:50:00 (UTC) +* Изначально опубликовано 2024-03-21 4:00:00 (UTC) diff --git a/ru/news/_posts/2024-03-21-rce-rdoc-cve-2024-27281.md b/ru/news/_posts/2024-03-21-rce-rdoc-cve-2024-27281.md new file mode 100644 index 0000000000..a2d95c69a8 --- /dev/null +++ b/ru/news/_posts/2024-03-21-rce-rdoc-cve-2024-27281.md @@ -0,0 +1,48 @@ +--- +layout: news_post +title: "CVE-2024-27281: Уязвимость удалённого выполнения кода (RCE) через .rdoc_options в RDoc" +author: "hsbt" +translator: "ablzh" +date: 2024-03-21 4:00:00 +0000 +tags: security +lang: ru +--- + +Мы выпустили версии 6.3.4.1, 6.4.1.1, 6.5.1.1 и 6.6.3.1 гема RDoc с исправлением уязвимости удалённого выполнения кода (RCE). +Этой уязвимости присвоен CVE идентификатор [CVE-2024-27281](https://www.cve.org/CVERecord?id=CVE-2024-27281). + +## Подробности + +Проблема обнаружена в RDoc с версии 6.3.3 по 6.6.2, поставляемом с Ruby 3.x до 3.3.0 включительно. + +При парсинге файла конфигурации RDoc `.rdoc_options` в формате YAML возможно внедрение объектов (object injection) с последующим удалённым выполнением кода, поскольку классы восстанавливаемых объектов не ограничены. + +При загрузке специально подготовленного кэша документации также возможно внедрение объектов (object injection) с последующим удалённым выполнением кода. + +## Рекомендуемые действия + +Мы рекомендуем обновить гем RDoc до версии 6.6.3.1 или новее. Для совместимости с версией, поставляемой со старыми ветками Ruby, вместо этого можно обновиться следующим образом: + +* Для пользователей Ruby 3.0: обновите до `rdoc` 6.3.4.1 +* Для пользователей Ruby 3.1: обновите до `rdoc` 6.4.1.1 +* Для пользователей Ruby 3.2: обновите до `rdoc` 6.5.1.1 + +Для обновления можно использовать `gem update rdoc`. Если вы используете bundler, добавьте `gem "rdoc", ">= 6.6.3.1"` в ваш `Gemfile`. + +Примечание: версии 6.3.4, 6.4.1, 6.5.1 и 6.6.3 содержат некорректное исправление. Вместо них рекомендуем обновиться до 6.3.4.1, 6.4.1.1, 6.5.1.1 и 6.6.3.1. + +## Уязвимые версии + +* Ruby 3.0.6 и более ранние версии +* Ruby 3.1.4 и более ранние версии +* Ruby 3.2.3 и более ранние версии +* Ruby 3.3.0 +* Гем RDoc 6.3.3 и более ранние версии, с 6.4.0 по 6.6.2, кроме версий с исправлениями (6.3.4, 6.4.1, 6.5.1) + +## Благодарности + +Благодарим [ooooooo_q](https://hackerone.com/ooooooo_q?type=user) за обнаружение этой проблемы. + +## История + +* Изначально опубликовано 2024-03-21 4:00:00 (UTC) diff --git a/ru/news/_posts/2024-04-23-arbitrary-memory-address-read-regexp-cve-2024-27282.md b/ru/news/_posts/2024-04-23-arbitrary-memory-address-read-regexp-cve-2024-27282.md new file mode 100644 index 0000000000..f057603898 --- /dev/null +++ b/ru/news/_posts/2024-04-23-arbitrary-memory-address-read-regexp-cve-2024-27282.md @@ -0,0 +1,42 @@ +--- +layout: news_post +title: "CVE-2024-27282: Уязвимость чтения по произвольному адресу памяти при поиске регулярными выражениями" +author: "hsbt" +translator: "ablzh" +date: 2024-04-23 10:00:00 +0000 +tags: security +lang: ru +--- + +Мы выпустили Ruby 3.0.7, 3.1.5, 3.2.4 и 3.3.1 с исправлением уязвимости чтения по произвольному адресу памяти при поиске регулярными выражениями. +Этой уязвимости присвоен CVE идентификатор [CVE-2024-27282](https://www.cve.org/CVERecord?id=CVE-2024-27282). + +## Подробности + +Проблема обнаружена в Ruby 3.x до версии 3.3.0 включительно. + +Если передать компилятору регулярных выражений Ruby данные злоумышленника, можно извлечь произвольные данные из кучи относительно начала текста, включая указатели и конфиденциальные строки. + +## Рекомендуемые действия + +Мы рекомендуем обновить Ruby до версии 3.3.1 или новее. Для совместимости со старыми ветками Ruby вместо этого можно обновиться следующим образом: + +* Для пользователей Ruby 3.0: обновите до 3.0.7 +* Для пользователей Ruby 3.1: обновите до 3.1.5 +* Для пользователей Ruby 3.2: обновите до 3.2.4 +* Для пользователей Ruby 3.3: обновите до 3.3.1 + +## Уязвимые версии + +* Ruby 3.0.6 и более ранние версии +* Ruby 3.1.4 и более ранние версии +* Ruby 3.2.3 и более ранние версии +* Ruby 3.3.0 + +## Благодарности + +Благодарим [sp2ip](https://hackerone.com/sp2ip?type=user) за обнаружение этой проблемы. + +## История + +* Изначально опубликовано 2024-04-23 10:00:00 (UTC) diff --git a/ru/news/_posts/2024-04-23-ruby-3-0-7-released.md b/ru/news/_posts/2024-04-23-ruby-3-0-7-released.md new file mode 100644 index 0000000000..c58f71ee57 --- /dev/null +++ b/ru/news/_posts/2024-04-23-ruby-3-0-7-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Вышел Ruby 3.0.7" +author: "hsbt" +translator: "ablzh" +date: 2024-04-23 10:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.0.7. + +В этот релиз вошли исправления уязвимостей. +Подробности приведены ниже. + +* [CVE-2024-27282: Уязвимость чтения по произвольному адресу памяти при поиске регулярными выражениями]({%link ru/news/_posts/2024-04-23-arbitrary-memory-address-read-regexp-cve-2024-27282.md %}) +* [CVE-2024-27281: Уязвимость удалённого выполнения кода (RCE) через .rdoc_options в RDoc]({%link ru/news/_posts/2024-03-21-rce-rdoc-cve-2024-27281.md %}) +* [CVE-2024-27280: Уязвимость чтения за границами буфера (buffer overread) в StringIO]({%link ru/news/_posts/2024-03-21-buffer-overread-cve-2024-27280.md %}) + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_0_7). + +После этого релиза поддержка Ruby 3.0 завершается (EOL). Иными словами, ожидается, что это последний релиз ветки Ruby 3.0. +Мы не будем выпускать Ruby 3.0.8 даже при обнаружении уязвимости, но можем выпустить его в случае серьёзной регрессии. +Мы рекомендуем всем пользователям Ruby 3.0 немедленно начать переход на Ruby 3.3, 3.2 или 3.1. + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.0.7" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-04-23-ruby-3-1-5-released.md b/ru/news/_posts/2024-04-23-ruby-3-1-5-released.md new file mode 100644 index 0000000000..45059a30a9 --- /dev/null +++ b/ru/news/_posts/2024-04-23-ruby-3-1-5-released.md @@ -0,0 +1,49 @@ +--- +layout: news_post +title: "Вышел Ruby 3.1.5" +author: "hsbt" +translator: "ablzh" +date: 2024-04-23 10:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.1.5. + +В этот релиз вошли исправления уязвимостей. +Подробности приведены ниже. + +* [CVE-2024-27282: Уязвимость чтения по произвольному адресу памяти при поиске регулярными выражениями]({%link ru/news/_posts/2024-04-23-arbitrary-memory-address-read-regexp-cve-2024-27282.md %}) +* [CVE-2024-27281: Уязвимость удалённого выполнения кода (RCE) через .rdoc_options в RDoc]({%link ru/news/_posts/2024-03-21-rce-rdoc-cve-2024-27281.md %}) +* [CVE-2024-27280: Уязвимость чтения за границами буфера (buffer overread) в StringIO]({%link ru/news/_posts/2024-03-21-buffer-overread-cve-2024-27280.md %}) + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_1_5). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.1.5" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-04-23-ruby-3-2-4-released.md b/ru/news/_posts/2024-04-23-ruby-3-2-4-released.md new file mode 100644 index 0000000000..db72f38f76 --- /dev/null +++ b/ru/news/_posts/2024-04-23-ruby-3-2-4-released.md @@ -0,0 +1,48 @@ +--- +layout: news_post +title: "Вышел Ruby 3.2.4" +author: "nagachika" +translator: "ablzh" +date: 2024-04-23 10:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.2.4. + +В этот релиз вошли исправления уязвимостей. +Подробности приведены ниже. + +* [CVE-2024-27282: Уязвимость чтения по произвольному адресу памяти при поиске регулярными выражениями]({%link ru/news/_posts/2024-04-23-arbitrary-memory-address-read-regexp-cve-2024-27282.md %}) +* [CVE-2024-27281: Уязвимость удалённого выполнения кода (RCE) через .rdoc_options в RDoc]({%link ru/news/_posts/2024-03-21-rce-rdoc-cve-2024-27281.md %}) + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_2_4). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.2.4" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-04-23-ruby-3-3-1-released.md b/ru/news/_posts/2024-04-23-ruby-3-3-1-released.md new file mode 100644 index 0000000000..e7a6dd2b27 --- /dev/null +++ b/ru/news/_posts/2024-04-23-ruby-3-3-1-released.md @@ -0,0 +1,48 @@ +--- +layout: news_post +title: "Вышел Ruby 3.3.1" +author: "naruse" +translator: "ablzh" +date: 2024-04-23 10:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.3.1. + +В этот релиз вошли исправления уязвимостей. +Подробности приведены ниже. + +* [CVE-2024-27282: Уязвимость чтения по произвольному адресу памяти при поиске регулярными выражениями]({%link ru/news/_posts/2024-04-23-arbitrary-memory-address-read-regexp-cve-2024-27282.md %}) +* [CVE-2024-27281: Уязвимость удалённого выполнения кода (RCE) через .rdoc_options в RDoc]({%link ru/news/_posts/2024-03-21-rce-rdoc-cve-2024-27281.md %}) + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_3_1). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.3.1" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-05-16-dos-rexml-cve-2024-35176.md b/ru/news/_posts/2024-05-16-dos-rexml-cve-2024-35176.md new file mode 100644 index 0000000000..8066c9ca5e --- /dev/null +++ b/ru/news/_posts/2024-05-16-dos-rexml-cve-2024-35176.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "CVE-2024-35176: Уязвимость DoS в REXML" +author: "kou" +translator: "ablzh" +date: 2024-05-16 05:00:00 +0000 +tags: security +lang: ru +--- + +В геме REXML обнаружена уязвимость отказа в обслуживании (DoS). Этой уязвимости присвоен CVE идентификатор [CVE-2024-35176](https://www.cve.org/CVERecord?id=CVE-2024-35176). Настоятельно рекомендуем обновить гем REXML. + +## Подробности + +Парсинг XML-документа с большим количеством `>` в значении атрибута может занимать у гема REXML много времени. + +Обновите гем REXML до версии 3.2.7 или новее. + +## Уязвимые версии + +* Гем REXML 3.2.6 и более ранние версии + +## Благодарности + +Благодарим [mprogrammer](https://hackerone.com/mprogrammer) за обнаружение этой проблемы. + +## История + +* Изначально опубликовано 2024-05-16 05:00:00 (UTC) diff --git a/ru/news/_posts/2024-05-16-ruby-3-4-0-preview1-released.md b/ru/news/_posts/2024-05-16-ruby-3-4-0-preview1-released.md new file mode 100644 index 0000000000..241cf70ab4 --- /dev/null +++ b/ru/news/_posts/2024-05-16-ruby-3-4-0-preview1-released.md @@ -0,0 +1,139 @@ +--- +layout: news_post +title: "Вышел Ruby 3.4.0-preview1" +author: "naruse" +translator: "ablzh" +date: 2024-05-16 00:00:00 +0000 +lang: ru +--- + +{% assign release = site.data.releases | where: "version", "3.4.0-preview1" | first %} +Мы рады сообщить о выпуске Ruby {{ release.version }}. + +## Изменения языка + +* Строковые литералы в файлах без комментария `frozen_string_literal` теперь ведут себя + как замороженные. При их изменении выводится предупреждение об устаревшем поведении (deprecation warning). + Эти предупреждения можно включить с помощью `-W:deprecated` или `Warning[:deprecated] = true`. + Чтобы отключить это изменение, запустите Ruby с аргументом командной строки + `--disable-frozen-string-literal`. [[Feature #20205]] + +* Добавлен `it` для ссылки на параметр блока. [[Feature #18980]] + +* Теперь поддерживается распаковка `nil` в именованные аргументы (keyword splatting) при вызове методов. + `**nil` обрабатывается аналогично `**{}`: именованные аргументы не передаются, + а методы преобразования не вызываются. [[Bug #20064]] + +* Передача блока при индексировании больше не допускается. [[Bug #19918]] + +* Именованные аргументы при индексировании больше не допускаются. [[Bug #20218]] + +## Обновления основных классов + +Примечание: перечислены только наиболее значимые обновления классов. + +* Exception + + * Exception#set_backtrace теперь принимает массивы `Thread::Backtrace::Location`. + `Kernel#raise`, `Thread#raise` и `Fiber#raise` также принимают этот новый формат. [[Feature #13557]] + +* Range + + * Range#size теперь вызывает TypeError, если диапазон не поддерживает итерацию. [[Misc #18984]] + + + +## Проблемы совместимости + +Примечание: исправления ошибок в функциональности не перечисляются. + +* Изменён вид сообщений об ошибках и трассировок стека (backtraces). + * Вместо обратной кавычки в качестве открывающей используется одинарная кавычка. [[Feature #16495]] + * Перед именем метода выводится имя класса, если у класса есть постоянное имя. [[Feature #19117]] + * Соответствующим образом изменены `Kernel#caller`, методы `Thread::Backtrace::Location` и другие. + + ``` + Old: + test.rb:1:in `foo': undefined method `time' for an instance of Integer + from test.rb:2:in `
' + + New: + test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer + from test.rb:2:in '
' + ``` + + +## Обновления C API + +* Удалены `rb_newobj` и `rb_newobj_of`, а также соответствующие макросы `RB_NEWOBJ`, `RB_NEWOBJ_OF`, `NEWOBJ`, `NEWOBJ_OF`. [[Feature #20265]] +* Удалена устаревшая функция `rb_gc_force_recycle`. [[Feature #18290]] + +## Улучшения реализации + +* `Array#each` переписан на Ruby для повышения производительности [[Feature #20182]]. + +## Прочие изменения + +* При передаче блока методу, который его не использует, теперь выводится + предупреждение в подробном режиме (`-w`). + [[Feature #15554]] + +* Переопределение некоторых основных методов, специально оптимизированных интерпретатором + и JIT, например `String.freeze` или `Integer#+`, теперь вызывает предупреждение + категории производительности (`-W:performance` или `Warning[:performance] = true`). + [[Feature #20429]] + +Подробности об изменениях гемов по умолчанию (default gems) и гемов, поставляемых с Ruby (bundled gems), смотрите +в заметках о релизах на GitHub, например для [Logger](https://github.com/ruby/logger/releases), или в заметках об изменениях. + +Смотрите [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) +или [историю коммитов](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}) +для получения подробностей. + +С учётом этих изменений [изменено {{ release.stats.files_changed }} файлов, добавлено {{ release.stats.insertions }} строк(+), удалено {{ release.stats.deletions }} строк(-)](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}#file_bucket) +с момента выхода Ruby 3.3.0! + + +## Скачать + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Что такое Ruby + +Разработка Ruby началась в 1993 году благодаря Matz (Yukihiro Matsumoto), +и сейчас язык развивается как open source проект. Он работает на многих платформах +и используется по всему миру, особенно для веб-разработки. + +[Feature #13557]: https://bugs.ruby-lang.org/issues/13557 +[Feature #15554]: https://bugs.ruby-lang.org/issues/15554 +[Feature #16495]: https://bugs.ruby-lang.org/issues/16495 +[Feature #18290]: https://bugs.ruby-lang.org/issues/18290 +[Feature #18980]: https://bugs.ruby-lang.org/issues/18980 +[Misc #18984]: https://bugs.ruby-lang.org/issues/18984 +[Feature #19117]: https://bugs.ruby-lang.org/issues/19117 +[Bug #19918]: https://bugs.ruby-lang.org/issues/19918 +[Bug #20064]: https://bugs.ruby-lang.org/issues/20064 +[Feature #20182]: https://bugs.ruby-lang.org/issues/20182 +[Feature #20205]: https://bugs.ruby-lang.org/issues/20205 +[Bug #20218]: https://bugs.ruby-lang.org/issues/20218 +[Feature #20265]: https://bugs.ruby-lang.org/issues/20265 +[Feature #20429]: https://bugs.ruby-lang.org/issues/20429 diff --git a/ru/news/_posts/2024-05-29-ruby-3-1-6-released.md b/ru/news/_posts/2024-05-29-ruby-3-1-6-released.md new file mode 100644 index 0000000000..ab72c96610 --- /dev/null +++ b/ru/news/_posts/2024-05-29-ruby-3-1-6-released.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "Вышел Ruby 3.1.6" +author: "hsbt" +translator: "ablzh" +date: 2024-05-29 9:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.1.6. + +Ветка Ruby 3.1 сейчас находится в фазе поддержки безопасности. Обычно в этой фазе мы исправляем только уязвимости. Однако после выхода Ruby 3.1.5 возникло несколько проблем со сборкой. Мы решили выпустить Ruby 3.1.6, чтобы их исправить. + +Подробности приведены ниже. + +* [Bug #20151: Не удаётся собрать Ruby 3.1 на FreeBSD 14.0](https://bugs.ruby-lang.org/issues/20151) +* [Bug #20451: Некорректный бэкпорт в Ruby 3.1.5 мешает сборке fiddle](https://bugs.ruby-lang.org/issues/20451) +* [Bug #20431: Сборка Ruby 3.3.0 завершается ошибкой make: *** \[io_buffer.o\] Error 1](https://bugs.ruby-lang.org/issues/20431) + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_1_6). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.1.6" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-05-30-datadog-oss-program.md b/ru/news/_posts/2024-05-30-datadog-oss-program.md new file mode 100644 index 0000000000..37de8a52d8 --- /dev/null +++ b/ru/news/_posts/2024-05-30-datadog-oss-program.md @@ -0,0 +1,28 @@ +--- +layout: news_post +title: "Datadog поддерживает ruby-lang.org в рамках программы для open source сообщества" +author: "hsbt" +translator: "ablzh" +date: 2024-05-30 00:00:00 +0000 +lang: ru +--- + +Мы рады сообщить, что официальный сайт Ruby, ruby-lang.org, начал использовать Datadog для мониторинга благодаря [программе поддержки open source сообщества Datadog](https://opensource.datadoghq.com/projects/oss-program/). + +Это позволяет эффективно отслеживать производительность и доступность сайта для пользователей Ruby в реальном времени. Основные преимущества Datadog перечислены ниже. + +## Мониторинг CDN + +Сервис cache.ruby-lang.org, предоставляемый Fastly, — важнейшая часть инфраструктуры экосистемы Ruby. Datadog позволяет отслеживать производительность сети доставки контента (CDN). Он отслеживает охват кэширования (cache coverage) и частоту ошибок, помогая улучшать работу сервиса для пользователей. + +## Единая визуализация данных + +У ruby-lang.org есть несколько веб-сервисов. Datadog позволяет отображать результаты анализа журналов вместе с метриками и данными мониторинга производительности приложений (APM) на одних панелях. + +## Мониторинг трассировок JIT + +Возможности трассировки Datadog позволяют записывать путь запросов через веб-серверы и базы данных. Это помогает выявлять узкие места и проблемные запросы. + +Мы опубликовали [общедоступную панель](https://p.ap1.datadoghq.com/sb/1271b83e-af90-11ee-9072-da7ad0900009-01633a8fa8c0b0c0051f1889afdf55dc) основных метрик. Мы будем обновлять её по мере улучшения мониторинга, особенно производительности YJIT. + +Мы надеемся, что внедрение Datadog поможет повысить производительность сайта для сообщества Ruby. Продолжайте пользоваться ruby-lang.org и оцените улучшения в его работе. diff --git a/ru/news/_posts/2024-05-30-ruby-3-3-2-released.md b/ru/news/_posts/2024-05-30-ruby-3-3-2-released.md new file mode 100644 index 0000000000..230079a1d2 --- /dev/null +++ b/ru/news/_posts/2024-05-30-ruby-3-3-2-released.md @@ -0,0 +1,43 @@ +--- +layout: news_post +title: "Вышел Ruby 3.3.2" +author: "k0kubun" +translator: "ablzh" +date: 2024-05-30 03:50:00 +0000 +lang: ru +--- + +Вышел Ruby 3.3.2. + +В этот релиз вошли многочисленные исправления ошибок. +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_3_2). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.3.2" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-06-12-ruby-3-3-3-released.md b/ru/news/_posts/2024-06-12-ruby-3-3-3-released.md new file mode 100644 index 0000000000..85a8891030 --- /dev/null +++ b/ru/news/_posts/2024-06-12-ruby-3-3-3-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Вышел Ruby 3.3.3" +author: "k0kubun" +translator: "ablzh" +date: 2024-06-12 00:30:00 +0000 +lang: ru +--- + +Вышел Ruby 3.3.3. + +В этот релиз вошли: + +* RubyGems 3.5.11 +* Bundler 2.5.11 +* REXML 3.2.8 +* strscan 3.0.9 +* `--dump=prism_parsetree` заменён на `--parser=prism --dump=parsetree` +* Символы с недопустимой кодировкой вызывают `SyntaxError` вместо `EncodingError` +* Исправление утечки памяти при парсинге в Ripper +* Исправления ошибок в YJIT, `**{}`, `Ripper.tokenize`, `RubyVM::InstructionSequence#to_binary`, `--with-gmp` и некоторых окружениях сборки + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_3_3). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.3.3" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-07-09-ruby-3-3-4-released.md b/ru/news/_posts/2024-07-09-ruby-3-3-4-released.md new file mode 100644 index 0000000000..2b012a13b2 --- /dev/null +++ b/ru/news/_posts/2024-07-09-ruby-3-3-4-released.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "Вышел Ruby 3.3.4" +author: "k0kubun" +translator: "ablzh" +date: 2024-07-09 00:30:00 +0000 +lang: ru +--- + +Вышел Ruby 3.3.4. + +В этом релизе исправлена регрессия Ruby 3.3.3: в gemspec некоторых поставляемых с Ruby гемов +отсутствовали зависимости — `net-pop`, `net-ftp`, `net-imap` и `prime` +[[Bug #20581]](https://bugs.ruby-lang.org/issues/20581). +Исправление позволяет Bundler успешно устанавливать эти гемы на таких платформах, как Heroku. +Если `bundle install` уже работает корректно, эта проблема вас, вероятно, не затрагивает. + +Остальные изменения — преимущественно небольшие исправления ошибок. +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_3_4). + +## График релизов + +В дальнейшем мы планируем выпускать обновления последней стабильной версии Ruby (сейчас Ruby 3.3) каждые 2 месяца после релиза `.1`. +Для Ruby 3.3 выход версии 3.3.5 запланирован на 3 сентября, 3.3.6 — на 5 ноября, а 3.3.7 — на 7 января. + +Если возникнут изменения, затрагивающие много пользователей, например пользователей Ruby 3.3.3 на Heroku в случае этого релиза, +мы можем выпустить новую версию раньше запланированного срока. + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.3.4" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-07-16-dos-rexml-cve-2024-39908.md b/ru/news/_posts/2024-07-16-dos-rexml-cve-2024-39908.md new file mode 100644 index 0000000000..91b4467f28 --- /dev/null +++ b/ru/news/_posts/2024-07-16-dos-rexml-cve-2024-39908.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "CVE-2024-39908: Уязвимость DoS в REXML" +author: "watson1978" +translator: "ablzh" +date: 2024-07-16 03:00:00 +0000 +tags: security +lang: ru +--- + +В геме REXML обнаружена уязвимость отказа в обслуживании (DoS). Этой уязвимости присвоен CVE идентификатор [CVE-2024-39908](https://www.cve.org/CVERecord?id=CVE-2024-39908). Настоятельно рекомендуем обновить гем REXML. + +## Подробности + +Парсинг XML с большим количеством определённых символов, например `<`, `0` и `%>`, может занимать у гема REXML много времени. + +Обновите гем REXML до версии 3.3.2 или новее. + +## Уязвимые версии + +* Гем REXML 3.3.1 и более ранние версии + +## Благодарности + +Благодарим [mprogrammer](https://hackerone.com/mprogrammer) за обнаружение этой проблемы. + +## История + +* Изначально опубликовано 2024-07-16 03:00:00 (UTC) diff --git a/ru/news/_posts/2024-07-26-ruby-3-2-5-released.md b/ru/news/_posts/2024-07-26-ruby-3-2-5-released.md new file mode 100644 index 0000000000..18b16cca1e --- /dev/null +++ b/ru/news/_posts/2024-07-26-ruby-3-2-5-released.md @@ -0,0 +1,46 @@ +--- +layout: news_post +title: "Вышел Ruby 3.2.5" +author: "nagachika" +translator: "ablzh" +date: 2024-07-26 10:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.2.5. + +В этот релиз вошли многочисленные исправления ошибок. +Также мы обновили поставляемый с Ruby гем `rexml`, включив следующее исправление уязвимости: +[CVE-2024-39908: DoS в REXML]({%link ru/news/_posts/2024-07-16-dos-rexml-cve-2024-39908.md %}). + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_2_5). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.2.5" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-08-01-dos-rexml-cve-2024-41123.md b/ru/news/_posts/2024-08-01-dos-rexml-cve-2024-41123.md new file mode 100644 index 0000000000..ca78259fba --- /dev/null +++ b/ru/news/_posts/2024-08-01-dos-rexml-cve-2024-41123.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "CVE-2024-41123: Уязвимости DoS в REXML" +author: "kou" +translator: "ablzh" +date: 2024-08-01 03:00:00 +0000 +tags: security +lang: ru +--- + +В геме REXML обнаружено несколько уязвимостей отказа в обслуживании (DoS). Этим уязвимостям присвоен CVE идентификатор [CVE-2024-41123](https://www.cve.org/CVERecord?id=CVE-2024-41123). Настоятельно рекомендуем обновить гем REXML. + +## Подробности + +Парсинг XML-документа с большим количеством определённых символов, например пробельных символов, `>]` и `]>`, может занимать у гема REXML много времени. + +Обновите гем REXML до версии 3.3.3 или новее. + +## Уязвимые версии + +* Гем REXML 3.3.2 и более ранние версии + +## Благодарности + +Благодарим [mprogrammer](https://hackerone.com/mprogrammer) и [scyoon](https://hackerone.com/scyoon) за обнаружение этих проблем. + +## История + +* Изначально опубликовано 2024-08-01 03:00:00 (UTC) diff --git a/ru/news/_posts/2024-08-01-dos-rexml-cve-2024-41946.md b/ru/news/_posts/2024-08-01-dos-rexml-cve-2024-41946.md new file mode 100644 index 0000000000..528cb06dd6 --- /dev/null +++ b/ru/news/_posts/2024-08-01-dos-rexml-cve-2024-41946.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "CVE-2024-41946: Уязвимость DoS в REXML" +author: "kou" +translator: "ablzh" +date: 2024-08-01 03:00:00 +0000 +tags: security +lang: ru +--- + +В геме REXML обнаружена уязвимость отказа в обслуживании (DoS). Этой уязвимости присвоен CVE идентификатор [CVE-2024-41946](https://www.cve.org/CVERecord?id=CVE-2024-41946). Настоятельно рекомендуем обновить гем REXML. + +## Подробности + +Парсинг XML с большим количеством раскрытий сущностей (entity expansions) через API SAX2 или pull-парсера может занимать у гема REXML много времени. + +Обновите гем REXML до версии 3.3.3 или новее. + +## Уязвимые версии + +* Гем REXML 3.3.2 и более ранние версии + +## Благодарности + +Благодарим [NAITOH Jun](https://github.com/naitoh) за обнаружение и исправление этой проблемы. + +## История + +* Изначально опубликовано 2024-08-01 03:00:00 (UTC) diff --git a/ru/news/_posts/2024-08-22-dos-rexml-cve-2024-43398.md b/ru/news/_posts/2024-08-22-dos-rexml-cve-2024-43398.md new file mode 100644 index 0000000000..91b163c942 --- /dev/null +++ b/ru/news/_posts/2024-08-22-dos-rexml-cve-2024-43398.md @@ -0,0 +1,31 @@ +--- +layout: news_post +title: "CVE-2024-43398: Уязвимость DoS в REXML" +author: "kou" +translator: "ablzh" +date: 2024-08-22 03:00:00 +0000 +tags: security +lang: ru +--- + +В геме REXML обнаружена уязвимость отказа в обслуживании (DoS). Этой уязвимости присвоен CVE идентификатор [CVE-2024-43398](https://www.cve.org/CVERecord?id=CVE-2024-43398). Настоятельно рекомендуем обновить гем REXML. + +## Подробности + +Парсинг XML с большим количеством глубоко вложенных элементов, у которых атрибуты имеют одинаковые локальные имена (local names), может занимать у гема REXML много времени. + +Проблема затрагивает только API древовидного парсера (tree parser). Если вы используете `REXML::Document.new` для парсинга XML, вы можете быть подвержены уязвимости. + +Обновите гем REXML до версии 3.3.6 или новее. + +## Уязвимые версии + +* Гем REXML 3.3.5 и более ранние версии + +## Благодарности + +Благодарим [l33thaxor](https://hackerone.com/l33thaxor) за обнаружение этой проблемы. + +## История + +* Изначально опубликовано 2024-08-22 03:00:00 (UTC) diff --git a/ru/news/_posts/2024-09-03-3-3-5-released.md b/ru/news/_posts/2024-09-03-3-3-5-released.md new file mode 100644 index 0000000000..e6ea06d8d0 --- /dev/null +++ b/ru/news/_posts/2024-09-03-3-3-5-released.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "Вышел Ruby 3.3.5" +author: k0kubun +translator: "ablzh" +date: 2024-09-03 06:40:00 +0000 +lang: ru +--- + +Вышел Ruby 3.3.5. + +Это плановое обновление с небольшими исправлениями ошибок. +Мы рекомендуем обновить вашу версию Ruby при первой возможности. +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_3_5). + +## График релизов + +Как мы ранее [сообщали](https://www.ruby-lang.org/ru/news/2024/07/09/ruby-3-3-4-released/), мы планируем выпускать обновления последней стабильной версии Ruby (сейчас Ruby 3.3) каждые 2 месяца после релиза `.1`. + +Мы планируем выпустить Ruby 3.3.6 5 ноября, а Ruby 3.3.7 — 7 января. При появлении значительных изменений, затрагивающих много пользователей, новая версия может выйти раньше запланированного срока. + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.3.5" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-10-07-ruby-3-4-0-preview2-released.md b/ru/news/_posts/2024-10-07-ruby-3-4-0-preview2-released.md new file mode 100644 index 0000000000..d7385b0a9c --- /dev/null +++ b/ru/news/_posts/2024-10-07-ruby-3-4-0-preview2-released.md @@ -0,0 +1,148 @@ +--- +layout: news_post +title: "Вышел Ruby 3.4.0-preview2" +author: "naruse" +translator: "ablzh" +date: 2024-10-07 00:00:00 +0000 +lang: ru +--- + +{% assign release = site.data.releases | where: "version", "3.4.0-preview2" | first %} +Мы рады сообщить о выпуске Ruby {{ release.version }}. + +## Prism + +Парсер по умолчанию изменён с parse.y на Prism. [[Feature #20564]] + +## Изменения языка + +* При изменении строковых литералов в файлах без комментария `frozen_string_literal` теперь выводится + предупреждение об устаревшем поведении (deprecation warning). + Эти предупреждения можно включить с помощью `-W:deprecated` или `Warning[:deprecated] = true`. + Чтобы отключить это изменение, запустите Ruby с аргументом командной строки + `--disable-frozen-string-literal`. [[Feature #20205]] + +* Добавлен `it` для ссылки на параметр блока. [[Feature #18980]] + +* Теперь поддерживается распаковка `nil` в именованные аргументы (keyword splatting) при вызове методов. + `**nil` обрабатывается аналогично `**{}`: именованные аргументы не передаются, + а методы преобразования не вызываются. [[Bug #20064]] + +* Передача блока при индексировании больше не допускается. [[Bug #19918]] + +* Именованные аргументы при индексировании больше не допускаются. [[Bug #20218]] + +## Обновления основных классов + +Примечание: перечислены только наиболее значимые обновления классов. + +* Exception + + * `Exception#set_backtrace` теперь принимает массив `Thread::Backtrace::Location`. + `Kernel#raise`, `Thread#raise` и `Fiber#raise` также принимают этот новый формат. [[Feature #13557]] + +* Range + + * `Range#size` теперь вызывает `TypeError`, если диапазон не поддерживает итерацию. [[Misc #18984]] + + + +## Проблемы совместимости + +Примечание: исправления ошибок в функциональности не перечисляются. + +* Изменён вид сообщений об ошибках и трассировок стека (backtraces). + * Вместо обратной кавычки в качестве открывающей используется одинарная кавычка. [[Feature #16495]] + * Перед именем метода выводится имя класса, если у класса есть постоянное имя. [[Feature #19117]] + * Соответствующим образом изменены `Kernel#caller`, методы `Thread::Backtrace::Location` и другие. + + ``` + Old: + test.rb:1:in `foo': undefined method `time' for an instance of Integer + from test.rb:2:in `
' + + New: + test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer + from test.rb:2:in '
' + ``` + +* Изменён вывод `Hash#inspect`. [[Bug #20433]] + * Ключи-символы отображаются с использованием современного синтаксиса: `"{user: 1}"` + * Для других ключей вокруг `=>` теперь добавлены пробелы: `'{"user" => 1}'`, а раньше их не было: `'{"user"=>1}'` + +## Обновления C API + +* Удалены `rb_newobj` и `rb_newobj_of`, а также соответствующие макросы `RB_NEWOBJ`, `RB_NEWOBJ_OF`, `NEWOBJ`, `NEWOBJ_OF`. [[Feature #20265]] +* Удалена устаревшая функция `rb_gc_force_recycle`. [[Feature #18290]] + +## Улучшения реализации + +* `Array#each` переписан на Ruby для повышения производительности [[Feature #20182]]. + +## Прочие изменения + +* При передаче блока методу, который его не использует, теперь выводится + предупреждение в подробном режиме (`-w`). + [[Feature #15554]] + +* Переопределение некоторых основных методов, специально оптимизированных интерпретатором + и JIT, например `String.freeze` или `Integer#+`, теперь вызывает предупреждение + категории производительности (`-W:performance` или `Warning[:performance] = true`). + [[Feature #20429]] + +Подробности об изменениях гемов по умолчанию (default gems) и гемов, поставляемых с Ruby (bundled gems), смотрите +в заметках о релизах на GitHub, например для [Logger](https://github.com/ruby/logger/releases), или в заметках об изменениях. + +Смотрите [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) +или [историю коммитов](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}) +для получения подробностей. + +С учётом этих изменений [изменено {{ release.stats.files_changed }} файлов, добавлено {{ release.stats.insertions }} строк(+), удалено {{ release.stats.deletions }} строк(-)](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}#file_bucket) +с момента выхода Ruby 3.3.0! + + +## Скачать + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Что такое Ruby + +Разработка Ruby началась в 1993 году благодаря Matz (Yukihiro Matsumoto), +и сейчас язык развивается как open source проект. Он работает на многих платформах +и используется по всему миру, особенно для веб-разработки. + +[Feature #13557]: https://bugs.ruby-lang.org/issues/13557 +[Feature #15554]: https://bugs.ruby-lang.org/issues/15554 +[Feature #16495]: https://bugs.ruby-lang.org/issues/16495 +[Feature #18290]: https://bugs.ruby-lang.org/issues/18290 +[Feature #18980]: https://bugs.ruby-lang.org/issues/18980 +[Misc #18984]: https://bugs.ruby-lang.org/issues/18984 +[Feature #19117]: https://bugs.ruby-lang.org/issues/19117 +[Bug #19918]: https://bugs.ruby-lang.org/issues/19918 +[Bug #20064]: https://bugs.ruby-lang.org/issues/20064 +[Feature #20182]: https://bugs.ruby-lang.org/issues/20182 +[Feature #20205]: https://bugs.ruby-lang.org/issues/20205 +[Bug #20218]: https://bugs.ruby-lang.org/issues/20218 +[Feature #20265]: https://bugs.ruby-lang.org/issues/20265 +[Feature #20429]: https://bugs.ruby-lang.org/issues/20429 +[Feature #20564]: https://bugs.ruby-lang.org/issues/20564 +[Bug #20433]: https://bugs.ruby-lang.org/issues/20433 diff --git a/ru/news/_posts/2024-10-28-redos-rexml-cve-2024-49761.md b/ru/news/_posts/2024-10-28-redos-rexml-cve-2024-49761.md new file mode 100644 index 0000000000..086ceb471f --- /dev/null +++ b/ru/news/_posts/2024-10-28-redos-rexml-cve-2024-49761.md @@ -0,0 +1,31 @@ +--- +layout: news_post +title: "CVE-2024-49761: Уязвимость ReDoS в REXML" +author: "kou" +translator: "ablzh" +date: 2024-10-28 03:00:00 +0000 +tags: security +lang: ru +--- + +В геме REXML обнаружена уязвимость отказа в обслуживании через регулярные выражения (ReDoS). Этой уязвимости присвоен CVE идентификатор [CVE-2024-49761](https://www.cve.org/CVERecord?id=CVE-2024-49761). Настоятельно рекомендуем обновить гем REXML. + +Проблема не возникает в Ruby 3.2 и новее. Среди поддерживаемых версий Ruby уязвима только Ruby 3.1. Обратите внимание, что поддержка Ruby 3.1 завершится (EOL) в марте 2025 года. + +## Подробности + +Уязвимость возникает при парсинге XML с большим количеством цифр между `&#` и `x...;` в шестнадцатеричной числовой ссылке на символ (hex numeric character reference, `&#x...;`). + +Обновите гем REXML до версии 3.3.9 или новее. + +## Уязвимые версии + +* Гем REXML 3.3.8 и более ранние версии с Ruby 3.1 и более ранние версии + +## Благодарности + +Благодарим [manun](https://hackerone.com/manun) за обнаружение этой проблемы. + +## История + +* Изначально опубликовано 2024-10-28 03:00:00 (UTC) diff --git a/ru/news/_posts/2024-10-30-ruby-3-2-6-released.md b/ru/news/_posts/2024-10-30-ruby-3-2-6-released.md new file mode 100644 index 0000000000..2fc30fef4c --- /dev/null +++ b/ru/news/_posts/2024-10-30-ruby-3-2-6-released.md @@ -0,0 +1,42 @@ +--- +layout: news_post +title: "Вышел Ruby 3.2.6" +author: nagachika +translator: "ablzh" +date: 2024-10-30 10:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.2.6. + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_2_6). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.2.6" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-11-05-ruby-3-3-6-released.md b/ru/news/_posts/2024-11-05-ruby-3-3-6-released.md new file mode 100644 index 0000000000..d14a18c7a5 --- /dev/null +++ b/ru/news/_posts/2024-11-05-ruby-3-3-6-released.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "Вышел Ruby 3.3.6" +author: k0kubun +translator: "ablzh" +date: 2024-11-05 04:25:00 +0000 +lang: ru +--- + +Вышел Ruby 3.3.6. + +Это плановое обновление с небольшими исправлениями ошибок. +Также отключены предупреждения об отсутствующих зависимостях от гемов по умолчанию (default gems), которые в Ruby 3.5 станут гемами, поставляемыми с Ruby (bundled gems). +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_3_6). + +## График релизов + +Как мы ранее [сообщали](https://www.ruby-lang.org/ru/news/2024/07/09/ruby-3-3-4-released/), мы планируем выпускать обновления последней стабильной версии Ruby (сейчас Ruby 3.3) каждые 2 месяца после релиза `.1`. + +Мы планируем выпустить Ruby 3.3.7 7 января. При появлении значительных изменений, затрагивающих много пользователей, новая версия может выйти раньше запланированного срока. + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.3.6" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Комментарий к релизу + +Многие коммиттеры, разработчики и пользователи, присылавшие отчёты об ошибках, помогли нам подготовить этот релиз. +Спасибо за их вклад. diff --git a/ru/news/_posts/2024-12-12-ruby-3-4-0-rc1-released.md b/ru/news/_posts/2024-12-12-ruby-3-4-0-rc1-released.md new file mode 100644 index 0000000000..9212d966c6 --- /dev/null +++ b/ru/news/_posts/2024-12-12-ruby-3-4-0-rc1-released.md @@ -0,0 +1,194 @@ +--- +layout: news_post +title: "Вышел Ruby 3.4.0-rc1" +author: "naruse" +translator: "ablzh" +date: 2024-12-12 00:00:00 +0000 +lang: ru +--- + +{% assign release = site.data.releases | where: "version", "3.4.0-rc1" | first %} +Мы рады сообщить о выпуске Ruby {{ release.version }}. + +## Prism + +Парсер по умолчанию изменён с parse.y на Prism. [[Feature #20564]] + +## Модульный сборщик мусора (Modular GC) + +* Альтернативные реализации сборщика мусора (GC) можно загружать динамически + благодаря модульному сборщику мусора. Чтобы включить эту возможность, + при сборке Ruby укажите `--with-modular-gc`. Библиотеки GC можно загружать + во время выполнения с помощью переменной окружения `RUBY_GC_LIBRARY`. + [[Feature #20351]] + +* Встроенный сборщик мусора Ruby выделен в отдельный файл + `gc/default/default.c` и взаимодействует с Ruby через API, определённый в + `gc/gc_impl.h`. Теперь его также можно собрать как библиотеку с помощью + `make modular-gc MODULAR_GC=default` и включить переменной окружения + `RUBY_GC_LIBRARY=default`. [[Feature #20470]] + +* Предоставлена экспериментальная библиотека GC на основе [MMTk](https://www.mmtk.io/). + Её можно собрать с помощью `make modular-gc MODULAR_GC=mmtk` и + включить переменной окружения `RUBY_GC_LIBRARY=mmtk`. Для этого на машине сборки + нужен набор инструментов Rust. [[Feature #20860]] + + +## Изменения языка + +* При изменении строковых литералов в файлах без комментария `frozen_string_literal` теперь выводится + предупреждение об устаревшем поведении (deprecation warning). + Эти предупреждения можно включить с помощью `-W:deprecated` или `Warning[:deprecated] = true`. + Чтобы отключить это изменение, запустите Ruby с аргументом командной строки + `--disable-frozen-string-literal`. [[Feature #20205]] + +* Добавлен `it` для ссылки на параметр блока. [[Feature #18980]] + +* Теперь поддерживается распаковка `nil` в именованные аргументы (keyword splatting) при вызове методов. + `**nil` обрабатывается аналогично `**{}`: именованные аргументы не передаются, + а методы преобразования не вызываются. [[Bug #20064]] + +* Передача блока при индексировании больше не допускается. [[Bug #19918]] + +* Именованные аргументы при индексировании больше не допускаются. [[Bug #20218]] + +## YJIT + +Кратко: +* Повышена производительность в большинстве бенчмарков на платформах x86-64 и arm64. +* Снижено потребление памяти метаданными компиляции +* Многочисленные исправления ошибок. YJIT стал ещё надёжнее и лучше протестирован. + +Новые возможности: +* Добавлен общий лимит памяти через аргумент командной строки `--yjit-mem-size` (по умолчанию 128MiB). + Он отслеживает общее потребление памяти YJIT и понятнее прежнего + `--yjit-exec-mem-size`. +* Через `RubyVM::YJIT.runtime_stats` теперь всегда доступно больше статистики +* Добавлен журнал компиляции для отслеживания компилируемого кода через `--yjit-log` + * Последние записи журнала также доступны во время выполнения через `RubyVM::YJIT.log` +* Добавлена поддержка совместно используемых констант (shareable constants) в режиме нескольких ракторов +* Теперь можно отслеживать выходы, учитываемые счётчиком (counted exits), с помощью `--yjit-trace-exits=COUNTER` + +Новые оптимизации: +* Сжатый контекст сокращает объём памяти для хранения метаданных YJIT +* Улучшен распределитель регистров: теперь он может выделять регистры для локальных переменных +* При включённом YJIT используется больше основных примитивов (Core primitives), написанных на Ruby: + * `Array#each`, `Array#select`, `Array#map` переписаны на Ruby для повышения производительности [[Feature #20182]]. +* Возможность встраивать (inline) небольшие и простые методы, например: + * Пустые методы + * Методы, возвращающие константу + * Методы, возвращающие `self` + * Методы, напрямую возвращающие аргумент +* Специализированная генерация кода для большего числа методов среды выполнения (runtime methods) +* Оптимизированы `String#getbyte`, `String#setbyte` и другие методы строк +* Оптимизированы побитовые операции для ускорения низкоуровневой работы с битами и байтами +* Различные другие небольшие оптимизации + +## Обновления основных классов + +Примечание: перечислены только наиболее значимые обновления классов. + +* Exception + + * `Exception#set_backtrace` теперь принимает массив `Thread::Backtrace::Location`. + `Kernel#raise`, `Thread#raise` и `Fiber#raise` также принимают этот новый формат. [[Feature #13557]] + +* Range + + * `Range#size` теперь вызывает `TypeError`, если диапазон не поддерживает итерацию. [[Misc #18984]] + + + +## Проблемы совместимости + +Примечание: исправления ошибок в функциональности не перечисляются. + +* Изменён вид сообщений об ошибках и трассировок стека (backtraces). + * Вместо обратной кавычки в качестве открывающей используется одинарная кавычка. [[Feature #16495]] + * Перед именем метода выводится имя класса, если у класса есть постоянное имя. [[Feature #19117]] + * Соответствующим образом изменены `Kernel#caller`, методы `Thread::Backtrace::Location` и другие. + + ``` + Old: + test.rb:1:in `foo': undefined method `time' for an instance of Integer + from test.rb:2:in `
' + + New: + test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer + from test.rb:2:in '
' + ``` + +## Обновления C API + +* Удалены `rb_newobj` и `rb_newobj_of`, а также соответствующие макросы `RB_NEWOBJ`, `RB_NEWOBJ_OF`, `NEWOBJ`, `NEWOBJ_OF`. [[Feature #20265]] +* Удалена устаревшая функция `rb_gc_force_recycle`. [[Feature #18290]] + +## Прочие изменения + +* При передаче блока методу, который его не использует, теперь выводится + предупреждение в подробном режиме (`-w`). + [[Feature #15554]] + +* Переопределение некоторых основных методов, специально оптимизированных интерпретатором + и JIT, например `String.freeze` или `Integer#+`, теперь вызывает предупреждение + категории производительности (`-W:performance` или `Warning[:performance] = true`). + [[Feature #20429]] + +Подробности об изменениях гемов по умолчанию (default gems) и гемов, поставляемых с Ruby (bundled gems), смотрите +в заметках о релизах на GitHub, например для [Logger](https://github.com/ruby/logger/releases), или в заметках об изменениях. + +Смотрите [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) +или [историю коммитов](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}) +для получения подробностей. + +С учётом этих изменений [изменено {{ release.stats.files_changed }} файлов, добавлено {{ release.stats.insertions }} строк(+), удалено {{ release.stats.deletions }} строк(-)](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}#file_bucket) +с момента выхода Ruby 3.3.0! + + +## Скачать + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Что такое Ruby + +Разработка Ruby началась в 1993 году благодаря Matz (Yukihiro Matsumoto), +и сейчас язык развивается как open source проект. Он работает на многих платформах +и используется по всему миру, особенно для веб-разработки. + +[Feature #13557]: https://bugs.ruby-lang.org/issues/13557 +[Feature #15554]: https://bugs.ruby-lang.org/issues/15554 +[Feature #16495]: https://bugs.ruby-lang.org/issues/16495 +[Feature #18290]: https://bugs.ruby-lang.org/issues/18290 +[Feature #18980]: https://bugs.ruby-lang.org/issues/18980 +[Misc #18984]: https://bugs.ruby-lang.org/issues/18984 +[Feature #19117]: https://bugs.ruby-lang.org/issues/19117 +[Bug #19918]: https://bugs.ruby-lang.org/issues/19918 +[Bug #20064]: https://bugs.ruby-lang.org/issues/20064 +[Feature #20182]: https://bugs.ruby-lang.org/issues/20182 +[Feature #20205]: https://bugs.ruby-lang.org/issues/20205 +[Bug #20218]: https://bugs.ruby-lang.org/issues/20218 +[Feature #20265]: https://bugs.ruby-lang.org/issues/20265 +[Feature #20351]: https://bugs.ruby-lang.org/issues/20351 +[Feature #20429]: https://bugs.ruby-lang.org/issues/20429 +[Feature #20470]: https://bugs.ruby-lang.org/issues/20470 +[Feature #20564]: https://bugs.ruby-lang.org/issues/20564 +[Feature #20860]: https://bugs.ruby-lang.org/issues/20860 diff --git a/ru/news/_posts/2024-12-25-ruby-3-4-0-released.md b/ru/news/_posts/2024-12-25-ruby-3-4-0-released.md new file mode 100644 index 0000000000..0464b4826c --- /dev/null +++ b/ru/news/_posts/2024-12-25-ruby-3-4-0-released.md @@ -0,0 +1,362 @@ +--- +layout: news_post +title: "Вышел Ruby 3.4.0" +author: "naruse" +translator: "ablzh" +date: 2024-12-25 00:00:00 +0000 +lang: ru +--- + +{% assign release = site.data.releases | where: "version", "3.4.0" | first %} +Мы рады сообщить о выпуске Ruby {{ release.version }}. В Ruby 3.4 добавлена ссылка на параметр блока `it`, +Prism стал парсером по умолчанию, библиотека socket получила поддержку Happy Eyeballs Version 2, улучшен YJIT, +добавлен Modular GC и многое другое. + +## Представлен `it` + +Добавлен `it` для ссылки на параметр блока без имени переменной. [[Feature #18980]] + +```ruby +ary = ["foo", "bar", "baz"] + +p ary.map { it.upcase } #=> ["FOO", "BAR", "BAZ"] +``` + +Поведение `it` практически совпадает с `_1`. Если в блоке нужен только `_1`, возможность появления других нумерованных параметров, например `_2`, создаёт дополнительную нагрузку на читателя. Поэтому `it` введён как удобный псевдоним. Используйте `it` в простых случаях, где смысл `it` очевиден, например в однострочных блоках. + +## Prism теперь парсер по умолчанию + +Парсер по умолчанию изменён с parse.y на Prism. [[Feature #20564]] + +Это внутреннее улучшение, которое почти не должно повлиять на пользователей. Если вы заметите проблемы совместимости, сообщите нам о них. + +Чтобы использовать прежний парсер, укажите аргумент командной строки `--parser=parse.y`. + +## Библиотека socket теперь поддерживает Happy Eyeballs Version 2 (RFC 8305) + +Библиотека socket теперь поддерживает [Happy Eyeballs Version 2 (RFC 8305)](https://datatracker.ietf.org/doc/html/rfc8305) в `TCPSocket.new` (`TCPSocket.open`) и `Socket.tcp`. Это последняя стандартизированная версия подхода к улучшению подключения, широко используемого во многих языках программирования. +Это улучшение позволяет Ruby обеспечивать эффективные и надёжные сетевые соединения в современных условиях интернета. + +До Ruby 3.3 эти методы выполняли разрешение имён (name resolution) и попытки подключения последовательно. Теперь алгоритм работает так: + +1. Параллельно выполняет разрешение имён (name resolution) для IPv6 и IPv4 +2. Пытается подключиться к найденным IP-адресам с приоритетом IPv6; параллельные попытки запускаются с интервалом 250ms +3. Возвращает первое успешное соединение, отменяя остальные попытки + +Это сводит задержки подключения к минимуму, даже если определённый протокол или IP-адрес отвечает медленно или недоступен. +Возможность включена по умолчанию и не требует дополнительной настройки. Чтобы отключить её глобально, задайте переменную окружения `RUBY_TCP_NO_FAST_FALLBACK=1` или вызовите `Socket.tcp_fast_fallback=false`. Для отключения в отдельном вызове метода используйте именованный аргумент `fast_fallback: false`. + +## YJIT + +### Кратко + +* Повышена производительность в большинстве бенчмарков на платформах x86-64 и arm64. +* Снижено потребление памяти благодаря сжатым метаданным и общему лимиту памяти. +* Различные исправления ошибок: YJIT стал надёжнее и тщательнее протестирован. + +### Новые возможности + +* Аргументы командной строки + * `--yjit-mem-size` вводит общий лимит памяти (по умолчанию 128MiB) для отслеживания всего потребления памяти YJIT, + предлагая более понятную альтернативу прежнему аргументу `--yjit-exec-mem-size`. + * `--yjit-log` включает журнал компиляции для отслеживания компилируемого кода. +* Ruby API + * `RubyVM::YJIT.log` предоставляет доступ к последним записям журнала компиляции во время выполнения. +* Статистика YJIT + * `RubyVM::YJIT.runtime_stats` теперь всегда предоставляет дополнительную статистику + инвалидации, встраивания (inlining) и кодирования метаданных. + +### Новые оптимизации + +* Сжатый контекст сокращает объём памяти для хранения метаданных YJIT +* Регистры выделяются для локальных переменных и аргументов методов Ruby +* При включённом YJIT используется больше основных примитивов (Core primitives), написанных на Ruby: + * `Array#each`, `Array#select`, `Array#map` переписаны на Ruby для повышения производительности [[Feature #20182]]. +* Возможность встраивать (inline) небольшие и простые методы, например: + * Пустые методы + * Методы, возвращающие константу + * Методы, возвращающие `self` + * Методы, напрямую возвращающие аргумент +* Специализированная генерация кода для большего числа методов среды выполнения (runtime methods) +* Оптимизированы `String#getbyte`, `String#setbyte` и другие методы строк +* Оптимизированы побитовые операции для ускорения низкоуровневой работы с битами и байтами +* Поддерживаются совместно используемые константы (shareable constants) в режиме нескольких ракторов +* Различные другие небольшие оптимизации + +## Модульный сборщик мусора (Modular GC) + +* Альтернативные реализации сборщика мусора (GC) можно загружать динамически + благодаря модульному сборщику мусора. Чтобы включить эту возможность, + при сборке Ruby укажите `--with-modular-gc`. Библиотеки GC можно загружать + во время выполнения с помощью переменной окружения `RUBY_GC_LIBRARY`. + [[Feature #20351]] + +* Встроенный сборщик мусора Ruby выделен в отдельный файл + `gc/default/default.c` и взаимодействует с Ruby через API, определённый в + `gc/gc_impl.h`. Теперь его также можно собрать как библиотеку с помощью + `make modular-gc MODULAR_GC=default` и включить переменной окружения + `RUBY_GC_LIBRARY=default`. [[Feature #20470]] + +* Предоставлена экспериментальная библиотека GC на основе [MMTk](https://www.mmtk.io/). + Её можно собрать с помощью `make modular-gc MODULAR_GC=mmtk` и + включить переменной окружения `RUBY_GC_LIBRARY=mmtk`. Для этого на машине сборки + нужен набор инструментов Rust. [[Feature #20860]] + +## Изменения языка + +* При изменении строковых литералов в файлах без комментария `frozen_string_literal` теперь выводится + предупреждение об устаревшем поведении (deprecation warning). + Эти предупреждения можно включить с помощью `-W:deprecated` или `Warning[:deprecated] = true`. + Чтобы отключить это изменение, запустите Ruby с аргументом командной строки + `--disable-frozen-string-literal`. [[Feature #20205]] + +* Теперь поддерживается распаковка `nil` в именованные аргументы (keyword splatting) при вызове методов. + `**nil` обрабатывается аналогично `**{}`: именованные аргументы не передаются, + а методы преобразования не вызываются. [[Bug #20064]] + +* Передача блока при индексировании больше не допускается. [[Bug #19918]] + +* Именованные аргументы при индексировании больше не допускаются. [[Bug #20218]] + +* Имя верхнего уровня `::Ruby` теперь зарезервировано; его определение вызывает предупреждение при включённом `Warning[:deprecated]`. [[Feature #20884]] + +## Обновления основных классов + +Примечание: перечислены только значимые обновления основных классов. + +* Exception + + * `Exception#set_backtrace` теперь принимает массив `Thread::Backtrace::Location`. + `Kernel#raise`, `Thread#raise` и `Fiber#raise` также принимают этот новый формат. [[Feature #13557]] + +* GC + + * Добавлен `GC.config` для настройки параметров сборщика + мусора. [[Feature #20443]] + + * Введён параметр GC `rgengc_allow_full_mark`. При значении `false` + GC помечает только молодые объекты. По умолчанию — `true`. [[Feature #20443]] + +* Ractor + + * Разрешён `require` внутри рактора. Загрузка выполняется + в главном ракторе. + Добавлен `Ractor._require(feature)` для выполнения загрузки + в главном ракторе. + [[Feature #20627]] + + * Добавлен `Ractor.main?`. [[Feature #20627]] + + * Добавлены `Ractor.[]` и `Ractor.[]=` для доступа к локальному хранилищу + текущего рактора. [[Feature #20715]] + + * Добавлен `Ractor.store_if_absent(key){ init }` для потокобезопасной инициализации + локальных переменных рактора. [[Feature #20875]] + +* Range + + * `Range#size` теперь вызывает `TypeError`, если диапазон не поддерживает итерацию. [[Misc #18984]] + + +## Обновления стандартной библиотеки + +Примечание: перечислены только значимые обновления стандартной библиотеки. + +* RubyGems + * В gem push добавлена опция `--attestation`, позволяющая сохранять подпись в [sigstore.dev] + +* Bundler + * Добавлена настройка `lockfile_checksums` для включения контрольных сумм в новые lockfile-файлы + * В bundle lock добавлена опция `--add-checksums` для добавления контрольных сумм в существующий lockfile-файл + +* JSON + + * Повышена производительность `JSON.parse`: он работает примерно в 1.5 раза быстрее, чем в json-2.7.x. + +* Tempfile + + * Для Tempfile.create реализован именованный аргумент `anonymous: true`. + `Tempfile.create(anonymous: true)` сразу удаляет созданный временный файл. + Поэтому приложениям не нужно удалять его самостоятельно. + [[Feature #20497]] + +* win32/sspi.rb + + * Эта библиотека вынесена из репозитория Ruby в [ruby/net-http-sspi]. + [[Feature #20775]] + +Следующие гемы переведены из default гемов (гемов по умолчанию) в bundled гемы (гемы, поставляемые с Ruby). + +- mutex_m 0.3.0 +- getoptlong 0.2.1 +- base64 0.2.0 +- bigdecimal 3.1.8 +- observer 0.1.2 +- abbrev 0.1.2 +- resolv-replace 0.1.1 +- rinda 0.2.0 +- drb 2.2.1 +- nkf 0.2.0 +- syslog 0.2.0 +- csv 3.3.2 +- repl_type_completor 0.1.9 + +## Проблемы совместимости + +Примечание: исправления ошибок в функциональности не перечисляются. + +* Изменён вид сообщений об ошибках и трассировок стека (backtraces). + * Вместо обратной кавычки в качестве открывающей используется одинарная кавычка. [[Feature #16495]] + * Перед именем метода выводится имя класса, если у класса есть постоянное имя. [[Feature #19117]] + * Соответствующим образом изменены `Kernel#caller`, методы `Thread::Backtrace::Location` и другие. + + ``` + Old: + test.rb:1:in `foo': undefined method `time' for an instance of Integer + from test.rb:2:in `
' + + New: + test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer + from test.rb:2:in '
' + ``` + +* Изменён вывод Hash#inspect. [[Bug #20433]] + + * Ключи-символы отображаются с использованием современного синтаксиса: `"{user: 1}"` + * Для других ключей вокруг `=>` теперь добавлены пробелы: `'{"user" => 1}'`, а раньше их не было: `'{"user"=>1}'` + +* Kernel#Float() теперь принимает десятичные строки без дробной части. [[Feature #20705]] + + ```rb + Float("1.") #=> 1.0 (previously, an ArgumentError was raised) + Float("1.E-1") #=> 0.1 (previously, an ArgumentError was raised) + ``` + +* String#to_f теперь принимает десятичные строки без дробной части. Обратите внимание, что при указании экспоненты результат меняется. [[Feature #20705]] + + ```rb + "1.".to_f #=> 1.0 + "1.E-1".to_f #=> 0.1 (previously, 1.0 was returned) + ``` + +* Удалён Refinement#refined_class. [[Feature #19714]] + +## Проблемы совместимости стандартной библиотеки + +* DidYouMean + + * Удалены `DidYouMean::SPELL_CHECKERS[]=` и `DidYouMean::SPELL_CHECKERS.merge!`. + +* Net::HTTP + + * Удалены следующие устаревшие константы: + * `Net::HTTP::ProxyMod` + * `Net::NetPrivate::HTTPRequest` + * `Net::HTTPInformationCode` + * `Net::HTTPSuccessCode` + * `Net::HTTPRedirectionCode` + * `Net::HTTPRetriableCode` + * `Net::HTTPClientErrorCode` + * `Net::HTTPFatalErrorCode` + * `Net::HTTPServerErrorCode` + * `Net::HTTPResponseReceiver` + * `Net::HTTPResponceReceiver` + + Эти константы были объявлены устаревшими в 2012 году. + +* Timeout + + * Отрицательные значения для Timeout.timeout больше не принимаются. [[Bug #20795]] + +* URI + + * Парсер по умолчанию изменён с соответствующего RFC 2396 на соответствующий RFC 3986. + [[Bug #19266]] + +## Обновления C API + +* Удалены `rb_newobj` и `rb_newobj_of`, а также соответствующие макросы `RB_NEWOBJ`, `RB_NEWOBJ_OF`, `NEWOBJ`, `NEWOBJ_OF`. [[Feature #20265]] +* Удалена устаревшая функция `rb_gc_force_recycle`. [[Feature #18290]] + +## Прочие изменения + +* При передаче блока методу, который его не использует, теперь выводится + предупреждение в подробном режиме (`-w`). + [[Feature #15554]] + +* Переопределение некоторых основных методов, специально оптимизированных интерпретатором + и JIT, например `String.freeze` или `Integer#+`, теперь вызывает предупреждение + категории производительности (`-W:performance` или `Warning[:performance] = true`). + [[Feature #20429]] + +Смотрите [NEWS](https://docs.ruby-lang.org/en/3.4/NEWS_md.html) +или [историю коммитов](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}) +для получения подробностей. + +С учётом этих изменений [изменено {{ release.stats.files_changed }} файлов, добавлено {{ release.stats.insertions }} строк(+), удалено {{ release.stats.deletions }} строк(-)](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}#file_bucket) +с момента выхода Ruby 3.3.0! + +С Рождеством, хороших праздников и приятного программирования на Ruby 3.4! + +## Скачать + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }} + +## Что такое Ruby + +Разработка Ruby началась в 1993 году благодаря Matz (Yukihiro Matsumoto), +и сейчас язык развивается как open source проект. Он работает на многих платформах +и используется по всему миру, особенно для веб-разработки. + +[Feature #13557]: https://bugs.ruby-lang.org/issues/13557 +[Feature #15554]: https://bugs.ruby-lang.org/issues/15554 +[Feature #16495]: https://bugs.ruby-lang.org/issues/16495 +[Feature #18290]: https://bugs.ruby-lang.org/issues/18290 +[Feature #18980]: https://bugs.ruby-lang.org/issues/18980 +[Misc #18984]: https://bugs.ruby-lang.org/issues/18984 +[Feature #19117]: https://bugs.ruby-lang.org/issues/19117 +[Bug #19266]: https://bugs.ruby-lang.org/issues/19266 +[Feature #19714]: https://bugs.ruby-lang.org/issues/19714 +[Bug #19918]: https://bugs.ruby-lang.org/issues/19918 +[Bug #20064]: https://bugs.ruby-lang.org/issues/20064 +[Feature #20182]: https://bugs.ruby-lang.org/issues/20182 +[Feature #20205]: https://bugs.ruby-lang.org/issues/20205 +[Bug #20218]: https://bugs.ruby-lang.org/issues/20218 +[Feature #20265]: https://bugs.ruby-lang.org/issues/20265 +[Feature #20351]: https://bugs.ruby-lang.org/issues/20351 +[Feature #20429]: https://bugs.ruby-lang.org/issues/20429 +[Feature #20443]: https://bugs.ruby-lang.org/issues/20443 +[Feature #20470]: https://bugs.ruby-lang.org/issues/20470 +[Feature #20497]: https://bugs.ruby-lang.org/issues/20497 +[Feature #20564]: https://bugs.ruby-lang.org/issues/20564 +[Bug #20620]: https://bugs.ruby-lang.org/issues/20620 +[Feature #20627]: https://bugs.ruby-lang.org/issues/20627 +[Feature #20705]: https://bugs.ruby-lang.org/issues/20705 +[Feature #20715]: https://bugs.ruby-lang.org/issues/20715 +[Feature #20775]: https://bugs.ruby-lang.org/issues/20775 +[Bug #20795]: https://bugs.ruby-lang.org/issues/20795 +[Bug #20433]: https://bugs.ruby-lang.org/issues/20433 +[Feature #20860]: https://bugs.ruby-lang.org/issues/20860 +[Feature #20875]: https://bugs.ruby-lang.org/issues/20875 +[Feature #20884]: https://bugs.ruby-lang.org/issues/20884 +[sigstore.dev]: https://www.sigstore.dev +[ruby/net-http-sspi]: https://github.com/ruby/net-http-sspi diff --git a/ru/news/_posts/2024-12-25-ruby-3-4-1-released.md b/ru/news/_posts/2024-12-25-ruby-3-4-1-released.md new file mode 100644 index 0000000000..63ccb4931c --- /dev/null +++ b/ru/news/_posts/2024-12-25-ruby-3-4-1-released.md @@ -0,0 +1,39 @@ +--- +layout: news_post +title: "Вышел Ruby 3.4.1" +author: "naruse" +translator: "ablzh" +date: 2024-12-25 00:00:00 +0000 +lang: ru +--- + +Вышел Ruby 3.4.1. + +В этом релизе исправлено описание версии. + +Подробности можно найти в [заметках о релизе на GitHub](https://github.com/ruby/ruby/releases/tag/v3_4_1). + +## Скачать + +{% assign release = site.data.releases | where: "version", "3.4.1" | first %} + +* <{{ release.url.gz }}> + + SIZE: {{ release.size.gz }} + SHA1: {{ release.sha1.gz }} + SHA256: {{ release.sha256.gz }} + SHA512: {{ release.sha512.gz }} + +* <{{ release.url.xz }}> + + SIZE: {{ release.size.xz }} + SHA1: {{ release.sha1.xz }} + SHA256: {{ release.sha256.xz }} + SHA512: {{ release.sha512.xz }} + +* <{{ release.url.zip }}> + + SIZE: {{ release.size.zip }} + SHA1: {{ release.sha1.zip }} + SHA256: {{ release.sha256.zip }} + SHA512: {{ release.sha512.zip }}