Випуск Rust 1.12.1

Ми раді представити нову версію Rust 1.12.1. Rust — це мову програмування, націлений на безпечну роботу з пам'яттю, швидкість і паралельне виконання коду.
Як завжди, ви можете встановити Rust 1.12.1 з відповідної сторінки офіційного сайту, або за допомогою rustup виконавши команду
rustup update stable
.
Що увійшло в стабільну версію 1.12.1
Секундочку… один-точка-дванадцять-крапка… один?
Кілька тижнів тому, анонсі версії 1.12, ми сказали:
Випуск 1.12 — можливо, найзначніший з моменту випуску 1.0.
І це правда. Одним з важливих змін був масштабний рефакторинг компілятора. Новий бекенд MIR змінив його архітектуру і деякі деталі реалізації. В цілому процес модернізації пройшов так:
  • Початкова підтримка MIR з'явилася в нічних збірках Rust 1.6.
  • Коли робота була завершена, був доданий прапор компіляції
    --enable-orbit
    ,
    що б розробники компілятора могли випробувати новий бекенд.
  • Починаючи з жовтня, ми завжди виконували збірку MIR, навіть якщо
    він не використовувався.
  • Був доданий параметр командного стоки
    Z orbit
    , що б користувачі нічних
    збірок могли випробувати і використовувати MIR замість етапи компіляції 'trans'.
  • Після тривалого тестування протягом декількох місяців, для версії
    Rust 1.12, ми зробили MIR бекендом за замовчуванням.
  • Rust 1.13, буде доступний тільки MIR.
Такі глобальні зміни даються нелегко і дуже важливі. Тому важливо зробити все правильно і ретельно. Ось чому цей процес триває так довго. Ми регулярно тестуємо компілятор з кожним з пакетів на crates.io, ми просимо користувачів перевірити
Z orbit
на їх основи, і після шести тижнів бета-тестування, так і не виникло значних проблем. Тому ми прийняли рішення використовувати MIR за замовчуванням у версії 1.12.
Але великі зміни це завжди ризик, хоч ми намагалися звести його до мінімуму. І так, після виходу 1.12, були знайдені регресії, які ми не змогли виявити при тестуванні. Не всі з них пов'язані з MIR, просто, при таких масштабних змінах, легко виявляються помилки в інших місцях.
Навіщо робити проміжний реліз?
Враховуючи, що у нас шеститижневий цикл випуску, і ми на півдорозі до Rust 1.13, чому ми вирішили випустити виправлення до версії 1.12, а не запропонувати користувачам просто почекати наступного релізу? Раніше ми говорили щось подібне: "проміжні релізи будуть відбуватися тільки в крайніх випадках, таких як уразливість в стандартній бібліотеці".
Ми піклуємося не тільки про стабільність, але і про зручність використання мови. Ми могли б сказати всім вам почекати, але ми хочемо, щоб ви знали наскільки серйозно ми налаштовані. Випуск проміжного релізу, в даній ситуації, це ще й спосіб показати наше прагнення якомога швидше виправляти помилки.
Крім того, раз вже мова не йде про проблеми безпеки, це хороший привід попрактикуватися у випуску проміжних релізів. Ми ніколи не робили цього раніше, і хоча процес випуску нової версії частково автоматизований, але не повністю. Наявність проміжного релізу дозволить виявити помилки серед інших інструментальних засобів, наприклад rustup. А ще переконатися, що все пройде за планом, якщо нас коли-небудь знадобиться, випустити аварійний реліз через проблеми безпеки чи з якоїсь іншої причини.
Це перший проміжний реліз Rust після виходу Rust 0.3.1, події у 2012, він знаменує 72 тижні з моменту випуску Rust 1.0, коли ми взяли наш шеститижневий такт випуску релізів зі строгими гарантіями стабільності. І хоча нам дуже шкода, що в 1.12 є регресії, ми пишаємося стабільністю Rust і будемо докладати всіх зусиль, що б зробити його платформою на яку можна покластися.
Ми хочемо, щоб Rust був найнадійнішою в світі платформою для розробки програмного забезпечення.
Примітка про тестування з використанням бета-версій
Є дещо, що ви, як користувач Rust, можете зробити, щоб допомогти нам виправити помилки якомога раніше: перевіряйте свій код з використанням бета-версій! Кожен бета-реліз, це реліз-кандидат наступній стабільної версії, так давайте використовувати засоби безперервної інтеграції. Так ви зможете повідомити нам про проблеми ще до того, як вони потраплять у стабільний реліз! Це зовсім не складно. Наприклад, якщо ви використовуєте Travis, додайте це в свій
.travis.yml
:
language: rust
rust:
- stable
- beta

І ваші тести будуть виконуватися для двох версій компілятора. Крім того, якщо ви не хочете, що б помилка в бета-версії призводила до помилки усієї збірки, додайте це:
matrix:
allow_failures:
- rust: beta

Збірка з бета-версією може стати червоною, але ваша стабільна збірка залишиться зеленою.
Більшість інших систем безперервної інтеграції, таких як AppVeyor, повинні мати подібну можливість. Зверніться до документації, що використовується вами системи.
Подробиці
У версії 1.12.1 було виправлено дев'ять помилок, природно, всі ці виправлення були перенесені в бета-версію 1.13.
Крім того, є ще чотири регресії. Ми вирішили не включати їх в 1.12.1 з різних причин, але постараємося усунути їх як можна швидше.
Повний перелік змін між версіями 1.12.0 і 1.12.1 тут.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.