The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск языка программирования Rust 0.7, развиваемого проектом Mozilla

04.07.2013 09:35

Разработчики из проекта Mozilla представили релиз Rust 0.7, экспериментального языка программирования со строгой типизацией, сфокусированного на безопасной работе с памятью и обеспечению высокого параллелизма выполнения заданий (возможность порождать тысячи и даже миллионы подпроцессов). Исходные тексты проекта распространяются под лицензией MIT. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).

По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики, а также ориентацией на блочную организацию структуры кода, которая позволяет реализовать задачи в виде легковесных сопрограмм. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.

С момента прошлого выпуска внесено около 2000 изменений. В отличие от прошлых выпусков, которые главным образом были нацелены на усовершенствование синтаксиса и элементов языка, при подготовке версии 0.7 основная работа была сфокусирована на расширении стандартной библиотеки функций. Из изменений также отмечается новая реализация системы проверки заимствованных указателей и новый модуль итератор (std::iterator), заменивший собой ruby-подобные внутренние итераторы, вместо которых теперь используются тип Iterator, напоминающий внешние итераторы в стиле Java.

Базовые возможности языка:

  • Ориентация на безопасность:
    • Аккуратная работа с памятью - никаких нулевых и потерянных указателей. Автоматическое управление памятью;
    • Контроль изменчивости. Объекты неизменяемы (Immutable) по умолчанию;
    • Безопасность динамического выполнения: обработка сбоев, исключения, ведение лога, RAII / dtors;
    • Typestate: возможность определения сложных инвариантов, контролирующих структуры данных.
  • Ориентация на параллельность и эффективность кода:
    • Явный контроль памяти, контролирование схемы распределения памяти;
    • Крайне легкие задачи, формируемые в виде сопрограмм. Лёгкость в порождении тысяч и миллионов подпроцессов;
    • Итераторы стека (фактически лямбда-блоки без распределения кучи);
    • Статическая, нативная компиляция с созданием исполняемых файлов ELF, PE, Mach-o;
    • Прямой и простой интерфейс для кода на языке Си;
  • Ориентация на практическое применение:
    • Мультипарадигмальный, функциональный, императивно-процедурный, объектно-ориентированный, поддерживающий параллельную actor-модель;
    • Функции первого класса с биндингами;
    • Нет номинальных типов или иерархии типов;
    • Мультиплатформенный, поддерживается Windows, Linux, Mac OS X, *BSD;
    • Хранение строк в UTF8, разнообразие низкоуровневых типов;
    • Работает с существующими нативными наборами инструментов: GDB, Valgrind, Shark и т.д.;
    • Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.


  1. Главная ссылка к новости (https://mail.mozilla.org/piper...)
  2. OpenNews: Проект Mozilla выпустил язык программирования Rust 0.4
  3. OpenNews: Третий выпуск языка программирования Rust, развиваемого проектом Mozilla
  4. OpenNews: Второй выпуск языка программирования Rust, развиваемого проектом Mozilla
  5. OpenNews: Проект Mozilla представил релиз компилятора для языка программирования Rust
  6. OpenNews: Mozilla разрабатывает новый язык программирования Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/37354-rust
Ключевые слова: rust, mozilla
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (64) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Тот самый аноним (?), 10:17, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –23 +/
    зачем?
     
     
  • 2.53, Аноним (-), 18:05, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Присоединяюсь к вопросу. В чём был фатальный недостаток других языков?
     
     
  • 3.67, Аноним (-), 04:33, 05/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот опять троллишки прибежали, кушать хотят, ждут кто накормит
     
  • 2.64, Аноним (-), 23:00, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Патаму что
     

  • 1.2, beerseller (ok), 10:24, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А биндинги для тулкитов будут? Или такого в планах нету и они будут изобретать свой с б. и ж.?
     
     
  • 2.13, Аноним (-), 12:56, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Пусть изобретут. Жалко чтоли?
     
     
  • 3.17, Grammar Nazi (?), 13:14, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    что ли, ёпта
     
  • 2.15, Аноним (-), 12:59, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/ktvoelker/GtkRust
    только оно похоже сдохло от ненужности
     
  • 2.45, Kodir (ok), 16:36, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    В что в вашем сокращении прячется под "ж."? :))
     
  • 2.59, Аноним (-), 20:17, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по описанию, он хорошо подойдёт для написания логических движков с последующим прокидыванием API на C; сейчас так иногда поступают с C++, пишут внутри логику и прокидывают ориентированный на задачу API в сишный хедер.

    В таком случае биндинги для тулкитов ни к чему, консольный и графический интерфейсы будут делать на других языках.

     

  • 1.3, анон (?), 10:33, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отличная новость. Думаю через лет 5 будет популярным.
     
  • 1.4, vitalif (?), 10:55, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Не знаю, язык разрывной по-моему.
     
  • 1.5, Аноним (-), 11:10, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    > язык Rust напоминает C++

    А что еще должен напоминать нормальный, вменяемый язык программирования? Не Pascal/Delphi же, в самом деле.

     
     
  • 2.9, FedeX (?), 12:50, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    у тролля какая-то попоболь по поводу Паскаля? это лечится
     
     
  • 3.24, Аноним (-), 14:23, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Изоляцией Паскаля от людей?
     
     
  • 4.48, Пингвино (ok), 17:21, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Скорее изоляцией школьников от общества.
     
  • 2.11, Аноним (-), 12:52, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    делфи не язык программирования.
    Да Паскаль
     
     
  • 3.25, Аноним (-), 14:30, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > делфи не язык программирования.
    > Да Паскаль

    Косани Википедию, умник. "Delphi — императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal".

     
     
  • 4.70, Аноним (-), 08:16, 07/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    он такой же язык программирования как и php
     
  • 2.14, Аноним (-), 12:57, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Delphi не язык, это среда, а язык Object Pascal.
    зы, паскаль отличный язык для обучения программированию и понимания строгой логики
     
     
  • 3.26, Аноним (-), 14:32, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Delphi не язык, это среда, а язык Object Pascal.
    > зы, паскаль отличный язык для обучения программированию и понимания строгой логики

    ага, и привязыванию к маздаю суровыми нитками

     
     
  • 4.30, FedeX (?), 14:57, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А такие диалекты паскаля как Free Pascal, GNU Pascal, TNT Pascal, Oxygene etc.., позволяющие писать на паскале практически под любые платформы?
     
     
  • 5.34, Аноним (-), 15:26, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Это не диалект, а компиляторы
     
     
  • 6.35, FedeX (?), 15:34, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    это диалекты, для которых существуют соответствующие компиляторы.. согласен позволяют писать кроссплатформенно именно компиляторы
     
  • 4.31, Клыкастый (ok), 15:08, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    object pascal. реализован также в virtual pascal (os2,win32)
    и free pascal (bsd,linux & others)
    fpc кроме всех других преимуществ жив и развивается.
    на паскакале (fpc) в частности написана толковая hedgewars.
     
  • 3.56, arisu (ok), 19:08, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Delphi не язык, это среда, а язык Object Pascal.

    нет, начиная с версии 7, емнип, Delphi — это и название языка тоже.

     
  • 2.33, Crazy Alex (??), 15:11, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Врут, там сходство сичто внешнее.
     
  • 2.49, Пингвино (ok), 17:22, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А что еще должен напоминать нормальный, вменяемый язык программирования? Не Pascal/Delphi
    > же, в самом деле.

    Конечно же Lisp.

     

  • 1.6, Аноним (-), 11:45, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Аналог Go?
     
     
  • 2.38, некто (?), 16:14, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Go - для серверной части, а Rust разрабатывается в первую очередь для ресурсоемких десктоп приложений, вроде браузеров и игр. Сейчас эту нишу целиком и полностью занимает C++, а хотелось бы иметь альтернативу. По-моему, Rust - очень интересный проект у него есть всё, что нужно для счастья: строгая типизация, нативная компиляция, параллелизация, поддержка ФП, автоматическое управление памяти.
     
     
  • 3.40, FedeX (?), 16:19, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Go - для серверной части, а Rust разрабатывается в первую очередь для
    > ресурсоемких десктоп приложений, вроде браузеров и игр. Сейчас эту нишу целиком
    > и полностью занимает C++, а хотелось бы иметь альтернативу. По-моему, Rust
    > - очень интересный проект у него есть всё, что нужно для
    > счастья: строгая типизация, нативная компиляция, параллелизация, поддержка ФП, автоматическое
    > управление памяти.

    У Go тоже все это есть. И для ресурсоемких десктоп приложений ничто не мешает его использовать - биндинги для большинства виджетов уже давно есть, писать собственные биндинги легко... пиши что хочеш

     
     
  • 4.44, некто (?), 16:34, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > для ресурсоемких десктоп приложений ничто не мешает его использовать

    http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=go&la
    По производительности Go медленнее Java.

     
     
  • 5.46, FedeX (?), 16:59, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >По производительности Go медленнее Java.

    Слишком громкое заявление - там во многих тестах Java 7 и С/С++ рвет, так что не считается... И с Ржавчиной там тестов нет

     
     
  • 6.51, Пингвино (ok), 17:24, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Слишком громкое заявление - там во многих тестах Java 7 и С/С++
    > рвет, так что не считается... И с Ржавчиной там тестов нет

    Сударь, это происходит только на примитивных тестах. Как только начинаются тяжелые вычисления или активная работа с памятью, то Java оказаывается позади планеты

     
     
  • 7.54, FedeX (ok), 18:20, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Сударь, это происходит только на примитивных тестах. Как только начинаются тяжелые вычисления или активная работа с памятью, то Java оказаывается позади планеты

    Так и я о том же.

     
     
  • 8.66, Dmitry77 (ok), 00:15, 05/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что значит тяжелые вычисления , которые по видимому в простых тестах не воспр... текст свёрнут, показать
     
  • 6.55, некто (?), 18:35, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > там во многих тестах Java 7 и С/С++ рвет, так что не считается

    Где рвет? Сам придумал? C++ проигрывает Java только на одном тесте и разница там незначитальная.

    В тестах же Go vs Java/C++ разница очень заметная. У вас есть тесты говорящие об обратном?

     
  • 5.69, Аноним (-), 05:34, 05/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > По производительности Go медленнее Java.

    Эти тесты почти никто не оптимизировал, в отличие от тестов для java. И да, вот пример, где го близок по производительности к C++: http://blog.golang.org/profiling-go-programs

     
  • 5.71, Аноним (-), 08:20, 07/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> для ресурсоемких десктоп приложений ничто не мешает его использовать
    > http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=go&la
    > По производительности Go медленнее Java.

    перестаньте верить этому бенчмарку,он не то что далек от реальности, он просто насыщен ложью.

     
  • 2.39, FedeX (?), 16:16, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    схожесть есть, но не большая
     
  • 2.61, 123 (??), 20:39, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Go несомненно лучше
     
     
  • 3.68, Аноним (-), 05:23, 05/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению, го не может в генерики.
     

  • 1.7, robux (ok), 12:36, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    К чёрту болтовню, покажите код! (с)

    p.s. Пример кода, точнее. А я вам скажу - хороший это язык, или говно.

     
     
  • 2.20, Аноним (-), 13:31, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    fn main() {
        let nums = [0, 1, 2, 3];
        let noms = ["Tim", "Eston", "Aaron", "Ben"];

        let mut evens = nums.iter().filter(|&x| x % 2 == 0);

        for evens.advance |&num| {
            do spawn {
                let msg = fmt!("%s says hello from a lightweight thread!",
                               noms[num]);
                println(msg);
            }
        }
    }

     
     
  • 3.21, Аноним (-), 13:32, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >По структуре язык Rust напоминает C++

    И еще basic

     
     
  • 4.28, Аноним (-), 14:34, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >>По структуре язык Rust напоминает C++
    > И еще basic

    Это как надо не владеть предметом, чтобы в сабже усмотреть похожесть на Basic.

     
     
  • 5.32, Клыкастый (ok), 15:10, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Это как надо не владеть предметом, чтобы в сабже усмотреть похожесть на Basic.

    Владеющему только молотком все проблемы напоминают гвозди.

     
  • 5.65, Aleks Revo (ok), 23:19, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    нужно просто не знать, что оператор let есть не только в бейсике. Просто больше в голову ничего не приходит, что здесь ещё можно найти бейсикоподобного? ))
     
  • 3.52, robux (ok), 17:31, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > fn main() {
    > nums.iter().filter(|&x| x % 2 == 0);
    > fmt!("%s says hello from a lightweight thread!", noms[num]);
    > do spawn {
    > }   }   }

    Ребята, не хочется вас огорчать... но:
    1) "fn".. пипец, чтоб не как у всех, а почему бы не "f"?
    2) зачем эти пустые скобки?!
    3) зачем точка с запятой в конце каждой строки?!
    4) зачем этот повисший в воздухе "do"?!
    5) зачем эти уродские фигурные скобки?!

    Зачем всё это "великолепие" в высокоуровневом языке?
    Еще бы строчки нумеровали как в бейсике и картина была бы полной! ))

    Короче еще один С++ с блэкджеком и шлюхами...

     
     
  • 4.57, arisu (ok), 19:11, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ок, разрешаю тебе никогда не использовать rust. теперь ты можешь спать спокойно.
     

  • 1.8, Максгом (?), 12:39, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем оно отличается от "D"?
     
     
  • 2.19, Прохожий (??), 13:25, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    - А это лучше, чем крепдешин?
    - Не знаю, не пил... (с) анек
     
  • 2.23, Аноним (-), 13:36, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Идеологией. D - это системной программирование с сильным уклоном в обобщённое и мета-программирование, Rust - это программирование  высоко-нагруженых и многопоточных серверных приложений.
     
     
  • 3.43, некто (?), 16:27, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Rust - это программирование  высоко-нагруженых и многопоточных
    > серверных приложений.

    Вы что-то напутали, Rust создается как замена C++ для разработки движка браузера.

     
  • 2.36, Crazy Alex (??), 15:38, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Общей направленностью на ФП, императивным он скорее прикидывается. Хитрозакрученной системой типов. В D она довольно проста для понимания.

    Еще - рестриктивностью. В D просто "опасные" части языка выделены в отдельное подмножество, но в принципе если очень надо - можно сделать всё, в том числе явно поломать встроенные проверки (и это специально проектировалось так, чтобы это можно было легко изолировать и легко грепать). Rust обхода защит не дает в принципе.

     
     
  • 3.41, Аноним (-), 16:19, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >императивным он скорее прикидывается

    Лолшто? Rust императивнее некуда.

    >Хитрозакрученной системой типов

    Ты о чем вообще? Система типов простая, как топор. Кайнды только есть еще.

    >Rust обхода защит не дает в принципе.

    Про unsafe почитый что ли.
    На, погляди, как он не дает https://github.com/charliesome/rustboot

     
     
  • 4.47, Crazy Alex (??), 17:04, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Да, насчет функциональности я погорячился. Хотя душок сильный - вон, в мануале все возможные примеры - из функциональщины. Опять же - let, дефолтная иммутабельность, отсутсвие нормального (сишного) for...

    Система типов - кроме кайндов есть еще виды боксинга, пачка разных указателей, рекурсивные типы (зачем, когда это обычными указателями делается?), зато нет нормальных классов и модификаторов видимости.

    блоки unsafe - это хорошо, а толку? Поноценный unsafe cast где? Только ассемблер призывать, как в вашем примере?

    А еще, кстати, очень не понравилось то, что они не любят общепринятые обозначения. Textual type вместо string, traits вместо templates и тому подобное.

     

  • 1.10, Аноним (-), 12:51, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    от СИ там только скобочки, все остальное - унылое гавгно
     
     
  • 2.29, Аноним (-), 14:35, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > от СИ там только скобочки, все остальное - унылое гавгно

    +1

     

  • 1.12, qwerty (ok), 12:55, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Rust In Peace
     
  • 1.27, Doris (?), 14:34, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чем оно лучше D? ( http://dlang.ru ) ?
     
     
  • 2.37, Vernat (ok), 16:02, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тем что активно пилится? И тем что его подхватила большая компания?
     
  • 2.42, Аноним (-), 16:22, 04/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Чем оно лучше D? ( http://dlang.ru ) ?

    Отсутствием дэнглин поинтеров, например.

     

  • 1.63, Аноним (-), 22:08, 04/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Матрешка в матрешке, пожиратель озу
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру