Pull to refresh

Анонс Rust 1.0

Reading time 9 min
Views 28K
Original author: The Rust Core Team
Сегодня мы с гордостью представляем релиз Rust версии 1.0, нового языка программирования для создания более надёжных и эффективных систем. Раст объединяет в себе низкоуровневый контроль над производительностью с удобством и гарантиями безопасности языков высокого уровня. Лучше того, он при этом не требует сборщика мусора или среду выполнения, так что библиотеками на Расте можно безболезненно заменять библиотеки на C (англ.). Если вы хотите поэкспериментировать с Растом, лучше всего начать с раздела «Getting Started» книги Rust Book (если вы предпочитаете читать с электронных книг, Паскаль Хертлиф (Pascal Hertleif) поддерживает неофициальные версии этой книги в электронном виде).

Что отличает Раст от других языков, так это его система типов, основанная на улучшенном и кодифицированном своде лучших практик, отработанных поколениями программистов на C и C++. Так что Расту есть что предложить как опытным системных программистам, так и новичкам: опытные разработчики оценят сэкономленное на отладке время, а новичкам придётся по вкусу возможность писать низкоуровневый код, не беспокоясь о мелких ошибках, которые приводят к необъяснимым падениям их программ.

Что значит для Раста релиз 1.0?


Текущая версия Раста — результат множества итераций и экспериментов. Такой процесс разработки прекрасно нам послужил: Раст сейчас намного проще и мощнее, чем мы изначально представляли. Но из-за всех этих экспериментов поддерживать проекты, написанные на Расте, было очень сложно, так как язык и стандартная библиотека постоянно менялись.

Релиз версии 1.0 означает, что этому беспорядку пришёл конец. Этот релиз — официальное начало нашему пути к поддержанию стабильности (англ.). Начиная с этого момента изменения, ломающие совместимость, будут за пределами стабильной версии (за исключением некоторых вещей, вроде багов в компиляторе).

Учитывая сказанное, релиз 1.0 не означает, что язык Раст «завершён». У нас в запасе множество улучшений. На самом деле, ночные сборки уже содержат улучшения в скорости компиляции (а их будет ещё больше) и включают новые API и фичи языка, такие, как std::fs и ассоциированные константы.

Чтобы быть уверенными, что улучшения в компиляторе и языке входят в экосистему как можно более полно и быстро, мы решили использовать train-based модель релизов. Это означает, что мы будем выпускать регулярные релизы каждые шесть недель, как это делают команды Firefox и Chrome. Чтобы начать этот процесс, мы также выпускаем бета-релиз Раста 1.1 — одновременно со стабильным релизом 1.0.

Cargo и crates.io


Создание настоящего проекта — это не только написание кода, это ещё и управление зависимостями. Cargo — пакетный менеджер и система сборки Раста — создан, чтобы облегчить эту задачу. С использованием Cargo скачивание и установка новых библиотек проста настолько же, насколько просто добавить новую строчку в файл манифеста.

Конечно, чтобы использовать зависимость, её нужно сначала найти. Здесь появляется crates.io — центральный репозиторий пакетов Раста. С его помощью очень просто и искать чужие пакеты, и публиковать свои.

С момента анонсирования cargo и crates.io ­— месяцев шесть назад — число пакетов стабильно растёт. Однако сейчас мы в самом начале пути, так что есть ещё много замечательных пакетов, которые нужно написать. Если вам интересно создавать новые библиотеки, которые потрясут мир Раста — сейчас самое время!

Открытые и исходники, и управление


Раст был open-source проектом с самого начала. Последние несколько лет мы постоянно искали способы сделать наше руководство более открытым и управляемым сообществом. С тех пор, как мы ввели процесс RFC, чуть больше года назад, все основные решения по поводу Раста записываются и обсуждаются открыто. Недавно мы приняли новую модель управления, которая состоит в разделении на подкоманды, каждая из которых будет отвечать за RFC в своей определённой области. Если вы хотите помочь определить будущее Раста, мы будем рады любому вашему участию: загружайте библиотеки на crates.io, комментируйте RFC, или пишите сам код Раста.

Мы бы хотели выразить особую благодарность следующим людям, каждый из которых привнёс свой вклад с момента нашего предыдущего релиза (полный список контрибуторов здесь):

  • Aaron Gallagher <_@habnab.it>
  • Aaron Turon <aturon@mozilla.com>
  • Abhishek Chanda <abhishek@cloudscaling.com>
  • Adolfo Ochagavía <aochagavia92@gmail.com>
  • Alex Burka <durka42+github@gmail.com>
  • Alex Crichton <alex@alexcrichton.com>
  • Alex Quach <alex@clinkle.com>
  • Alexander Polakov <plhk@sdf.org>
  • Andrea Canciani <ranma42@gmail.com>
  • Andreas Martens <andreasm@fastmail.fm>
  • Andreas Tolfsen <ato@mozilla.com>
  • Andrei Oprea <andrei.br92@gmail.com>
  • Andrew Paseltiner <apaseltiner@gmail.com>
  • Andrew Seidl <dev@aas.io>
  • Andrew Straw <strawman@astraw.com>
  • Andrzej Janik <vosen@vosen.pl>
  • Aram Visser <aramvisser@gmail.com>
  • Ariel Ben-Yehuda <arielb1@mail.tau.ac.il>
  • Augusto Hack <hack.augusto@gmail.com>
  • Avdi Grimm <avdi@avdi.org>
  • Barosl Lee <vcs@barosl.com>
  • Ben Ashford <ben@bcash.org>
  • Ben Gesoff <ben.gesoff@gmail.com>
  • Björn Steinbrink <bsteinbr@gmail.com>
  • Brad King <brad.king@kitware.com>
  • Brendan Graetz <github@bguiz.com>
  • Brett Cannon <brettcannon@users.noreply.github.com>
  • Brian Anderson <banderson@mozilla.com>
  • Brian Campbell <lambda@continuation.org>
  • Carlos Galarza <carloslfu@gmail.com>
  • Carol (Nichols || Goulding) <carol.nichols@gmail.com>
  • Carol Nichols <carol.nichols@gmail.com>
  • Chris Morgan <me@chrismorgan.info>
  • Chris Wong <lambda.fairy@gmail.com>
  • Christopher Chambers <chris.chambers@peanutcode.com>
  • Clark Gaebel <cg.wowus.cg@gmail.com>
  • Cole Reynolds <cpjreynolds@gmail.com>
  • Colin Walters <walters@verbum.org>
  • Conrad Kleinespel <conradk@conradk.com>
  • Corey Farwell <coreyf@rwell.org>
  • Dan Callahan <dan.callahan@gmail.com>
  • Dave Huseby <dhuseby@mozilla.com>
  • David Reid <dreid@dreid.org>
  • Diggory Hardy <github@dhardy.name>
  • Dominic van Berkel <dominic@baudvine.net>
  • Dominick Allen <dominick.allen1989@gmail.com>
  • Don Petersen <don@donpetersen.net>
  • Dzmitry Malyshau <kvarkus@gmail.com>
  • Earl St Sauver <estsauver@gmail.com>
  • Eduard Burtescu <edy.burt@gmail.com>
  • Erick Tryzelaar <erick.tryzelaar@gmail.com>
  • Felix S. Klock II <pnkfelix@pnkfx.org>
  • Florian Hahn <flo@fhahn.com>
  • Florian Hartwig <florian.j.hartwig@gmail.com>
  • Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
  • FuGangqiang <fu_gangqiang@163.com>
  • Garming Sam <garming_sam@outlook.com>
  • Geoffrey Thomas <geofft@ldpreload.com>
  • Geoffry Song <goffrie@gmail.com>
  • Gleb Kozyrev <gleb@gkoz.com>
  • Graydon Hoare <graydon@mozilla.com>
  • Guillaume Gomez <guillaume1.gomez@gmail.com>
  • Hajime Morrita <omo@dodgson.org>
  • Hech <tryctor@gmail.com>
  • Heejong Ahn <heejongahn@gmail.com>
  • Hika Hibariya <hibariya@gmail.com>
  • Huon Wilson <dbau.pp+github@gmail.com>
  • Igor Strebezhev <xamgore@ya.ru>
  • Isaac Ge <acgtyrant@gmail.com>
  • J Bailey <jj2baile@uwaterloo.ca>
  • Jake Goulding <jake.goulding@gmail.com>
  • James Miller <bladeon@gmail.com>
  • James Perry <james.austin.perry@gmail.com>
  • Jan Andersson <jan.andersson@gmail.com>
  • Jan Bujak <j@exia.io>
  • Jan-Erik Rediger <janerik@fnordig.de>
  • Jannis Redmann <mail@jannisr.de>
  • Jason Yeo <jasonyeo88@gmail.com>
  • Johann <git@johann-hofmann.com>
  • Johann Hofmann <git@johann-hofmann.com>
  • Johannes Oertel <johannes.oertel@uni-due.de>
  • John Gallagher <jgallagher@bignerdranch.com>
  • John Van Enk <vanenkj@gmail.com>
  • Jonathan S <gereeter+code@gmail.com>
  • Jordan Humphreys <mrsweaters@users.noreply.github.com>
  • Joseph Crail <jbcrail@gmail.com>
  • Josh Triplett <josh@joshtriplett.org>
  • Kang Seonghoon <kang.seonghoon@mearie.org>
  • Keegan McAllister <kmcallister@mozilla.com>
  • Kelvin Ly <kelvin.ly1618@gmail.com>
  • Kevin Ballard <kevin@sb.org>
  • Kevin Butler <haqkrs@gmail.com>
  • Kevin Mehall <km@kevinmehall.net>
  • Krzysztof Drewniak <krzysdrewniak@gmail.com>
  • Lee Aronson <lee@libertad.ucsd.edu>
  • Lee Jeffery <leejeffery@gmail.com>
  • Liam Monahan <liam@monahan.io>
  • Liigo Zhuang <com.liigo@gmail.com>
  • Luke Gallagher <luke@hypergeometric.net>
  • Luqman Aden <me@luqman.ca>
  • Manish Goregaokar <manishsmail@gmail.com>
  • Manuel Hoffmann <manuel@polythematik.de>
  • Marin Atanasov Nikolov <dnaeon@gmail.com>
  • Mark Mossberg <mark.mossberg@gmail.com>
  • Marvin Löbel <loebel.marvin@gmail.com>
  • Mathieu Rochette <mathieu@rochette.cc>
  • Mathijs van de Nes <git@mathijs.vd-nes.nl>
  • Matt Brubeck <mbrubeck@limpet.net>
  • Michael Alexander <beefsack@gmail.com>
  • Michael Macias <zaeleus@gmail.com>
  • Michael Park <mcypark@gmail.com>
  • Michael Rosenberg <42micro@gmail.com>
  • Michael Sproul <micsproul@gmail.com>
  • Michael Woerister <michaelwoerister@gmail>
  • Michael Wu <mwu@mozilla.com>
  • Michał Czardybon <mczard@poczta.onet.pl>
  • Mickaël Salaün <mic@digikod.net>
  • Mike Boutin <mike.boutin@gmail.com>
  • Mike Sampson <mike@sambodata.com>
  • Ms2ger <ms2ger@gmail.com>
  • Nelo Onyiah <nelo.onyiah@gmail.com>
  • Nicholas <npmazzuca@gmail.com>
  • Nicholas Mazzuca <npmazzuca@gmail.com>
  • Nick Cameron <ncameron@mozilla.com>
  • Nick Hamann <nick@wabbo.org>
  • Nick Platt <platt.nicholas@gmail.com>
  • Niko Matsakis <niko@alum.mit.edu>
  • Oak <White-Oak@users.noreply.github.com>
  • Oliver Schneider <github6541940@oli-obk.de>
  • P1start <rewi-github@whanau.org>
  • Pascal Hertleif <killercup@gmail.com>
  • Paul Banks <banks@banksdesigns.co.uk>
  • Paul Faria <paul_faria@ultimatesoftware.com>
  • Paul Quint <DrKwint@gmail.com>
  • Pete Hunt <petehunt@users.noreply.github.com>
  • Peter Marheine <peter@taricorp.net>
  • Phil Dawes <phil@phildawes.net>
  • Philip Munksgaard <pmunksgaard@gmail.com>
  • Piotr Czarnecki <pioczarn@gmail.com>
  • Piotr Szotkowski <chastell@chastell.net>
  • Poga Po <poga.bahamut@gmail.com>
  • Przemysław Wesołek <jest@go.art.pl>
  • Ralph Giles <giles@mozilla.com>
  • Raphael Speyer <rspeyer@gmail.com>
  • Remi Rampin <remirampin@gmail.com>
  • Ricardo Martins <ricardo@scarybox.net>
  • Richo Healey <richo@psych0tik.net>
  • Rob Young <rob.young@digital.cabinet-office.gov.uk>
  • Robin Kruppe <robin.kruppe@gmail.com>
  • Robin Stocker <robin@nibor.org>
  • Rory O’Kane <rory@roryokane.com>
  • Ruud van Asseldonk <dev@veniogames.com>
  • Ryan Prichard <ryan.prichard@gmail.com>
  • Scott Olson <scott@scott-olson.org>
  • Sean Bowe <ewillbefull@gmail.com>
  • Sean McArthur <sean.monstar@gmail.com>
  • Sean Patrick Santos <SeanPatrickSantos@gmail.com>
  • Seo Sanghyeon <sanxiyn@gmail.com>
  • Shmuale Mark <shm.mark@gmail.com>
  • Simon Kern <simon.kern@rwth-aachen.de>
  • Simon Sapin <simon@exyr.org>
  • Simonas Kazlauskas <git@kazlauskas.me>
  • Sindre Johansen <sindre@sindrejohansen.no>
  • Skyler <skyler.lipthay@gmail.com>
  • Steve Klabnik <steve@steveklabnik.com>
  • Steven Allen <steven@stebalien.com>
  • Swaroop C H <swaroop@swaroopch.com>
  • Sébastien Marie <semarie@users.noreply.github.com>
  • Tamir Duberstein <tamird@gmail.com>
  • Tero Hänninen <tejohann@kapsi.fi>
  • Theo Belaire <theo.belaire@gmail.com>
  • Theo Belaire <tyr.god.of.war.42@gmail.com>
  • Thiago Carvalho <thiago.carvalho@westwing.de>
  • Thomas Jespersen <laumann.thomas@gmail.com>
  • Tibor Benke <ihrwein@gmail.com>
  • Tim Cuthbertson <tim@gfxmonk.net>
  • Tincan <tincann@users.noreply.github.com>
  • Ting-Yu Lin <aethanyc@gmail.com>
  • Tobias Bucher <tobiasbucher5991@gmail.com>
  • Toni Cárdenas <toni@tcardenas.me>
  • Tshepang Lekhonkhobe <tshepang@gmail.com>
  • Ulrik Sverdrup <root@localhost>
  • Vadim Chugunov <vadimcn@gmail.com>
  • Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
  • Valerii Hiora <valerii.hiora@gmail.com>
  • Wangshan Lu <wisagan@gmail.com>
  • Wei-Ming Yang <rick68@users.noreply.github.com>
  • Will <will@glozer.net>
  • Will Hipschman <whipsch@gmail.com>
  • Wojciech Ogrodowczyk <github@haikuco.de>
  • Xue Fuqiao <xfq.free@gmail.com>
  • Xuefeng Wu <xfwu@thoughtworks.com>
  • York Xiang <bombless@126.com>
  • Young Wu <doomsplayer@gmail.com>
  • bcoopers <coopersmithbrian@gmail.com>
  • critiqjo <john.ch.fr@gmail.com>
  • diwic <diwic@users.noreply.github.com>
  • fenduru <fenduru@users.noreply.github.com>
  • gareins <ozbolt.menegatti@gmail.com>
  • github-monoculture <eocene@gmx.com>
  • inrustwetrust <inrustwetrust@users.noreply.github.com>
  • jooert <jooert@users.noreply.github.com>
  • kgv <mail@kgv.name>
  • klutzy <klutzytheklutzy@gmail.com>
  • kwantam <kwantam@gmail.com>
  • leunggamciu <gamciuleung@gmail.com>
  • mdinger <mdinger.bugzilla@gmail.com>
  • nwin <nwin@users.noreply.github.com>
  • pez <james.austin.perry@gmail.com>
  • robertfoss <dev@robertfoss.se>
  • rundrop1 <rundrop1@zoho.com>
  • sinkuu <sinkuupump@gmail.com>
  • tynopex <tynopex@users.noreply.github.com>
  • Łukasz Niemier <lukasz@niemier.pl>
  • らいどっと <ryogo.yoshimura@gmail.com>
Tags:
Hubs:
+63
Comments 61
Comments Comments 61

Articles