From 8769a59ad60e6bea3c76f21e9a6159b5c11076d9 Mon Sep 17 00:00:00 2001 From: Victor Maslov Date: Wed, 15 Dec 2021 04:18:25 +0300 Subject: [PATCH 1/2] Actualised Installation documentation (ru) --- ru/documentation/installation/index.md | 170 +++++++++++++++++-------- 1 file changed, 114 insertions(+), 56 deletions(-) diff --git a/ru/documentation/installation/index.md b/ru/documentation/installation/index.md index 1164d840f1..4ab990949f 100644 --- a/ru/documentation/installation/index.md +++ b/ru/documentation/installation/index.md @@ -10,38 +10,42 @@ lang: ru и как собрать Ruby из исходников. {: .summary} - ## Выберите ваш метод установки Есть несколько способов установки Ruby: -* Когда вы на UNIX-подобных операционных системах, использование - **менеджера пакетов** вашей системы - это самый простой способ. - Однако, версия Ruby в пакетных менеджерах не самая последняя. +* На UNIX-подобных операционных системах проще всего использовать **менеджер пакетов** + вашей системы, но поставляемый пакет может быть несколько устаревшим. * **Установщики** могут быть использованы для установки конкретной версии или нескольких версий Ruby. Есть установщик для Windows. -* **Менеджеры** помогут вам переключаться между различными версиями Ruby, - установленными на вашей системе. +* **Менеджеры версий** позволяют легко переключаться между различными версиями Ruby. * Ну и наконец, вы можете также **собрать Ruby из исходников**. -В следующем списке перечислены доступные способы установки для различных нужд -и платформ. +На Windows 10 вы также можете воспользоваться [Windows Subsystem for Linux][wsl], +чтоб установить дистрибутив Linux, а затем в него установить Ruby любым из +перечисленных способов. + +Ниже перечислены все возможные способы установки на разные платформы. * [Системы управления пакетами](#package-management-systems) * [Debian, Ubuntu](#apt) * [CentOS, Fedora, RHEL](#yum) + * [Snap](#snap) * [Gentoo](#portage) * [Arch Linux](#pacman) * [macOS](#homebrew) + * [FreeBSD](#freebsd) * [OpenBSD](#openbsd) - * [Solaris, OpenIndiana](#solaris) + * [OpenIndiana](#openindiana) + * [Windows Package Manager](#winget) + * [Chocolatey для Windows](#chocolatey) * [Другие дистрибутивы](#other-systems) * [Установщики](#installers) * [ruby-build](#ruby-build) * [ruby-install](#ruby-install) * [RubyInstaller](#rubyinstaller) (Windows) * [Ruby Stack](#rubystack) -* [Менеджеры](#managers) +* [Менеджеры версий](#managers) * [asdf-vm](#asdf-vm) * [chruby](#chruby) * [rbenv](#rbenv) @@ -57,15 +61,14 @@ lang: ru использовать сторонний инструмент для установки – вы можете воспользоваться пакетным менеджером вашей операционной системы. -Некоторые участники сообщества Ruby убеждены, что никогда не стоит -пользоваться пакетными менеджерами для установки Ruby. Вместо этого -лучше воспользоваться другими инструментами. -Оставим все плюсы и минусы данного подхода за -границами данного текста, отметим лишь, что основной причиной данной -убежденности является то, что в пакетных менеджерах зачастую содержится -информация об устаревших версиях Ruby. Если вы хотите использовать -новейшую версию Ruby, убедитесь, что вы используете верное имя пакета -или воспользуйтесь инструментами описанными ниже вместо этого. +Некоторые участники сообщества Ruby убеждены, что не стоит +пользоваться пакетными менеджерами для установки Ruby, и что +лучше воспользоваться специальными инструментами. + +Одна из причин -- это то, что пакетные менеджеры могут поставлять +устаревшую версию Ruby. Вы можете проверить это, посмотрев на версию, +значащуюся в имени пакета. Чтобы установить более новую версию, +вы можете воспользоваться [инсталляторами][installers]. ### apt (Debian или Ubuntu) @@ -78,14 +81,11 @@ Debian GNU/Linux и Ubuntu используют систему управлен $ sudo apt-get install ruby-full {% endhighlight %} -Пакет `ruby-full` установит Ruby версии 2.3.1, которая является последним -стабильным релизом. - -### yum (CentOS, Fedora, или RHEL) +### yum (CentOS, Fedora или RHEL) {: #yum} -CentOS, Fedora, и RHEL используют систему управления пакетами `yum`. +CentOS, Fedora и RHEL используют систему управления пакетами `yum`. Вы можете использовать ее следующим образом: {% highlight sh %} @@ -96,6 +96,26 @@ $ sudo yum install ruby на момент выхода конкретной версии дистрибутива. +### snap (Ubuntu и другие Linux) +{: #snap} + +Snap -- это менеджер пакетов, разработанный Canonical. +Он доступен из коробки на Ubuntu, но также его можно установить и на +многие другие дистрибутивы Linux. + +{% highlight sh %} +$ sudo snap install ruby --classic +{% endhighlight %} + +На каждую минорную версию Ruby имеется несколько каналов. +Например, так можно установить stable-версию Ruby 2.3: + +{% highlight sh %} +$ sudo snap switch ruby --channel=2.3/stable +$ sudo snap refresh +{% endhighlight %} + + ### portage (Gentoo) {: #portage} @@ -105,7 +125,6 @@ Gentoo использует систему управления пакетами $ sudo emerge dev-lang/ruby {% endhighlight %} -По умолчанию, будут установлены версии 1.9 и 2.0, но доступны и другие версии. Для установки конкретной версии, заполните `RUBY_TARGETS` в вашем `make.conf`. Подробнее смотрите на [сайте проекта Gentoo Ruby][gentoo-ruby]. @@ -113,24 +132,22 @@ $ sudo emerge dev-lang/ruby ### pacman (Arch Linux) {: #pacman} -Arch Linux использует систему управления пакетами `pacman`. Чтобы получить -Ruby, просто напишите следующее: +Arch Linux использует систему управления пакетами `pacman`. {% highlight sh %} $ sudo pacman -S ruby {% endhighlight %} -Это должно установить последнюю стабильную версию Ruby. +Это установит последнюю стабильную версию Ruby. ### Homebrew (macOS) {: #homebrew} -На OS X El Capitan, Yosemite и Mavericks, Ruby 2.0 уже включены. +OS X El Capitan, Yosemite и Mavericks уже поставляются с Ruby 2.0. OS X Mountain Lion, Lion и Snow Leopard поставляются с версией Ruby 1.8.7. -Многие люди на macOS используют [Homebrew][homebrew] как пакетный менеджер. -И это действительно просто – установить Ruby: +Многие на macOS используют [Homebrew][homebrew] в качестве пакетного менеджера. {% highlight sh %} $ brew install ruby @@ -139,10 +156,28 @@ $ brew install ruby Это установит последнюю версию Ruby. +### FreeBSD +{: #freebsd} + +FreeBSD предоставляет Ruby как в виде пакета, так и в исходниках. +Готовые пакеты могут быть установлены при помощи pkg: + +{% highlight sh %} +$ pkg install ruby +{% endhighlight %} + +Из исходников Ruby можно установить при помощи +[Ports Collection][freebsd-ports-collection]. Это полезно в случае, +когда вы хотите как-либо кастомизировать сборку. + +Больше информации о Ruby и его экосистеме на FreeBSD +вы найдёте на [сайте FreeBSD Ruby Project][freebsd-ruby]. + + ### OpenBSD {: #openbsd} -OpenBSD, а также его дистрибутив adJ, имеет пакеты для трех +OpenBSD, а также его дистрибутив adJ, имеет пакеты для трёх основных версий Ruby. Следующая команда позволяет вам увидеть доступные версии и установить одну из них: @@ -153,30 +188,45 @@ $ doas pkg_add ruby Вы можете установить несколько основных версий одновременно, потому что их бинарники имеют разные имена (например, `ruby27`, `ruby26`). -Ветка `HEAD` коллекции портов OpenBSD может иметь -самую последнюю версию Ruby для этой платформы через несколько дней после ее -релиза, смотрите -[директорию lang/ruby в самой последней коллекции портов][openbsd-current-ruby-ports]. - +Ветка `HEAD` коллекции портов OpenBSD может иметь самую последнюю +версию Ruby для этой платформы через несколько дней после ее релиза, смотрите +[директорию lang/ruby в самой свежей коллекции портов][openbsd-current-ruby-ports]. -### Ruby на Solaris и OpenIndiana -{: #solaris} -Ruby 1.8.7 доступен для Solaris 8-10 на [Sunfreeware][sunfreeware] и -Blastwave. Ruby 1.9.2p0 также доступен на [Sunfreeware][sunfreeware], -но это все уже устарело. +### Ruby на OpenIndiana +{: #openindiana} Чтобы установить Ruby на [OpenIndiana][openindiana], пожалуйста, используйте -клиент [Image Packaging System, или IPS][opensolaris-pkg]. Это установит -последние бинарники Ruby и RubyGems прямо из сетевого репозитория -OpenSolaris для Ruby 1.9. Это просто: +клиент [Image Packaging System, или IPS][opensolaris-pkg]. Следующая команда +установит последние бинарники Ruby и RubyGems прямо из сетевого репозитория +OpenSolaris. {% highlight sh %} -$ pkg install runtime/ruby-18 +$ pkg install runtime/ruby {% endhighlight %} -Однако, сторонние инструменты могут быть хорошим способом получить -последнюю версию Ruby. + +### Windows Package Manager +{: #winget} + +На Windows для установки Ruby вы можете воспользоваться +[Windows Package Manager CLI](https://github.com/microsoft/winget-cli): + +{% highlight sh %} +> winget install Ruby +{% endhighlight %} + +### Chocolatey для Windows +{: #chocolatey} + +Также для установки Ruby на Windows доступен +[менеджер пакетов Chocolatey](https://chocolatey.org/install): + +{% highlight sh %} +> choco install ruby +{% endhighlight %} + +Эта команда доустановит `msys2` при необходимости. ### Другие дистрибутивы @@ -194,8 +244,8 @@ $ pkg install runtime/ruby-18 или пакетным менеджером, не актуальна, то вы можете установить новую версию при помощи сторонних установщиков. Некоторые из них также позволяют установить несколько версий Ruby в вашей системе и переключаться между ними. Если вы -планируете использовать [RVM](#rvm) как менеджер версий - то вам не нужен -отдельный установщик, он идет со своим. +планируете использовать [RVM](#rvm) как менеджер версий, то вам не нужен +отдельный установщик, он идет в комплекте. ### ruby-build @@ -237,12 +287,13 @@ ruby-build может использоваться как отдельная п Поддерживает macOS, Linux, Windows, виртуальные машины и облачные сервисы. -## Менеджеры +## Менеджеры версий {: #managers} -Многие рубисты используют менеджеры для управления несколькими версиями Ruby. -Они предоставляют различные преимущества, но поддерживаются не официально. -Однако их сообщество может оказать помощь. +Многие рубисты используют менеджеры версий для управления несколькими версиями Ruby. +Они автоматически переключают текущую версию и имеют ряд других преимуществ, +но не поддерживаются официально. Однако, вы можете получить необходимую помощь +в соответствующих сообществах. ### asdf-vm @@ -290,7 +341,7 @@ UNIX-подобных операционных систем. {: #building-from-source} Конечно, вы можете установить Ruby из исходников. -[Скачайте](/ru/downloads/) и распакуйте архив, затем просто выполните: +[Скачайте](download) и распакуйте архив, затем просто выполните: {% highlight sh %} $ ./configure @@ -301,6 +352,8 @@ $ sudo make install По умолчанию, это установит Ruby в `/usr/local`. Для изменения, передайте опцию `--prefix=DIR` в скрипт `./configure`. +Узнать больше о сборке из исходников вы можете из [файла Ruby README][readme]. + Использование сторонних инструментов или пакетных менеджеров может быть лучше, хотя бы потому, что установленные Ruby не будут управляться любыми инструментами. @@ -313,11 +366,16 @@ $ sudo make install [uru]: https://bitbucket.org/jonforums/uru [rubyinstaller]: https://rubyinstaller.org/ [rubystack]: http://bitnami.com/stack/ruby/installer -[sunfreeware]: http://www.sunfreeware.com [openindiana]: http://openindiana.org/ [opensolaris-pkg]: http://opensolaris.org/os/project/pkg/ [gentoo-ruby]: http://www.gentoo.org/proj/en/prog_lang/ruby/ +[freebsd-ruby]: https://wiki.freebsd.org/Ruby +[freebsd-ports-collection]: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html [homebrew]: http://brew.sh/ +[download]: /ru/downloads/ +[installers]: /ru/documentation/installation/#installers +[readme]: https://github.com/ruby/ruby#how-to-compile-and-install +[wsl]: https://docs.microsoft.com/en-us/windows/wsl/about [asdf-vm]: https://asdf-vm.com/ [asdf-ruby]: https://github.com/asdf-vm/asdf-ruby [openbsd-current-ruby-ports]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/lang/ruby/?only_with_tag=HEAD From f365bca8012d1c00fe8bab62ed760fbc8bd8aeae Mon Sep 17 00:00:00 2001 From: Victor Maslov Date: Wed, 15 Dec 2021 06:25:05 +0300 Subject: [PATCH 2/2] Translate Ruby 3.1.0 pre 1 release (ru) --- ...2021-11-09-ruby-3-1-0-preview1-released.md | 210 ++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 ru/news/_posts/2021-11-09-ruby-3-1-0-preview1-released.md diff --git a/ru/news/_posts/2021-11-09-ruby-3-1-0-preview1-released.md b/ru/news/_posts/2021-11-09-ruby-3-1-0-preview1-released.md new file mode 100644 index 0000000000..8bb5dcf5b9 --- /dev/null +++ b/ru/news/_posts/2021-11-09-ruby-3-1-0-preview1-released.md @@ -0,0 +1,210 @@ +--- +layout: news_post +title: "Вышел Ruby 3.1.0 Preview 1" +author: "naruse" +translator: "nakilon" +date: 2021-11-09 00:00:00 +0000 +lang: ru +--- + +{% assign release = site.data.releases | where: "version", "3.1.0-preview1" | first %} + +Мы рады анонсировать релиз Ruby {{ release.version }}. + +## YJIT: Новый экспериментальный JIT компилятор. + +Ruby 3.1 включил в себя YJIT -- новый JIT компилятор, разработанный в Shopify. + +С тех пор, как [Ruby 2.6 представил MJIT в 2018](/ru/news/2018/12/25/ruby-2-6-0-released/) его производительность сильно улучшилась и, наконец, [мы достигли Ruby3x3 в прошлом году](/ru/news/2020/12/25/ruby-3-0-0-released/). Но не смотря на то, что Optcarrot показал впечатляющие результаты, JIT не имел достаточного успеха в настоящих бизнес приложениях. + +В недавнее время Shopify внесла множество улучшений в Ruby, чтоб ускорить их Rails приложение. YJIT -- это важный вклад, который нацелен на улучшение производительности приложений Rails. + +В то время как MJIT является JIT компилятором методов и использует внешний компилятор C, YJIT использует Basic Block Versioning и включает в себя JIT. Lazy Basic Block Versioning (LBBV) сначала компилирует начало метода, а затем постепенно компилирует остальное по мере того, как типы аргументов и переменных выясняются динамически. См. [YJIT: a basic block versioning JIT compiler for CRuby](https://dl.acm.org/doi/10.1145/3486606.3486781). + +С этой технологией YJIT достигает одновременно и быстрого прогрева, и улучшения производительности на большинстве реального ПО -- до 22% на railsbench и 39% на liquid-render. + +YJIT -- по прежнему экспериментальная фича, поэтому она выключена по умолчанию. Если вы хотите ее использовать, то включить YJIT можно опцией `--yjit`. К тому же пока что она доступна только на x86-64 платформах macOS и Linux. + +* https://bugs.ruby-lang.org/issues/18229 +* https://shopify.engineering/yjit-just-in-time-compiler-cruby +* https://www.youtube.com/watch?v=PBVLf3yfMs8 + +## гем debug: Новый отладчик + +В комплекте идет новый отладчик [debug.gem](https://github.com/ruby/debug). debug.gem -- это быстрая реализация отладчика, которая предоставляет множество функций, таких как удалённая отладка, разноцветный REPL, интеграция с IDE (VSCode) и многое другое. Он заменяет собой `lib/debug.rb` в стандартной библиотеке. + +## error_highlight: Более детальное отображение ошибок в бектрейсе + +Представлен новый встроенный гем error_highlight. Он более детально отображает сообщение об ошибке: + +``` +$ ruby test.rb +test.rb:1:in `
': undefined method `time' for 1:Integer (NoMethodError) + +1.time {} + ^^^^^ +Did you mean? times +``` + +Этот гем включён по умолчанию. Вы можете его выключить опцией командной строки `--disable-error_highlight`. См. [репозиторий](https://github.com/ruby/error_highlight). + +## Улучшения в irb + +Будут описаны в следующем обзоре. + +## Другие важные новшества + +### Язык + +* Значения в литералах Hash и keyword-аргументы могут быть опущены. [Feature #14579] + * `{x:, y:}` -- сахар для `{x: x, y: y}`. + * `foo(x:, y:)` -- сахар для `foo(x: x, y: y)`. + +* Pin-оператор в сопоставлении с образцом теперь принимает выражение. [Feature #17411] + +```ruby +Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a +#=> [[3, 5], [5, 7], [11, 13]] +``` + +### RBS + +RBS -- язык описания структуры программы на Ruby. См. [репозиторий](https://github.com/ruby/rbs). + +Отличия от Ruby 3.0.0: + +* представлена команда `rbs collection` для управления RBS-ами гемов. [документация](https://github.com/ruby/rbs/blob/master/docs/collection.md) +* Добавлены/изменены многие встроенные и stdlib-ные сигнатуры. +* Включено множество исправлений и улучшений производительности. + +См. [CHANGELOG.md](https://github.com/ruby/rbs/blob/master/CHANGELOG.md). + +### TypeProf + +TypeProf -- статический анализатор типов для Ruby. Он генерирует прототип RBS для неаннотированного Ruby кода. См. [документацию](https://github.com/ruby/typeprof/blob/master/doc/doc.md). + +Отличия от Ruby 3.0.0: + +* Реализована [экспериментальная поддержка IDE](https://github.com/ruby/typeprof/blob/master/doc/ide.md). +* Множество исправлений и улучшений производительности. + +## Улучшения производительности + +* MJIT + * Для таких применений, как Rails, значение `--jit-max-cache` по умолчанию изменено с 100 на 10000. + JIT компилятор более не пропускает компиляцию методов длиннее 1000 инструкций. + * Для поддержки Zeitwerk в Rails JIT код более не отменяется, когда включён TracePoint для методов класса. + +## Другие важные отличия от 3.0 + +* Однострочное сопоставление с образцом (например, `ary => [x, y, z]`) более не является экспериментальным. +* Немного изменён порядок операций присвоения. [[Bug #4443]](https://bugs.ruby-lang.org/issues/4443) + * `foo[0], bar[0] = baz, qux` вычислялось в порядке `baz`, `qux`, `foo`, а затем `bar` в Ruby 3.0. В Ruby 3.1 порядок следующий: `foo`, `bar`, `baz`, а затем `qux`. +* Variable Width Allocation для строк ('экспериментально') [[Bug #18239]](https://bugs.ruby-lang.org/issues/18239) + +### Обновления стандартных библиотек + +* Некоторые стандартные библиотеки были обновлены. + * RubyGems + * Bundler + * RDoc 6.4.0 + * ReLine + * JSON 2.6.0 + * Psych 4.0.2 + * FileUtils 1.6.0 + * Fiddle + * StringIO 3.0.1 + * IO::Console 0.5.9 + * IO::Wait 0.2.0 + * CSV + * Etc 1.3.0 + * Date 3.2.0 + * Zlib 2.1.1 + * StringScanner + * IpAddr + * Logger 1.4.4 + * OStruct 0.5.0 + * Irb + * Racc 1.6.0 + * Delegate 0.2.0 + * Benchmark 0.2.0 + * CGI 0.3.0 + * Readline(C-ext) 0.1.3 + * Timeout 0.2.0 + * YAML 0.2.0 + * URI 0.11.0 + * OpenSSL + * DidYouMean + * Weakref 0.1.1 + * Tempfile 0.1.2 + * TmpDir 0.1.2 + * English 0.7.1 + * Net::Protocol 0.1.2 + * Net::Http 0.2.0 + * BigDecimal + * OptionParser 0.2.0 + * Set + * Find 0.1.1 + * Rinda 0.1.1 + * Erb + * NKF 0.1.1 + * Base64 0.1.1 + * OpenUri 0.2.0 + * SecureRandom 0.1.1 + * Resolv 0.2.1 + * Resolv::Replace 0.1.0 + * Time 0.2.0 + * PP 0.2.1 + * Prettyprint 0.1.1 + * Drb 2.1.0 + * Pathname 0.2.0 + * Digest 3.1.0.pre2 + * Un 0.2.0 +* Следующие поставляемые с языком гемы были обновлены. + * minitest 5.14.4 + * power_assert 2.0.1 + * rake 13.0.6 + * test-unit 3.5.0 + * rbs 1.6.2 + * typeprof 0.20.0 +* Следующие встроенные гемы стали поставляемыми. + * net-ftp + * net-imap + * net-pop + * net-smtp + * matrix + * prime + +См. [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) +или [коммиты](https://github.com/ruby/ruby/compare/v3_0_0...{{ release.tag }}). + +В ходе этого со времен версии Ruby 3.0.0 было изменено [{{ release.stats.files_changed }} файлов, {{ release.stats.insertions }} вставок(+), {{ release.stats.deletions }} удалений(-)](https://github.com/ruby/ruby/compare/v3_0_0...{{ release.tag }}#file_bucket) + +## Скачать + +* <{{ 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 + +Matz (Yukihiro Matsumoto) разработал первую версию Ruby в 1993, +и на сегодня язык разрабатывается как Open Source. Он работает +на множестве платформ и используется по всему миру, особенно в веб разработке.