Skip to content

Translate the installation docs and the latest news (ru) #2759

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
170 changes: 114 additions & 56 deletions ru/documentation/installation/index.md
Original file line number Diff line number Diff line change
@@ -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,32 +125,29 @@ Gentoo использует систему управления пакетами
$ sudo emerge dev-lang/ruby
{% endhighlight %}

По умолчанию, будут установлены версии 1.9 и 2.0, но доступны и другие версии.
Для установки конкретной версии, заполните `RUBY_TARGETS` в вашем `make.conf`.
Подробнее смотрите на [сайте проекта Gentoo Ruby][gentoo-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
210 changes: 210 additions & 0 deletions ru/news/_posts/2021-11-09-ruby-3-1-0-preview1-released.md
Original file line number Diff line number Diff line change
@@ -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 `<main>': 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. Он работает
на множестве платформ и используется по всему миру, особенно в веб разработке.