Обновить
140.58

Rust *

Мультипарадигмальный компилируемый язык

Сначала показывать
Порог рейтинга
Уровень сложности

На пути к Rust 1.0

Время на прочтение6 мин
Охват и читатели17K
Эта статья — перевод первого поста в официальном блоге языка программирования Rust, разрабатываемого Mozilla. Первая стабильная версия Rust совсем не за горами (предварительный прогноз — конец этого/начало следующего года), и авторы языка собираются опубликовать несколько вводных статей о том, что же такое особенное Rust предлагает.

В этих статьях разработчики подробнее расскажут о ключевых особенностях языка — концепциях владения и заимствования данных, зачем они вообще нужны и какие задачи позволяют решать. Я постараюсь переводить их по мере выхода и надеюсь, что язык кого-нибудь заинтересует. Замечания к переводу прошу слать в личку.




Rust 1.0 уже в пути! Мы определились со списком фич и плотно заняты их реализацией. Наш план — выпустить бета-версию 1.0 в конце года. Если всё будет в порядке, то релиз 1.0 состоится вскоре после беты. Будущие версии в ветке 1.x будут обратно совместимыми, то есть существующий код будет ими компилироваться без изменений (естественно, за исключением багов в компиляторе).

Естественно, релиз 1.0 не означает только лишь стабилизацию («ваш код продожит компилироваться»); для нас он значит, что язык стал таким, каким мы хотим его видеть. Если ещё точнее, что он минимален. На данный момент язык выстроен вокруг простых базовых концепций, которые мы называем владением (ownership) и заимствованием (borrowing) (подробнее о них далее). Применяя эти концепции, всё остальное мы смогли вынести в библиотеки. Это очень здорово, потому что вы сами сможете написать аналогичные библиотеки. Из-за этого мы уверены, что Rust не только достигнет своих первоначальных целей, но и пойдёт дальше, применяясь в таких задачах, какие мы даже себе не представляли.

Читать дальше →

Mozilla наметила план для выпуска Rust 1.0

Время на прочтение3 мин
Охват и читатели29K
Организация Mozilla вышла на финишную прямую в подготовке языка программирования Rust 1.0. Разработчики говорят, что это торжественное событие состоится примерно в конце года. После бета-тестирования выйдет финальный релиз. С этого момента перспективный язык программирования можно использовать в боевых условиях: код гарантированно будет компилироваться в следующих версиях.

Дело не только в компиляции. Mozilla считает, что дизайн Rust наконец-то приобретает желаемую минималистичную форму. К примеру, раньше было несколько типов указателей, сейчас остались только &T, и &mut T. Упрощение затронуло и другие аспекты, в том числе замыкания, которые вызывали много споров.

Rust сочетает в себе эффективность С и С++ с безопасностью Java.

Весь дизайн построен на концепции «владения и заимствования» (ownership and borrowing). Изначально предполагалось использовать механизм владения для быстрого и безопасного переноса данных между процессами. Но потом пришло понимание, что этот же механизм можно использовать для передачи значительной части функций в библиотеки. В итоге, Rust получился даже более низкоуровневым, чем разработчики предполагали, и без ущерба для безопасности. На минимальной конфигурации Rust можно даже написать ядро операционной системы (примеры: 1, 2, 3)!
Читать дальше →

Rust: как код может быть одновременно быстрым и безопасным. Рассказ Степана Кольцова в Яндексе

Время на прочтение2 мин
Охват и читатели54K
Привет. Меня зовут Степан Кольцов. Недавно я выступал на Java Party в киевском офисе Яндекса с докладом про язык Rust, который несёт в себе очень много для будущего программирования. Некоторые коллеги утверждают, что я всегда говорю про Rust, когда у меня есть такая возможность. Сегодня я хочу поделиться этим рассказом с вами и объяснить, почему мне это кажется важным.



Для начала пара слов о том, что такое Rust. Последние 15 лет между разработчиками на Java и на C++ ведётся спор о том, какой язык программирования хуже — Java или C++. Программы на C++ глючат, падают, и в них утекает память. Программы на Java тормозят и требуют слишком много памяти.

Rust — новый современный язык программирования, разрабатываемый компанией Mozilla — решает проблемы Java и C++: программы, написанные на Rust, одновременно быстрые и безопасные. Rust является таким же низкоуровневым (в смысле close-to-metal) языком программирования, как и C++, однако в язык встроены конструкции, позволяющие на этапе компиляции доказывать, что в программе не случатся ошибки работы с памятью, как то обращение после использования, двойное удаление, использование неинициализированной памяти и т.п. В Rust для этого используется механизм borrowed pointers. Большая часть моего рассказа была посвящена описанию этого механизма.
Читать дальше →

