From 34cd788e363d333da36f33f25baf035d77613a7f Mon Sep 17 00:00:00 2001 From: kgv Date: Fri, 28 Apr 2017 01:18:35 +0300 Subject: [PATCH 1/9] Add article "Announcing Rust 1.17" --- _posts/2017-04-27-Rust-1.17.md | 302 +++++++++++++++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 _posts/2017-04-27-Rust-1.17.md diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-04-27-Rust-1.17.md new file mode 100644 index 00000000..0bf228f8 --- /dev/null +++ b/_posts/2017-04-27-Rust-1.17.md @@ -0,0 +1,302 @@ +--- +layout: post +categories: новости +title: "Выпуск Rust 1.17" +author: The Rust Core Team +original: https://blog.rust-lang.org/2017/04/17/Rust-1.17.html +translator: kgv +--- + +Команда Rust рада представить выпуск Rust 1.17.0. Rust - это системный язык +программирования, нацеленный на безопасность, скорость и параллельное выполнение кода. + +Если у вас установлена предыдущая версия Rust, то для обновления достаточно выполнить: + +```bash +$ rustup update stable +``` + +Если у вас ещё не установлен Rust, то вы можете [установить `rustup`][install] c +соответствующей страницы нашего веб-сайта и ознакомиться с [подробным примечанием +к выпуску 1.16.0][notes] на GitHub. + +[install]: https://www.rust-lang.org/ru-RU/install.html +[notes]: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1160-2017-03-16 + +### Что вошло в стабильную версию 1.17.0 + +Выпуск Rust 1.17.0 в основном вносит небольшие улучшения, преимущественно касающиеся удобства использования. +Например, [время жизни `'static` теперь автоматически подразумевается для констант или статических переменных](https://github.com/rust-lang/rust/pull/39265). При создании константы или статической переменной + + + +```rust +const NAME: &'static str = "Ferris"; +static NAME: &'static str = "Ferris"; +``` + +Rust 1.17 позволит вам больше не писать `'static`, так как это единственное время жизни, которое имеет смысл: + +```rust +const NAME: &str = "Ferris"; +static NAME: &str = "Ferris"; +``` + +В некоторых ситуациях это позволит избавиться сразу от нескольких таких лишних модификаторов: + +```rust +// было +const NAMES: &'static [&'static str; 2] = &["Ferris", "Bors"]; + +// стало +const NAMES: &[&str; 2] = &["Ferris", "Bors"]; +``` + +Другим подобным косметическим улучшением является "короткая инициализация полей". Подобно ECMAScript 6, который называет это "Сокращение Значения Свойства Объекта Литерала" ("Object Literal Property Value Shorthand"), дублирование может быть удалено при объявлении структур, к примеру: + +```rust +// определение +struct Point { + x: i32, + y: i32, +} + +let x = 5; +let y = 6; + +// было +let p = Point { + x: x, + y: y, +}; + +// стало +let p = Point { + x, + y, +}; +``` + +То есть форма записи `x, y` будет предполагать, что ее значения соответствуют переменным с аналогичными именами, находящимися в данной области видимости. + +Другое маленькое, но полезное улучшение касается в основном новичков в Rust, которые пытаются использовать `+`, чтобы соединить две `& str` вместе. Но это не работает, соединить вы можете лишь `String + & str`. Поэтому, было добавлено [новое сообщение об ошибке](https://github.com/rust-lang/rust/pull/39116), чтобы помочь пользователям, которые совершают подобную ошибку: + +```rust +// код +"foo" + "bar" + +// было +error[E0369]: binary operation `+` cannot be applied to type `&'static str` + --> :2:5 + | +2 | "foo" + "bar" + | ^^^^^ + | +note: an implementation of `std::ops::Add` might be missing for `&'static str` + --> :2:5 + | +2 | "foo" + "bar" + | ^^^^^ + +// стало +error[E0369]: binary operation `+` cannot be applied to type `&'static str` + --> :2:5 + | +2 | "foo" + "bar" + | ^^^^^ + | + = note: `+` can't be used to concatenate two `&str` strings +help: to_owned() can be used to create an owned `String` from a string +reference. String concatenation appends the string on the right to the string on +the left and may require reallocation. This requires ownership of the string on +the left. + | "foo".to_owned() + "bar" +``` + +При использовании сценариев сборки Cargo вы должны указать расположение скрипта в вашем `Cargo.toml`. Однако, подавляющее большинство людей писали `build = "build.rs"`, тем самым используя файл `build.rs`, расположенный в корне проекта. [Теперь это соглашение поддерживается самим Cargo](https://github.com/rust-lang/cargo/pull/3664), и будет использовано по умолчанию, если существует файл `build.rs`. Мы предупреждали об этом изменении в течение нескольких последних выпусков. Вы также можете использовать `build = false` для отказа от этого соглашения. + +В этом выпуске помечена как ["на удаление"](https://github.com/rust-lang/rust/pull/39431) старая система сборки на основе `Makefile`. Новая система, анонсированная в Rust 1.15, написана на Rust и в основном использует Cargo для управления сборкой. На данный момент она уже достаточно зрелая, чтобы быть единственной системой сборки. + +В рамках этого изменения, пакеты из crates.io теперь можно использовать в системе сборки Rust. Первым был добавлен [mdBook](https://crates.io/crates/mdbook), и [он теперь используется](https://github.com/rust-lang/rust/pull/39633) при сборки нашей разнообразной книжной документации: + +* [Книга "Язык программирования Rust"](https://doc.rust-lang.org/stable/book/) ([repo](https://github.com/rust-lang/book)) +* [The reference](https://doc.rust-lang.org/stable/reference/) ([repo](https://github.com/rust-lang-nursery/reference)) +* [Rustonomicon](https://doc.rust-lang.org/stable/nomicon/) ([repo](https://github.com/rust-lang-nursery/nomicon)) + +Обратите внимание на ссылки на соответствующие репозитории; они были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Нестабильная книга](https://doc.rust-lang.org/stable/unstable-book/). Она делает обзор нестабильных фич, содержит ссылки на отслеживание проблем, связанных с ними, и может содержать исходную документацию. Если есть фича, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее отслеживании! + +Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить полосу пропускания, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документов, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. + +Наконец, хотя этот выпуск и полон улучшений, но есть один маленький шажок назад, о котором мы хотим сообщить вам с сожалением. В Windows была выпущена Visual Studio 2017, и Microsoft изменила структуру установки программного обеспечения. [Rust не может автоматически определить её местоположение](https://github.com/rust-lang/rust/issues/38584), и хотя мы работали над необходимыми изменениями, но не успели к этому выпуску. До тех пор, Visual Studio 2015 все еще работает нормально, или же вы можете запустить `vcvars.bat` в командной строке. Мы надеемся, что эта работа будет выполнена в кратчайшие сроки. + +Подробнее смотрите [примечания к выпуску][notes]. + +#### Стабилизация библиотек + +Был стабилизирован 21 новых API: + +* [`Arc::into_raw`] и [`Rc::into_raw`] позволят вам взять `Arc` или `Rc` и получить. +* [`Arc::from_raw`] и [`Rc::from_raw`] позволят вам взять сырой указатель и получить `Arc` или `Rc`. +* [`Arc::ptr_eq`] и [`Rc::ptr_eq`] возвращает `true` если оба `Arc` или оба `Rc` указывают на одно и то же значение (не обязательно значения, которые сравниваются как равные). +* [`Ordering::then`] позволит вам сцепить два `Ordering` вместе, и [`Ordering::then_with`] позволит сделать это с помощью функции. +* [`BTreeMap::range`] позволит вам итерировать лишь по части `BTreeMap`, и [`BTreeMap::range_mut`] позволит вам делать это с возможностью изменения. [`collections::Bound`] может дать вам еще больше контроля. +* [`process::abort`] будет полностью завершать процесс аномальным образом. +* [`ptr::read_unaligned`] и [`ptr::write_unaligned`] аналогичны `ptr::read` и `ptr::write`, но без требований к выравниванию. +* [`Result::expect_err`] mirrors `Result::expect`, but with the `Err` case rather than the `Ok` case. +* [`Cell::swap`] аналогичен `std::mem::swap`, но позволяет вам делать это с `&Cell` вместо `&mut T`. +* [`Cell::replace`] аналогичен `std::mem::replace`, но позволяет вам делать это с `&Cell` вместо `&mut T`. +* [`Cell::into_inner`] позволит вам взять `Cell`, и извлечь его значение. +* [`Cell::take`] позволит вам забрать значение `Cell` наружу, заменив его на `Default::default`. + +[`Arc::from_raw`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.from_raw +[`Arc::into_raw`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.into_raw +[`Arc::ptr_eq`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.ptr_eq +[`BTreeMap::range_mut`]: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.range_mut +[`BTreeMap::range`]: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.range +[`Cell::into_inner`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.into_inner +[`Cell::replace`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.replace +[`Cell::swap`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.swap +[`Cell::take`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.take +[`Ordering::then_with`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.then_with +[`Ordering::then`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.then +[`Rc::from_raw`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.from_raw +[`Rc::into_raw`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.into_raw +[`Rc::ptr_eq`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.ptr_eq +[`Result::expect_err`]: https://doc.rust-lang.org/std/result/enum.Result.html#method.expect_err +[`collections::Bound`]: https://doc.rust-lang.org/std/collections/enum.Bound.html +[`process::abort`]: https://doc.rust-lang.org/std/process/fn.abort.html +[`ptr::read_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.read_unaligned.html +[`ptr::write_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.write_unaligned.html + +In other changes, `Cell` used to require that `T: Copy` for many of its methods, +but [this has been relaxed significantly](https://github.com/rust-lang/rust/pull/39793). + +Что касается других изменений, для многих методов `Cell` требовалось ограничение `T: Copy`, но [теперь это требование значительно ослабло](https://github.com/rust-lang/rust/pull/39793). + +`Box` [теперь реализует](https://github.com/rust-lang/rust/pull/40009) более дюжины новых преобразований с помощью `From`. + +`SocketAddr` и `IpAddr` также теперь имеют [несколько новых преобразований](https://github.com/rust-lang/rust/pull/39372). Раньше вы должны были писать код вроде этого: + +```rust +"127.0.0.1:3000".parse().unwrap() +``` + +Сейчас же вы можете писать + +```rust +SocketAddr::from(([127, 0, 0, 1], 3000)) +// или +([127, 0, 0, 1], 3000).into()) +``` + +Что позволит удалить ненужный парсинг во время выполнения, и примерно как читаемый, в зависимости от ваших предпочтений. + +Обратная трассировка [теперь имеет более приятное форматирование](https://github.com/rust-lang/rust/pull/38165), выводя некоторые вещи по умолчанию. Например, полная обратная трассировка: + +```text +thread 'main' panicked at 'explicit panic', foo.rs:2 +stack backtrace: + 1: 0x55c39a23372c - std::sys::imp::backtrace::tracing::imp::write::hf33ae72d0baa11ed + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:42 + 2: 0x55c39a23571e - std::panicking::default_hook::{{closure}}::h59672b733cc6a455 + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:351 + 3: 0x55c39a235324 - std::panicking::default_hook::h1670459d2f3f8843 + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:367 + 4: 0x55c39a235afb - std::panicking::rust_panic_with_hook::hcf0ddb069e7beee7 + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:555 + 5: 0x55c39a22e866 - std::panicking::begin_panic::heb433e9aa28a7408 + 6: 0x55c39a22e9bf - foo::main::hd216d4a160fcce19 + 7: 0x55c39a23d44a - __rust_maybe_catch_panic + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libpanic_unwind/lib.rs:98 + 8: 0x55c39a236006 - std::rt::lang_start::hd7c880a37a646e81 + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:436 + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panic.rs:361 + at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/rt.rs:57 + 9: 0x55c39a22e9e9 - main + 10: 0x7f5e5ed3382f - __libc_start_main + 11: 0x55c39a22e6b8 - _start + 12: 0x0 - +``` + +взамен этого + +```text +thread 'main' panicked at 'explicit panic', foo.rs:2 +stack backtrace: + 0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace + at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49 + 1: std::sys_common::backtrace::_print + at /checkout/src/libstd/sys_common/backtrace.rs:71 + 2: std::panicking::default_hook::{{closure}} + at /checkout/src/libstd/sys_common/backtrace.rs:60 + at /checkout/src/libstd/panicking.rs:355 + 3: std::panicking::default_hook + at /checkout/src/libstd/panicking.rs:371 + 4: std::panicking::rust_panic_with_hook + at /checkout/src/libstd/panicking.rs:549 + 5: std::panicking::begin_panic + 6: foo::main + 7: __rust_maybe_catch_panic + at /checkout/src/libpanic_unwind/lib.rs:98 + 8: std::rt::lang_start + at /checkout/src/libstd/panicking.rs:433 + at /checkout/src/libstd/panic.rs:361 + at /checkout/src/libstd/rt.rs:57 + 9: main + 10: __libc_start_main + 11: _start +``` + +по умолчанию. Вы можете установить переменную окружения `RUST_BACKTRACE = full`, чтобы получить полную обратную трассировку. В будущем мы планируем сделать более аккуратно; См. [эту ошибку](https://github.com/rust-lang/rust/pull/40264). + +Подробнее смотрите [примечания к выпуску][notes]. + +#### Фичи Cargo + +Помимо ранее упомянутых изменений, касающихся `build.rs`, у Cargo есть еще несколько новых улучшений. [`cargo check --all`](https://github.com/rust-lang/cargo/pull/3731) и [`cargo run --package`](https://github.com/rust-lang/cargo/pull/3691) - два отсутствовавших до этого момента флага, которые теперь поддерживаются. + +Теперь вы можете [игнорировать проверки отзыва SSL](https://github.com/rust-lang/cargo/pull/3699). Конечно, по умолчанию проверка все еще производится. + +Новое поле в `Cargo.toml`, `required-features`, позволяет [указать конкретные фичи, которые должны быть установлены для цели, которую нужно собрать](https://github.com/rust-lang/cargo/pull/3667). Вот пример: предположим, что мы пишем контейнер, который взаимодействует с базами данных, и хотим, чтобы он поддерживал несколько баз данных. Мы могли бы это сделать в нашем `Cargo.toml`: + +```toml +[features] +# ... +postgres = [] +sqlite = [] +tools = [] +``` + +Фича `tools` позволяет нам включить дополнительные инструменты, а фичи `postgres` и `sqlite` указывают, какие базы данных мы хотим поддерживать. + +Раньше `cargo build` пыталась собрать все цели, которые вам нужны. Но что, если у нас есть файл `src/bin/postgres-tool.rs`, который является нужным только при условии, что фичи `postgres` и `tools` были включены? Раньше нам приходилось писать что-то вроде этого: + +```rust +#[cfg(not(all(feature = "postgres", feature = "tools")))] +fn main() { + println!("This tool requires the `postgres` and `tools` features to be enabled."); +} + +#[cfg(all(feature = "postgres", feature = "tools"))] +fn main() { + // real code +} +``` + +Слишком много шаблонного кода, чтобы обойти поведение `cargo build`. Еще печальнее дело обстояло с `examples/`, которые должны демонстрировать, как использовать вашу библиотеку, но эта махинация имеет отношение только к пакету, а не к попытке использовать этот пример по своему усмотрению. + +С помощью нового ключа `required-features` мы можем добавить следующее: + +```toml +[[bin]] +# ... +required-features = ["postgres", "tools"] +``` + +Теперь `cargo build` будет собирать наш `postgres-tool`, только если у нас включены две эти фичи, и поэтому мы можем написать нормальный `fn main` без всяких нагромождений вроде `cfg`, получающей в пути. + +Подробнее смотрите [примечания к выпуску][notes]. + +### Разработчики версии 1.17.0 + +Много людей собрались вместе, чтобы создать Rust 1.17. Мы не смогли бы сделать это без всех вас. [Спасибо!](Https://thanks.rust-lang.org/rust/1.17.0) From 22333dd0e575414cd0f17b7fca6b0cee45c06f7f Mon Sep 17 00:00:00 2001 From: kgv Date: Fri, 28 Apr 2017 01:30:29 +0300 Subject: [PATCH 2/9] Fix some typos. --- _posts/2017-04-27-Rust-1.17.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-04-27-Rust-1.17.md index 0bf228f8..e61923e7 100644 --- a/_posts/2017-04-27-Rust-1.17.md +++ b/_posts/2017-04-27-Rust-1.17.md @@ -3,7 +3,7 @@ layout: post categories: новости title: "Выпуск Rust 1.17" author: The Rust Core Team -original: https://blog.rust-lang.org/2017/04/17/Rust-1.17.html +original: https://blog.rust-lang.org/2017/04/27/Rust-1.17.html translator: kgv --- @@ -18,10 +18,10 @@ $ rustup update stable Если у вас ещё не установлен Rust, то вы можете [установить `rustup`][install] c соответствующей страницы нашего веб-сайта и ознакомиться с [подробным примечанием -к выпуску 1.16.0][notes] на GitHub. +к выпуску 1.17.0][notes] на GitHub. [install]: https://www.rust-lang.org/ru-RU/install.html -[notes]: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1160-2017-03-16 +[notes]: https://github.com/rust-lang/rust/blob/rust-1.17-relnotes/RELEASES.md#version-1170-2017-04-27 ### Что вошло в стабильную версию 1.17.0 @@ -79,7 +79,7 @@ let p = Point { То есть форма записи `x, y` будет предполагать, что ее значения соответствуют переменным с аналогичными именами, находящимися в данной области видимости. -Другое маленькое, но полезное улучшение касается в основном новичков в Rust, которые пытаются использовать `+`, чтобы соединить две `& str` вместе. Но это не работает, соединить вы можете лишь `String + & str`. Поэтому, было добавлено [новое сообщение об ошибке](https://github.com/rust-lang/rust/pull/39116), чтобы помочь пользователям, которые совершают подобную ошибку: +Другое маленькое, но полезное улучшение касается в основном новичков в Rust, которые пытаются использовать `+`, чтобы соединить две `&str` вместе. Но это не работает, соединить вы можете лишь `String + &str`. Поэтому, было добавлено [новое сообщение об ошибке](https://github.com/rust-lang/rust/pull/39116), чтобы помочь пользователям, которые совершают подобную ошибку: ```rust // код @@ -115,15 +115,15 @@ the left. При использовании сценариев сборки Cargo вы должны указать расположение скрипта в вашем `Cargo.toml`. Однако, подавляющее большинство людей писали `build = "build.rs"`, тем самым используя файл `build.rs`, расположенный в корне проекта. [Теперь это соглашение поддерживается самим Cargo](https://github.com/rust-lang/cargo/pull/3664), и будет использовано по умолчанию, если существует файл `build.rs`. Мы предупреждали об этом изменении в течение нескольких последних выпусков. Вы также можете использовать `build = false` для отказа от этого соглашения. -В этом выпуске помечена как ["на удаление"](https://github.com/rust-lang/rust/pull/39431) старая система сборки на основе `Makefile`. Новая система, анонсированная в Rust 1.15, написана на Rust и в основном использует Cargo для управления сборкой. На данный момент она уже достаточно зрелая, чтобы быть единственной системой сборки. +В этом выпуске помечена как [удаленная](https://github.com/rust-lang/rust/pull/39431) старая система сборки на основе `Makefile`. Новая система, анонсированная в Rust 1.15, написана на Rust и в основном использует Cargo для управления сборкой. На данный момент она уже достаточно зрелая, чтобы быть единственной системой сборки. В рамках этого изменения, пакеты из crates.io теперь можно использовать в системе сборки Rust. Первым был добавлен [mdBook](https://crates.io/crates/mdbook), и [он теперь используется](https://github.com/rust-lang/rust/pull/39633) при сборки нашей разнообразной книжной документации: -* [Книга "Язык программирования Rust"](https://doc.rust-lang.org/stable/book/) ([repo](https://github.com/rust-lang/book)) -* [The reference](https://doc.rust-lang.org/stable/reference/) ([repo](https://github.com/rust-lang-nursery/reference)) -* [Rustonomicon](https://doc.rust-lang.org/stable/nomicon/) ([repo](https://github.com/rust-lang-nursery/nomicon)) +* [Книга "Язык программирования Rust"](https://doc.rust-lang.org/stable/book/) ([репо](https://github.com/rust-lang/book)) +* [Книга "Справка по Rust"](https://doc.rust-lang.org/stable/reference/) ([репо](https://github.com/rust-lang-nursery/reference)) +* [Книга "Растономикон"](https://doc.rust-lang.org/stable/nomicon/) ([репо](https://github.com/rust-lang-nursery/nomicon)) -Обратите внимание на ссылки на соответствующие репозитории; они были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Нестабильная книга](https://doc.rust-lang.org/stable/unstable-book/). Она делает обзор нестабильных фич, содержит ссылки на отслеживание проблем, связанных с ними, и может содержать исходную документацию. Если есть фича, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее отслеживании! +Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные фичи Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она делает обзор нестабильных фич, содержит ссылки на отслеживание проблем, связанных с ними, и может содержать исходную документацию. Если есть фича, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее отслеживании! Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить полосу пропускания, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документов, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. @@ -168,9 +168,6 @@ the left. [`ptr::read_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.read_unaligned.html [`ptr::write_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.write_unaligned.html -In other changes, `Cell` used to require that `T: Copy` for many of its methods, -but [this has been relaxed significantly](https://github.com/rust-lang/rust/pull/39793). - Что касается других изменений, для многих методов `Cell` требовалось ограничение `T: Copy`, но [теперь это требование значительно ослабло](https://github.com/rust-lang/rust/pull/39793). `Box` [теперь реализует](https://github.com/rust-lang/rust/pull/40009) более дюжины новых преобразований с помощью `From`. From bc85fe14154b42b9a30c89f95fb1a66d70940709 Mon Sep 17 00:00:00 2001 From: kgv Date: Fri, 28 Apr 2017 02:31:22 +0300 Subject: [PATCH 3/9] Add missing translations. --- _posts/2017-04-27-Rust-1.17.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-04-27-Rust-1.17.md index e61923e7..4a33bde0 100644 --- a/_posts/2017-04-27-Rust-1.17.md +++ b/_posts/2017-04-27-Rust-1.17.md @@ -77,7 +77,7 @@ let p = Point { }; ``` -То есть форма записи `x, y` будет предполагать, что ее значения соответствуют переменным с аналогичными именами, находящимися в данной области видимости. +То есть форма записи `x, y` будет предполагать, что значения `x` и `y` соответствуют переменным с аналогичными именами, находящимися в данной области видимости. Другое маленькое, но полезное улучшение касается в основном новичков в Rust, которые пытаются использовать `+`, чтобы соединить две `&str` вместе. Но это не работает, соединить вы можете лишь `String + &str`. Поэтому, было добавлено [новое сообщение об ошибке](https://github.com/rust-lang/rust/pull/39116), чтобы помочь пользователям, которые совершают подобную ошибку: @@ -133,16 +133,16 @@ the left. #### Стабилизация библиотек -Был стабилизирован 21 новых API: +Был стабилизирован 21 новый интерфейс: -* [`Arc::into_raw`] и [`Rc::into_raw`] позволят вам взять `Arc` или `Rc` и получить. +* [`Arc::into_raw`] и [`Rc::into_raw`] позволят вам взять `Arc` или `Rc` и получить сырой указатель. * [`Arc::from_raw`] и [`Rc::from_raw`] позволят вам взять сырой указатель и получить `Arc` или `Rc`. -* [`Arc::ptr_eq`] и [`Rc::ptr_eq`] возвращает `true` если оба `Arc` или оба `Rc` указывают на одно и то же значение (не обязательно значения, которые сравниваются как равные). +* [`Arc::ptr_eq`] и [`Rc::ptr_eq`] возвращает `true` если оба `Arc` или оба `Rc` указывают на одно и то же значение (не обязательно значения, которые сравниваются, равны). * [`Ordering::then`] позволит вам сцепить два `Ordering` вместе, и [`Ordering::then_with`] позволит сделать это с помощью функции. -* [`BTreeMap::range`] позволит вам итерировать лишь по части `BTreeMap`, и [`BTreeMap::range_mut`] позволит вам делать это с возможностью изменения. [`collections::Bound`] может дать вам еще больше контроля. -* [`process::abort`] будет полностью завершать процесс аномальным образом. +* [`BTreeMap::range`] позволит вам итерировать лишь по части `BTreeMap`, и [`BTreeMap::range_mut`] позволит вам сделать это с возможностью изменения. [`collections::Bound`] может дать вам еще больше контроля. +* [`process::abort`] будет полностью завершать процесс анормальным образом. * [`ptr::read_unaligned`] и [`ptr::write_unaligned`] аналогичны `ptr::read` и `ptr::write`, но без требований к выравниванию. -* [`Result::expect_err`] mirrors `Result::expect`, but with the `Err` case rather than the `Ok` case. +* [`Result::expect_err`] зеркально подобен `Result::expect`, то есть работает с вариантом `Err`, а не с вариантом `Ok`. * [`Cell::swap`] аналогичен `std::mem::swap`, но позволяет вам делать это с `&Cell` вместо `&mut T`. * [`Cell::replace`] аналогичен `std::mem::replace`, но позволяет вам делать это с `&Cell` вместо `&mut T`. * [`Cell::into_inner`] позволит вам взять `Cell`, и извлечь его значение. @@ -186,7 +186,7 @@ SocketAddr::from(([127, 0, 0, 1], 3000)) ([127, 0, 0, 1], 3000).into()) ``` -Что позволит удалить ненужный парсинг во время выполнения, и примерно как читаемый, в зависимости от ваших предпочтений. +Что позволит удалить ненужный парсинг во время выполнения. Оба варианта примерно одинаково удобно читаются, все зависит от ваших предпочтений. Обратная трассировка [теперь имеет более приятное форматирование](https://github.com/rust-lang/rust/pull/38165), выводя некоторые вещи по умолчанию. Например, полная обратная трассировка: @@ -276,11 +276,11 @@ fn main() { #[cfg(all(feature = "postgres", feature = "tools"))] fn main() { - // real code + // код } ``` -Слишком много шаблонного кода, чтобы обойти поведение `cargo build`. Еще печальнее дело обстояло с `examples/`, которые должны демонстрировать, как использовать вашу библиотеку, но эта махинация имеет отношение только к пакету, а не к попытке использовать этот пример по своему усмотрению. +Слишком много шаблонного кода для работы с `cargo build`. Еще печальнее дело обстояло с `examples/`, которые должны демонстрировать, как использовать вашу библиотеку. Но такие махинации возможны только при работе внутри самого пакета, поэтому вы потерпите неудачу, если попытаетесь использовать пример вне этого пакета. С помощью нового ключа `required-features` мы можем добавить следующее: @@ -290,10 +290,10 @@ fn main() { required-features = ["postgres", "tools"] ``` -Теперь `cargo build` будет собирать наш `postgres-tool`, только если у нас включены две эти фичи, и поэтому мы можем написать нормальный `fn main` без всяких нагромождений вроде `cfg`, получающей в пути. +Теперь `cargo build` будет собирать наш `postgres-tool`, только если у нас включены две эти фичи, и поэтому мы можем написать нормальный `fn main` без всяких нагромождений вроде `cfg`. Подробнее смотрите [примечания к выпуску][notes]. ### Разработчики версии 1.17.0 -Много людей собрались вместе, чтобы создать Rust 1.17. Мы не смогли бы сделать это без всех вас. [Спасибо!](Https://thanks.rust-lang.org/rust/1.17.0) +Много людей внесли свой вклад в создание Rust 1.17. Мы не смогли бы сделать это без всех вас. [Спасибо!](Https://thanks.rust-lang.org/rust/1.17.0) From 6d528115a6ee997db2f5a2c46bcf6d191043c67a Mon Sep 17 00:00:00 2001 From: kgv Date: Fri, 28 Apr 2017 02:48:25 +0300 Subject: [PATCH 4/9] Fix typos. --- _posts/2017-04-27-Rust-1.17.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-04-27-Rust-1.17.md index 4a33bde0..0e6ead54 100644 --- a/_posts/2017-04-27-Rust-1.17.md +++ b/_posts/2017-04-27-Rust-1.17.md @@ -119,11 +119,11 @@ the left. В рамках этого изменения, пакеты из crates.io теперь можно использовать в системе сборки Rust. Первым был добавлен [mdBook](https://crates.io/crates/mdbook), и [он теперь используется](https://github.com/rust-lang/rust/pull/39633) при сборки нашей разнообразной книжной документации: -* [Книга "Язык программирования Rust"](https://doc.rust-lang.org/stable/book/) ([репо](https://github.com/rust-lang/book)) -* [Книга "Справка по Rust"](https://doc.rust-lang.org/stable/reference/) ([репо](https://github.com/rust-lang-nursery/reference)) -* [Книга "Растономикон"](https://doc.rust-lang.org/stable/nomicon/) ([репо](https://github.com/rust-lang-nursery/nomicon)) +* [Книга "Язык программирования Rust"](https://doc.rust-lang.org/stable/book/) ([репозиторий](https://github.com/rust-lang/book)) +* [Книга "Справка по Rust"](https://doc.rust-lang.org/stable/reference/) ([репозиторий](https://github.com/rust-lang-nursery/reference)) +* [Книга "Растономикон"](https://doc.rust-lang.org/stable/nomicon/) ([репозиторий](https://github.com/rust-lang-nursery/nomicon)) -Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные фичи Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она делает обзор нестабильных фич, содержит ссылки на отслеживание проблем, связанных с ними, и может содержать исходную документацию. Если есть фича, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее отслеживании! +Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные возможности Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она делает обзор нестабильных возможностей, содержит ссылки на отслеживание проблем, связанных с ними, и может содержать исходную документацию. Если есть возможность, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее отслеживании! Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить полосу пропускания, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документов, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. @@ -248,13 +248,13 @@ stack backtrace: Подробнее смотрите [примечания к выпуску][notes]. -#### Фичи Cargo +#### Возможности Cargo Помимо ранее упомянутых изменений, касающихся `build.rs`, у Cargo есть еще несколько новых улучшений. [`cargo check --all`](https://github.com/rust-lang/cargo/pull/3731) и [`cargo run --package`](https://github.com/rust-lang/cargo/pull/3691) - два отсутствовавших до этого момента флага, которые теперь поддерживаются. Теперь вы можете [игнорировать проверки отзыва SSL](https://github.com/rust-lang/cargo/pull/3699). Конечно, по умолчанию проверка все еще производится. -Новое поле в `Cargo.toml`, `required-features`, позволяет [указать конкретные фичи, которые должны быть установлены для цели, которую нужно собрать](https://github.com/rust-lang/cargo/pull/3667). Вот пример: предположим, что мы пишем контейнер, который взаимодействует с базами данных, и хотим, чтобы он поддерживал несколько баз данных. Мы могли бы это сделать в нашем `Cargo.toml`: +Новое поле в `Cargo.toml`, `required-features`, позволяет [указать конкретные возможности, которые должны быть установлены для цели, которую нужно собрать](https://github.com/rust-lang/cargo/pull/3667). Вот пример: предположим, что мы пишем контейнер, который взаимодействует с базами данных, и хотим, чтобы он поддерживал несколько баз данных. Мы могли бы это сделать в нашем `Cargo.toml`: ```toml [features] @@ -264,9 +264,9 @@ sqlite = [] tools = [] ``` -Фича `tools` позволяет нам включить дополнительные инструменты, а фичи `postgres` и `sqlite` указывают, какие базы данных мы хотим поддерживать. +Возможность `tools` позволяет нам включить дополнительные инструменты, а возможности `postgres` и `sqlite` указывают, какие базы данных мы хотим поддерживать. -Раньше `cargo build` пыталась собрать все цели, которые вам нужны. Но что, если у нас есть файл `src/bin/postgres-tool.rs`, который является нужным только при условии, что фичи `postgres` и `tools` были включены? Раньше нам приходилось писать что-то вроде этого: +Раньше `cargo build` пыталась собрать все цели, которые вам нужны. Но что, если у нас есть файл `src/bin/postgres-tool.rs`, который является нужным только при условии, что возможности `postgres` и `tools` были включены? Раньше нам приходилось писать что-то вроде этого: ```rust #[cfg(not(all(feature = "postgres", feature = "tools")))] @@ -290,7 +290,7 @@ fn main() { required-features = ["postgres", "tools"] ``` -Теперь `cargo build` будет собирать наш `postgres-tool`, только если у нас включены две эти фичи, и поэтому мы можем написать нормальный `fn main` без всяких нагромождений вроде `cfg`. +Теперь `cargo build` будет собирать наш `postgres-tool`, только если у нас включены две эти возможности, и поэтому мы можем написать нормальный `fn main` без всяких нагромождений вроде `cfg`. Подробнее смотрите [примечания к выпуску][notes]. From 3947718d713a1802a84d862b957981c23445cb7d Mon Sep 17 00:00:00 2001 From: kgv Date: Fri, 28 Apr 2017 17:22:30 +0300 Subject: [PATCH 5/9] Fix typos from reviews. --- _posts/2017-04-27-Rust-1.17.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-04-27-Rust-1.17.md index 0e6ead54..aa909a72 100644 --- a/_posts/2017-04-27-Rust-1.17.md +++ b/_posts/2017-04-27-Rust-1.17.md @@ -26,7 +26,7 @@ $ rustup update stable ### Что вошло в стабильную версию 1.17.0 Выпуск Rust 1.17.0 в основном вносит небольшие улучшения, преимущественно касающиеся удобства использования. -Например, [время жизни `'static` теперь автоматически подразумевается для констант или статических переменных](https://github.com/rust-lang/rust/pull/39265). При создании константы или статической переменной +Например, [время жизни `'static` теперь автоматически подразумевается для констант или статических переменных](https://github.com/rust-lang/rust/pull/39265). При создании константы или статической переменной: @@ -42,7 +42,7 @@ const NAME: &str = "Ferris"; static NAME: &str = "Ferris"; ``` -В некоторых ситуациях это позволит избавиться сразу от нескольких таких лишних модификаторов: +В некоторых ситуациях это позволит избавиться от лишних повторений: ```rust // было @@ -115,7 +115,7 @@ the left. При использовании сценариев сборки Cargo вы должны указать расположение скрипта в вашем `Cargo.toml`. Однако, подавляющее большинство людей писали `build = "build.rs"`, тем самым используя файл `build.rs`, расположенный в корне проекта. [Теперь это соглашение поддерживается самим Cargo](https://github.com/rust-lang/cargo/pull/3664), и будет использовано по умолчанию, если существует файл `build.rs`. Мы предупреждали об этом изменении в течение нескольких последних выпусков. Вы также можете использовать `build = false` для отказа от этого соглашения. -В этом выпуске помечена как [удаленная](https://github.com/rust-lang/rust/pull/39431) старая система сборки на основе `Makefile`. Новая система, анонсированная в Rust 1.15, написана на Rust и в основном использует Cargo для управления сборкой. На данный момент она уже достаточно зрелая, чтобы быть единственной системой сборки. +В этом выпуске [удалена](https://github.com/rust-lang/rust/pull/39431) старая система сборки на основе `Makefile`. Новая система, анонсированная в Rust 1.15, написана на Rust и в основном использует Cargo для управления сборкой. На данный момент она уже достаточно зрелая, чтобы быть единственной системой сборки. В рамках этого изменения, пакеты из crates.io теперь можно использовать в системе сборки Rust. Первым был добавлен [mdBook](https://crates.io/crates/mdbook), и [он теперь используется](https://github.com/rust-lang/rust/pull/39633) при сборки нашей разнообразной книжной документации: @@ -123,7 +123,7 @@ the left. * [Книга "Справка по Rust"](https://doc.rust-lang.org/stable/reference/) ([репозиторий](https://github.com/rust-lang-nursery/reference)) * [Книга "Растономикон"](https://doc.rust-lang.org/stable/nomicon/) ([репозиторий](https://github.com/rust-lang-nursery/nomicon)) -Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные возможности Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она делает обзор нестабильных возможностей, содержит ссылки на отслеживание проблем, связанных с ними, и может содержать исходную документацию. Если есть возможность, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее отслеживании! +Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные возможности Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она описывает нестабильные возможности, содержит ссылки на задачи, связанные с их стабилизацией, и может содержать исходную документацию. Если есть возможность, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в примите участие ее обсуждении! Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить полосу пропускания, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документов, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. @@ -135,8 +135,8 @@ the left. Был стабилизирован 21 новый интерфейс: -* [`Arc::into_raw`] и [`Rc::into_raw`] позволят вам взять `Arc` или `Rc` и получить сырой указатель. -* [`Arc::from_raw`] и [`Rc::from_raw`] позволят вам взять сырой указатель и получить `Arc` или `Rc`. +* [`Arc::into_raw`] и [`Rc::into_raw`] позволят вам забрать `Arc` или `Rc` и получить сырой указатель. +* [`Arc::from_raw`] и [`Rc::from_raw`] позволят вам забрать сырой указатель и получить `Arc` или `Rc`. * [`Arc::ptr_eq`] и [`Rc::ptr_eq`] возвращает `true` если оба `Arc` или оба `Rc` указывают на одно и то же значение (не обязательно значения, которые сравниваются, равны). * [`Ordering::then`] позволит вам сцепить два `Ordering` вместе, и [`Ordering::then_with`] позволит сделать это с помощью функции. * [`BTreeMap::range`] позволит вам итерировать лишь по части `BTreeMap`, и [`BTreeMap::range_mut`] позволит вам сделать это с возможностью изменения. [`collections::Bound`] может дать вам еще больше контроля. @@ -168,7 +168,7 @@ the left. [`ptr::read_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.read_unaligned.html [`ptr::write_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.write_unaligned.html -Что касается других изменений, для многих методов `Cell` требовалось ограничение `T: Copy`, но [теперь это требование значительно ослабло](https://github.com/rust-lang/rust/pull/39793). +Что касается других изменений, для многих методов `Cell` требовалось ограничение `T: Copy`, но [теперь это требование значительно ослаблено](https://github.com/rust-lang/rust/pull/39793). `Box` [теперь реализует](https://github.com/rust-lang/rust/pull/40009) более дюжины новых преобразований с помощью `From`. @@ -188,7 +188,7 @@ SocketAddr::from(([127, 0, 0, 1], 3000)) Что позволит удалить ненужный парсинг во время выполнения. Оба варианта примерно одинаково удобно читаются, все зависит от ваших предпочтений. -Обратная трассировка [теперь имеет более приятное форматирование](https://github.com/rust-lang/rust/pull/38165), выводя некоторые вещи по умолчанию. Например, полная обратная трассировка: +Обратная трассировка [теперь имеет более приятное форматирование](https://github.com/rust-lang/rust/pull/38165), опуская некоторые незначительные делали по умолчанию. Например, полная обратная трассировка: ```text thread 'main' panicked at 'explicit panic', foo.rs:2 @@ -215,7 +215,7 @@ stack backtrace: 12: 0x0 - ``` -взамен этого +теперь имеет вид ```text thread 'main' panicked at 'explicit panic', foo.rs:2 @@ -244,7 +244,7 @@ stack backtrace: 11: _start ``` -по умолчанию. Вы можете установить переменную окружения `RUST_BACKTRACE = full`, чтобы получить полную обратную трассировку. В будущем мы планируем сделать более аккуратно; См. [эту ошибку](https://github.com/rust-lang/rust/pull/40264). +по умолчанию. Вы можете установить переменную окружения `RUST_BACKTRACE = full`, чтобы получить полную обратную трассировку. В будущем мы планируем убрать еще больше лишней информации; См. [эту ошибку](https://github.com/rust-lang/rust/pull/40264). Подробнее смотрите [примечания к выпуску][notes]. From 83ed83c5d12bdacca8814216410e94e0903e68ef Mon Sep 17 00:00:00 2001 From: kgv Date: Sun, 30 Apr 2017 11:37:12 +0300 Subject: [PATCH 6/9] Fix more typos from reviews. --- _posts/2017-04-27-Rust-1.17.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-04-27-Rust-1.17.md index aa909a72..882fc83f 100644 --- a/_posts/2017-04-27-Rust-1.17.md +++ b/_posts/2017-04-27-Rust-1.17.md @@ -123,9 +123,9 @@ the left. * [Книга "Справка по Rust"](https://doc.rust-lang.org/stable/reference/) ([репозиторий](https://github.com/rust-lang-nursery/reference)) * [Книга "Растономикон"](https://doc.rust-lang.org/stable/nomicon/) ([репозиторий](https://github.com/rust-lang-nursery/nomicon)) -Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные возможности Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она описывает нестабильные возможности, содержит ссылки на задачи, связанные с их стабилизацией, и может содержать исходную документацию. Если есть возможность, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в примите участие ее обсуждении! +Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные возможности Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она описывает нестабильные возможности, содержит ссылки на задачи, связанные с их стабилизацией, и может содержать исходную документацию. Если есть возможность, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее обсуждении! -Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить полосу пропускания, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документов, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. +Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить канал, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документов, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. Наконец, хотя этот выпуск и полон улучшений, но есть один маленький шажок назад, о котором мы хотим сообщить вам с сожалением. В Windows была выпущена Visual Studio 2017, и Microsoft изменила структуру установки программного обеспечения. [Rust не может автоматически определить её местоположение](https://github.com/rust-lang/rust/issues/38584), и хотя мы работали над необходимыми изменениями, но не успели к этому выпуску. До тех пор, Visual Studio 2015 все еще работает нормально, или же вы можете запустить `vcvars.bat` в командной строке. Мы надеемся, что эта работа будет выполнена в кратчайшие сроки. From ca71554f2b84e865f6dddcb87a5acc611bcf5417 Mon Sep 17 00:00:00 2001 From: kgv Date: Sun, 30 Apr 2017 12:04:10 +0300 Subject: [PATCH 7/9] Fix more typos from reviews. --- _posts/2017-04-27-Rust-1.17.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-04-27-Rust-1.17.md index 882fc83f..adb92011 100644 --- a/_posts/2017-04-27-Rust-1.17.md +++ b/_posts/2017-04-27-Rust-1.17.md @@ -52,7 +52,7 @@ const NAMES: &'static [&'static str; 2] = &["Ferris", "Bors"]; const NAMES: &[&str; 2] = &["Ferris", "Bors"]; ``` -Другим подобным косметическим улучшением является "короткая инициализация полей". Подобно ECMAScript 6, который называет это "Сокращение Значения Свойства Объекта Литерала" ("Object Literal Property Value Shorthand"), дублирование может быть удалено при объявлении структур, к примеру: +Другим подобным косметическим улучшением является "короткая инициализация полей". Подобно ECMAScript 6, который называет это "Сокращение Значения Свойства Объектного Литерала" ("Object Literal Property Value Shorthand"), дублирование может быть удалено при объявлении структур, к примеру: ```rust // определение @@ -125,7 +125,7 @@ the left. Обратите внимание на ссылки на соответствующие репозитории; документы были перемещены из основного дерева. Кроме того, мы добавили четвертую книгу, которая все еще расположена в основном дереве: [Книга "Нестабильные возможности Rust"](https://doc.rust-lang.org/stable/unstable-book/). Она описывает нестабильные возможности, содержит ссылки на задачи, связанные с их стабилизацией, и может содержать исходную документацию. Если есть возможность, которую вы хотите увидеть стабилизированной, то пожалуйста, примите участие в ее обсуждении! -Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить канал, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документов, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. +Несколько выпусков назад `rustup` перестал по умолчанию устанавливать документацию. Мы внесли это изменение, чтобы немного разгрузить канал, а также потому, что не все пользователи в действительности хотят хранить локальную копию документации. Однако это создало ловушку: некоторые пользователи не были в курсе, что произошло изменение, и заметили бы это, только если бы у них пропало подключение к Интернету. Кроме того, некоторые пользователи *хотели* иметь локальную копию документации, независимо от их подключения. Таким образом, мы [откатили данное изменение](https://github.com/rust-lang/rust/pull/40526), и документация снова устанавливается по умолчанию. Наконец, хотя этот выпуск и полон улучшений, но есть один маленький шажок назад, о котором мы хотим сообщить вам с сожалением. В Windows была выпущена Visual Studio 2017, и Microsoft изменила структуру установки программного обеспечения. [Rust не может автоматически определить её местоположение](https://github.com/rust-lang/rust/issues/38584), и хотя мы работали над необходимыми изменениями, но не успели к этому выпуску. До тех пор, Visual Studio 2015 все еще работает нормально, или же вы можете запустить `vcvars.bat` в командной строке. Мы надеемся, что эта работа будет выполнена в кратчайшие сроки. From 1498d4cf93482afa32a1fa68169c934eb0c178b3 Mon Sep 17 00:00:00 2001 From: kgv Date: Tue, 2 May 2017 07:49:10 +0300 Subject: [PATCH 8/9] Change date. --- _posts/{2017-04-27-Rust-1.17.md => 2017-05-02-rust-1.17.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename _posts/{2017-04-27-Rust-1.17.md => 2017-05-02-rust-1.17.md} (99%) diff --git a/_posts/2017-04-27-Rust-1.17.md b/_posts/2017-05-02-rust-1.17.md similarity index 99% rename from _posts/2017-04-27-Rust-1.17.md rename to _posts/2017-05-02-rust-1.17.md index adb92011..6f9e6c9d 100644 --- a/_posts/2017-04-27-Rust-1.17.md +++ b/_posts/2017-05-02-rust-1.17.md @@ -3,7 +3,7 @@ layout: post categories: новости title: "Выпуск Rust 1.17" author: The Rust Core Team -original: https://blog.rust-lang.org/2017/04/27/Rust-1.17.html +original: https://blog.rust-lang.org/2017/05/02/rust-1.17.html translator: kgv --- From 5d4af5dd986debdee343d15ce805b447e6b9d797 Mon Sep 17 00:00:00 2001 From: kgv Date: Tue, 2 May 2017 14:55:23 +0300 Subject: [PATCH 9/9] Fix link to original. --- _posts/2017-05-02-rust-1.17.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2017-05-02-rust-1.17.md b/_posts/2017-05-02-rust-1.17.md index 6f9e6c9d..02a8b56f 100644 --- a/_posts/2017-05-02-rust-1.17.md +++ b/_posts/2017-05-02-rust-1.17.md @@ -3,7 +3,7 @@ layout: post categories: новости title: "Выпуск Rust 1.17" author: The Rust Core Team -original: https://blog.rust-lang.org/2017/05/02/rust-1.17.html +original: https://blog.rust-lang.org/2017/04/27/Rust-1.17.html translator: kgv --- @@ -188,7 +188,7 @@ SocketAddr::from(([127, 0, 0, 1], 3000)) Что позволит удалить ненужный парсинг во время выполнения. Оба варианта примерно одинаково удобно читаются, все зависит от ваших предпочтений. -Обратная трассировка [теперь имеет более приятное форматирование](https://github.com/rust-lang/rust/pull/38165), опуская некоторые незначительные делали по умолчанию. Например, полная обратная трассировка: +Обратная трассировка [теперь имеет более приятное форматирование](https://github.com/rust-lang/rust/pull/38165), опуская некоторые незначительные детали по умолчанию. Например, полная обратная трассировка: ```text thread 'main' panicked at 'explicit panic', foo.rs:2