Rust на примерах. Часть 2

Время на прочтение4 мин
Охват и читатели14K
Это вторая часть из цикла статей по переводу книги «Rust by Example». Первую часть можно прочитать здесь.

Продолжим?
Читать дальше →

Rust на примерах. Часть 1

Время на прочтение7 мин
Охват и читатели61K
Этот цикл статей является вольным переводом книги «Rust by Example», которую пишет Хорхе Апарисио на Github.

На момент написания этого топика автор книги создал 49 глав, в первой части будет перевод первых пяти. Убедитесь, что Rust установлен и под рукой имеется документация.

Давайте начинать!
Читать дальше →

[Перевод] Почему Go не так хорош

Время на прочтение16 мин
Охват и читатели57K
Всем привет! Недавно вышел перевод статьи о том, как TJ Holowaychuk прощался с Node.js, решив двигаться в сторону Go. В конце статьи была ссылка на посвящённый сравнению и критике языка Go пост Уилла Ягера, который просили перевести — собственно, с результатами перевода я и предлагаю ознакомиться. Я пытался более-менее сохранить как многословный стиль изложения, присущий автору, так и оригинальную разбивку на предложения и параграфы.
Буду очень рад любым конструктивным замечаниям и предложениям по переводу, опечаткам и/или оформлению, но очень прошу помнить, что точка зрения переводчика может не совпадать с позицией автора переведённой статьи.
Читать перевод

Вышел rust 0.11.0

Время на прочтение3 мин
Охват и читатели13K

Mozilla и сообщество Rust выпустили новый релиз Rust, версии 0.11.0.

Несмотря на то, что язык находится в активной фазе разработки, работа была сфокусирована над улучшением системы типов и библиотек. Главная работа была проведена над имплементацией типов с динамическим размером (DST) и рефакторингом стандартной библиотеки.
В этом релизе также удалили ~ и @ в угоду типам Box и Gc из стандартной библиотеки (компилятор пока знает о этих типах больше чем нужно, но вскоре эти типы станут самыми обычными типами Rust).
Читать дальше →

Сравнение D и C++ и Rust на примерах

Время на прочтение8 мин
Охват и читатели37K
Данный пост основывается на Сравнение Rust и С++ на примерах и дополняет приведенные там примеры кодом на D с описанием различий.

Все примеры были собраны с помощью компилятора DMD v2.065 x86_64.
Читать дальше →

Сравнение Rust и С++ на примерах

Время на прочтение8 мин
Охват и читатели37K

Предисловие


Вот и обещанное сравнение языков. Примеры, конечно, искуственные, так что используйте своё воображение, чтобы оценить масштабы угрозы в реальном мире.

Все C++ программы были собраны при помощи gcc-4.7.2 в режиме c++11, используя online compiler. Программы на Rust были собраны последней версией Rust (nightly, 0.11-pre), используя rust playpen.

Я знаю, что C++14 (и далее) будет залатывать слабые места языка, а также добавлять новые возможности. Размышления на тему того, как обратная совместимость мешает C++ достичь звёзд (и мешает ли), выходят за рамки данной статьи, однако мне будет интересно почитать Ваше экспертное мнение в комментариях. Также приветствуется любая информация о D.

Погрузиться в код...

Зачем нам нужен Rust?

Время на прочтение3 мин
Охват и читатели70K
Rust — системный язык программирования, который исполняется чертовски быстро, предотвращает почти все падения, а также устраняет неопределённости совместного доступа к данным. Он разрабатывается Mozilla как инструмент для создания обозревателя нового поколения — Servo.

Пункты соприкосновения

Данное определение языка кажется сказкой, ибо доступные нам прежде инструменты всегда балансировали между скоростью и надёжностью.
А что же наяву?

Вышел Rust 0.10

Время на прочтение1 мин
Охват и читатели20K
image

Rust — компилируемый мультипарадигмальный язык, позиционируется как альтернатива С/С++ с уклоном в параллельные вычисления, безопасность и удобство работы с памятью.

Что нового в Rust 0.10:
Читать дальше →

Вышел Rust 0.9

Время на прочтение2 мин
Охват и читатели19K

Mozilla выпустила новую версию компилятора Rust 0.9 и соответствующих инструментов.

Rust — это компилируемый и мультипарадигмальный язык для системного программирования, который позиционируется как альтернатива С/С++. Визуально он похож на C, но отличается в деталях синтаксиса и семантики. Идеально подходит для параллельных вычислений.

Разработчики говорят о существенном улучшении рантайма и подсистемы ввода-вывода. Так, в компиляторе появились статические ссылки и поддерживается оптимизация во время линковки (link-time). В языке уменьшено количество разных видов замыканий, чтобы упростить и сделать более логичным синтаксис.
Читать дальше →

Ключевые возможности Rust

Время на прочтение18 мин
Охват и читатели32K
Rust — новый язык программирования, разрабатываемый корпорацией Mozilla. Главная цель разработчиков — создание безопасного практичного языка для параллельных вычислений. Первая версия языка была написана Грэйдоном Хором в 2006 году, а в 2009 году к разработке подключилась Mozilla. С тех пор изменения претерпел и сам компилятор, изначально написанный на OCaml: он был успешно переписан на Rust с использованием LLVM в качестве back-end.

Основным продуктом, разрабатываемым на Rust, является новый веб-движок Servo, разработка которого также ведется Mozilla. В 2013 году к разработке Rust и Servo присоединилась корпорация Samsung Electronics, при активном участии которой код движка Servo был портирован на ARM архитектуру. Поддержка языка столь серьезными игроками IT индустрии не может не радовать и дает надежду на его дальнейшее активное развитие и совершенствование.

Язык Rust просто не может не понравится системным и сетевым разработчикам, тем, кому по работе приходится писать много кода, производительность которого критична, на C и C++, потому что:
  1. Rust ориентирован на разработку безопасных приложений. Сюда входит безопасная работа с памятью: отсутствие null-указателей, контроль за использованием не инициализированных и деинициализированных переменных; невозможность совместного использования разделяемых состояний несколькими задачами; статический анализ времени жизни указателей.
  2. Rust ориентирован на разработку параллельных приложений. В нем реализована поддержка легких (зеленых) потоков, асинхронного обмена сообщениями без копирования пересылаемых данных, возможность выбора размещения объектов на стеке, в локальной куче задачи или куче, разделяемой между задачами.
  3. Rust ориентирован на разработку эффективных по скорости и памяти приложений. Использование LLVM в качестве back-end позволяет производить компиляцию приложения в нативный код, а простой интерфейс взаимодействия с C кодом – легко использовать уже имеющиеся высокопроизводительные библиотеки.
  4. Rust ориентирован на разработку кросс-платформенных приложений. Компилятор официально поддерживается на платформах Windows, Linux и Mac OS X, при этом существуют порты на другие *NIX платформы, такие как FreeBSD. Также поддерживается и несколько архитектур процессоров: i386, x64 и ARM.
  5. Rust позволяет писать в разных стилях: объектно-ориентированном, функциональном, actor-based, императивном.
  6. Rust поддерживает уже существующие отладочные инструменты: GDB, Valgrind, Instruments.

Читать дальше →

Ближайшие события

Обзор языка программирования Rust

Время на прочтение10 мин
Охват и читатели105K
Rust — новый экспериментальный язык программирования, разрабатываемый Mozilla. Язык компилируемый и мультипарадигмальный, позиционируется как альтернатива С/С++, что уже само по себе интересно, так как даже претендентов на конкуренцию не так уж и много. Можно вспомнить D Вальтера Брайта или Go от Google.
В Rust поддерживаются функицональное, параллельное, процедурное и объектно-ориентированное программирование, т.е. почти весь спектр реально используемых в прикладном программировании парадигм.

Я не ставлю целью перевести документацию (к тому же она весьма скудная и постоянно изменяется, т.к. официального релиза языка еще не было), вместо этого хочется осветить наиболее интересные фичи языка. Информация собрана как из официальной документации, так и из крайне немногочисленных упоминаний языка на просторах Интернета.

Читать дальше →

Язык программирования Rust

Время на прочтение1 мин
Охват и читатели9.8K
Разработчики из Mozilla Research опубликовали презентацию, в которой рассказали о прогрессе за последний год в разработке экспериментального языка программирования Rust, преимуществах Rust перед Google Go, о его применении в проектах Mozilla, а также о типичных примерах использования в будущем.

Rust — новый мультипарадигменный, исключительно функциональный, императивно-процедурный, объектно-ориентированный язык программирования, над которым Mozilla Research работает с 2009 года (сам проект ведёт историю с 2006 года). Исходные тексты распространяются через Github под лицензией BSD.

Как и Go, язык программирования Rust объединяет производительность и безопасность компилируемых языков (как С++) со скоростью разработки динамических языков (как Python).
Читать дальше →
12 ...
49