LINUX.ORG.RU

Вышел Rust 1.0

 , ,


12

10

15 мая 2015 года, в соответствии с планом, вышел публичный релиз Rust 1.0 - языка программирования общего назначения, разрабатываемого Mozilla совместно с сообществом. Язык ориентирован на разработку безопасных и эффективных приложений, имеет развитую систему типов, оптимизирующий кодогенератор на основе llvm и предоставляет расширенные гарантии потокобезопасности и безопасного доступа к памяти без использования сборщика мусора. В частности, Mozilla использует Rust для разработки браузерного движка следующего поколения servo.

Выход релиза 1.0 означает стабилизацию языка и стандартной библиотеки, их дальнейшее развитие будет происходить с сохранением обратной совместимости. В то же время, выход релиза не означает остановки развития языка - одновременно с релизом 1.0 разработчики выпустили бета-версию Rust 1.1, и в дальнейшем планируют выпускать новую версию каждые 6 недель. Среди ожидаемых изменений - заметное уменьшение времени компиляции и дальнейшее расширение стандартной библиотеки.

Перед релизом сообществом была проделана большая работа по обновлению пакетов в официальном репозитории crates.io , где подавляющее большинство из 2000 пакетов приведены в соответствие с версией 1.0. Онлайн-компилятор play.rust-lang.org претерпел редизайн и теперь позволяет выбирать между версиями компилятора. Менеджер пакетов и система сборки cargo так же получил ряд улучшений. Большинство популярных редакторов уже имеют полноценную поддержку языка, с подсветкой ошибок и автодополнением на основе racer, дополнительно вчера вышел Visual Rust 0.1 - расширение для поддержки Rust в Visual Studio. Официальная документация (The Book, The Rust Reference, Rust By Example и документация стандартной библиотеки) была приведена в соответствие со стабильным релизом, сегодня же стала доступна для предзаказа книга Programming Rust издательства O'Reilly, выход которой ожидается в ноябре 2015 года.

Некоторые изменения со времени альфа-версии, вышедшей в феврале:

Официальный сайт: http://rust-lang.org/.

Примечания к релизу: https://github.com/rust-lang/rust/blob/master/RELEASES.md.

Ссылка на скачивание: http://www.rust-lang.org/install.html.

Официальная документация: http://doc.rust-lang.org/stable/.

>>> Подробности



Проверено: maxcom ()

Ответ на: комментарий от eao197

Именно.

Ну вот поэтому и был задан вопрос про то, как пользоваться этими вашими смарт-поинтерами. Из unique_ptr то можно вытащись голый, а потом в этом враппере с extern «C» его освободить, а вот с shared_ptr - уже нетривиально. Но есть ещё одна проблема при создании C фасада для C++ - шаблоны.

anonymous ()
Ответ на: комментарий от anonymous

Кстати, о геймдеве. Очень бесполезная индустрия, придуманная во имя золотого тельца ради того, чтобы в конечном счёте заставить прожигать чьё-то время.

С чего ты взял, что можешь судить об этом? Людям интересно придумывать игры, создавать игры и играть в игры. И так было всегда. И будет всегда.

anonymous ()
Ответ на: комментарий от anonymous

С чего ты взял, что можешь судить об этом? Людям интересно придумывать игры, создавать игры и играть в игры. И так было всегда. И будет всегда.

Удивительные существа люди. Если бы я написал, что индустрия игр - очень полезная, придуманная ради добра и саморазвития, чтобы в конечном счёте проводить время с пользой, то мне бы не задавали вопрос «с чего я взял, что могу судить об этом». То есть, судить уже было бы можно, только судить так, как нравится прохожим анончегам :-)

anonymous ()
Ответ на: комментарий от anonymous

Проблема в том, что без C++ можно обойтись везде. Абсолютно везде. :-)

Нет. Иногда нельзя. Иногда ты не можешь позволить себе сборщик мусора, например. Иногда тебе нужно ручное управление памятью или полуавтоматическое(RC). Иногда тебе нужно написать код под архитектуру, где нет даже крестов(си там будет). И почти всегда кодогенерация в си из каких-нибудь лиспов подойти не сможет. Из-за той же рантайм части. Иногда даже код на Java(которая таки быстрая) будет подтормаживать или упираться в память на тех объемах данных, что ты обрабатываешь. Ты скажешь купить железа? Так купили. И не мало. Но не хватает. Дешевле проект реализовать на C или C++. Про игры тоже уже говорилось. Даже на топовом клиентском железе игры подтормаживать будут без нормальных оптимизаций. И тут C++ один из самых лучших вариантов.

С другой стороны, у тебя не возникает надобности в крестах? Так хорошо же. Я в таких случаях использую python, scala, erlang, ocaml, F#. Иногда даже Haskell(но не на работе правда). Ты в таких случаях(а других у тебя, как я понял, нет) используешь лисп(допустим). Не понимаю, что тебя так беспокоит-то?

Разные инструменты для разных задач.

anonymous ()
Ответ на: комментарий от anonymous

Из unique_ptr то можно вытащись голый, а потом в этом враппере с extern «C» его освободить, а вот с shared_ptr - уже нетривиально.

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

Ну так никто не заставляет использовать везде shared_ptr. А даже если есть shared_ptr и больше ничего, то наружу можно отдавать не сам указатель на объект из shared_ptr, а дополнительный proxy:

namespace {
  struct object_ptr_holder {
    shared_ptr< some_cpp_class > object_;
  };
}

typedef void * CTX_HANDLE;

extern "C" CTX_HANDLE create_ctx() {
  shared_ptr< some_cpp_class > ctx = some_factory().create_instance();
  return new object_ptr_holder{ move(ctx) };
}
...
extern "C" void close_ctx(CTX_HANDLE handle) {
  std::unique_ptr<object_ptr_holder> ctx{ 
    reinterpret_cast<object_ptr_holder *>(handle) };
  ...
}

Но есть ещё одна проблема при создании C фасада для C++ - шаблоны.

Конечно, речь не идет о том, что в виде plain-C интерфейса можно представить STL-левский шаблон std::vector. Но, если библиотека решает какие-то конкретные прикладные задачи, то у нее внутри могут запросто использоваться std::vector<some_domain_specific_type>, но снаружи они видны не будут.

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

Иногда ты не можешь позволить себе сборщик мусора, например. Иногда тебе нужно ручное управление памятью или полуавтоматическое(RC).

Это ниша C, который обязан знать любой проф. программист. C++ не имеет к управлению памятью никакого отношения вообще.

Я в таких случаях использую python, scala, erlang, ocaml, F#. Иногда даже Haskell(но не на работе правда)

Правильно делаешь. Респект и уважуха.

anonymous ()
Ответ на: комментарий от eao197

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

Это всё правильно.

Ну так никто не заставляет использовать везде shared_ptr. А даже если есть shared_ptr и больше ничего, то наружу можно отдавать не сам указатель на объект из shared_ptr, а дополнительный proxy:

Это понятно, как всегда, косвенно-ориентированное решение.

Конечно, речь не идет о том, что в виде plain-C интерфейса можно представить STL-левский шаблон std::vector. Но, если библиотека решает какие-то конкретные прикладные задачи, то у нее внутри могут запросто использоваться std::vector<some_domain_specific_type>, но снаружи они видны не будут.

Само собой :-)

anonymous ()
Ответ на: комментарий от anonymous

Прочти D&E. Там даже в начале говориться о философии. Страуструп никогда не стремился кому-либо навязывать какой-либо стиль разработки. Это один из принципиальных его личных пунктиков.

И посмотри, насколько различные люди, команды и проекты используют C++. Иногда у них практически противоположные взгляды на архитектуру, процессы, стандарты кодирования, используемые фичи, набор базовых библиотек и т.д. и т.п. Это было заложено в C++ изначально.

anonymous ()
Ответ на: комментарий от anonymous

Если бы я написал, что индустрия игр - очень полезная, придуманная ради добра и саморазвития, чтобы в конечном счёте проводить время с пользой, то мне бы не задавали вопрос «с чего я взял, что могу судить об этом».

Ну я бы задал вопрос. Потому, что это высказывание столь же глупое. Возможно еще глупее.

anonymous ()
Ответ на: комментарий от anonymous

Это было заложено в C++ изначально.

Вот, кстати, интересно, а Rust-оманы к этому как относятся? Или в Rust, как в Python-е, есть только один правильный способ делать что-либо?

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

Это ниша C, который обязан знать любой проф. программист.

Элитаризм на марше. Знание C перестало быть обязательным, как минимум, с начала 90-х годов. Если вообще было таковым когда-нибудь.

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

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

Это ниша C, который обязан знать любой проф. программист. C++ не имеет к управлению памятью никакого отношения вообще.

Глупости. Это ниша C++ точно такая же, как и Си. На C++, как правило, удобнее и быстрее разрабатывать. И в последствии поддерживать. Тут все зависит еще и от размера проекта. Но C++ тут ничем не хуже Си. Только лучше.

Правильно делаешь. Респект и уважуха.

Ну так и ты так же делаешь, как я понял. А какой смысл баттхертить от C++, если единственная альтернатива на данный момент - это Си, где все еще хуже?

anonymous ()
Ответ на: комментарий от eao197

Элитаризм на марше.

Никакого элитаризма. Незнание C означает незнание элементарных основ устройства машины. Это база, обязательная к изучению проф. программиста, а не прикладника-одинэсника.

Сейчас C нужен разве что тем, кто плотно занимается низкоуровневым системным программированием.

Сейчас C нужен, например, чтобы Постгрес допилить как нужно.

anonymous ()
Ответ на: комментарий от anonymous

Ну я бы задал вопрос. Потому, что это высказывание столь же глупое. Возможно еще глупее.

Первоначальное высказывание не глупое. Обосную. Ну смотри, человек, проводящий время за игрой ничего нового не творит, умнее не становится, здоровья себе не прибавляет. Факт? Факт. Т.е. это бесполезное время препровождение. Следовательно, геймдев, производящий программы для бесполезного время препроводжения является бесполезным.

anonymous ()
Ответ на: комментарий от eao197

Или в Rust, как в Python-е, есть только один правильный способ делать что-либо?

Я хз какая официальная позиция, но язык несколько «строже» в том плане, что в него «встроены» проверки (в виде предупреждений) по наименованию. Опять же, форматтер есть из коробки. Плюс исключений нет, что тоже лишает сообщество ряда привычных для С++ программистов холиваров.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от anonymous

Никакого элитаризма.
Это база, обязательная к изучению проф. программиста, а не прикладника-одинэсника.

Ну да, ну да.

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

Глупости. Это ниша C++ точно такая же, как и Си. На C++, как правило, удобнее и быстрее разрабатывать. И в последствии поддерживать. Тут все зависит еще и от размера проекта. Но C++ тут ничем не хуже Си. Только лучше.

Покажи мне хоть один менеджер памяти, который не будет сводиться к системным вызовам, которые на C. Зачем врать про нишу, которая не имеет к цепепе отношения?

anonymous ()
Ответ на: комментарий от anonymous

Ну смотри, человек, проводящий время за игрой ничего нового не творит, умнее не становится, здоровья себе не прибавляет. Факт? Факт.

Посылка спорная. Умнее он становится в процессе игры может(мозг может увеличивать связи, улучшать реакцию и память и пр. - от игры зависит). Ему в голову могут придти какие-то новые идеи(расслабление и отвлечение внимание от проблемы этому способствуют). Здоровья, скажем так, «психического» прибавить себе можно. Люди любят играть. Если это не перерастает в болезнь или зависимость, это приносит счастье и улучшает гормональный уровень.

Ну смотри, человек, проводящий время за игрой ничего нового не творит, умнее не становится, здоровья себе не прибавляет. Факт? Факт. Т.е. это бесполезное время препровождение.

И вывод неверен. Даже если принять «факт», то из него не следует бесполезность. Тут сначала надо с тем, что такое «польза» определиться.

Следовательно, геймдев, производящий программы для бесполезного время препроводжения является бесполезным.

Нет, это так же не следует. Геймдев, как отрасль, полезен хотя бы с точки зрения экономического развития, рабочих мест, прогресса в технологиях. Даже если принять твои предыдущие рассуждения за верные, бесполезным геймдев назвать нельзя.

anonymous ()
Ответ на: комментарий от anonymous

Покажи мне хоть один менеджер памяти, который не будет сводиться к системным вызовам, которые на C

Все сводится к системным вызовам. Все, кроме С, бесполезно? Логику работы с памятью можно описывать и на крестах. Так же естественно, а иногда гораздо безопаснее. И код качественный написать проще.

anonymous ()
Ответ на: комментарий от anonymous

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

С точки зрения экономического развития заниматься нужно тем, чтобы делать население умнее, а не дебильнее. Поэтому геймдев способствует регрессу в этом плане.

anonymous ()
Ответ на: комментарий от anonymous

Смотря что ты понимаешь под «управлением памятью». Если это вшивый аллокатор для std::vector, то это одно, а когда ты пишешь рантайм под железо, какой может быть C++?

anonymous ()
Ответ на: комментарий от anonymous

а когда ты пишешь рантайм под железо, какой может быть C++?

Такой же, как и Rust: сильно обрезанный. Без RTTI и исключений, как минимум. Но с шаблонами и деструкторами.

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

С точки зрения экономического развития заниматься нужно тем, чтобы делать население умнее, а не дебильнее. Поэтому геймдев способствует регрессу в этом плане.

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

anonymous ()
Ответ на: комментарий от anonymous

Нужно? Занимайтесь. Способствует регрессу? Не играйте. И да, не покдскажите ли ваш реальный вклад в развитие человечества, кроме ко-ко-ко на этом странном ресурсе?

anonymous ()
Ответ на: комментарий от anonymous

Ну смотри, человек, проводящий время на ЛОРе в героических баталиях в треде о расте ничего нового не творит, умнее не становится, здоровья себе не прибавляет. Факт? Факт. Т.е. это бесполезное время препровождение. Следовательно, обсуждение языка на лоре и сами девы, производящие программы на нем для бесполезного время препроводжения являются бесполезными.

anonymous ()
Ответ на: комментарий от Dark_SavanT

Шланг и подозреваю что MS компилятор.

Так то не переход, они изначально на C++.

Мне просто интересно, как C++ записали в нишевый язык для компиляторов. Насколько я знаю, компиляторов на нем немного, и все это либо legacy, либо clang :)

unsigned ★★★ ()
Ответ на: комментарий от unsigned

Мне просто интересно, как C++ записали в нишевый язык для компиляторов.

Его никто не записывал в нишевые. Было сказано, что в разработке компиляторов C++ может успешно применяться.

Насколько я знаю, компиляторов на нем немного, и все это либо legacy, либо clang :)

Вы специалист по разработке компиляторов?

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

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

xap4o ()
Ответ на: комментарий от xap4o

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

anonymous ()
Ответ на: комментарий от eao197

Его никто не записывал в нишевые. Было сказано, что в разработке компиляторов C++ может успешно применяться.

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

Вы специалист по разработке компиляторов?

Как это влияет на мое высказывание?

Нет, не специалист. Имею представление о разработке компиляторов, в том числе на C++.

unsigned ★★★ ()

Слегка вброшу: подсказали о наличии функции catch_panic. С одной стороны, она не делает ничего принципиально нового, с другой - если её стабилизируют, то не придётся создавать новый поток только для возможности перехватить панику.

Ещё бы придумать что-то для удобного вытаскивания типа из Any. Впрочем, подозреваю, что на макросах уже можно сделать.

Хотя сигнатура у функции слегка странная - могли бы уже возвращать значение или ошибку.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от anonymous

gcc с версии 4.8 на C++

Этот случай я обозначил как legacy.

unsigned ★★★ ()
Ответ на: комментарий от unsigned

а я разных девушек люблю, ну ты понял к чему это

anonymous ()
Ответ на: комментарий от unsigned

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

Ну, в нише PHP или Ruby-On-Rails для небольших и даже средних веб-сайтов, которые хостятся где-то на стороне, вряд ли С++ будет успешно применяться.

Как это влияет на мое высказывание?

Насколько я знаю, кроме широко известных компиляторов для находящихся на слуху языков, есть еще куча малоизвестных, а зачастую и закрытых, проектов. Если посмотреть на списки генераторов парсеров в Wiki, то генераторы, которые выдают C++ный код, встречаются не так уж и редко.

Специалисты в компиляторостроении в этом лучше разбираются, полагаю.

eao197 ★★★★★ ()
Ответ на: комментарий от xap4o

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

Разрушить, зачинщиков расстрелять, остальных отправить на исправительные работы.

Потреблядство не нужно. Нужны заводы, больницы, плотины, детские садики и ракеты. Все. Больше ничего не нужно.

anonymous ()
Ответ на: комментарий от anonymous

ну тогда свалил с лора по своим же убеждениям, иначе балаболка мелкая

anonymous ()
Ответ на: комментарий от anonymous

Вы спорт высоких достижений только что с почвой смешали :) Да и вообще, любое приятное времяпровождение Черчилля например лохом выставили, за то что тот был не против коньячка и сигарки.

anonymous ()
Ответ на: комментарий от anonymous

Щьёрт, точку забыл поставить. Но так даже лучше

anonymous ()
Ответ на: комментарий от anonymous

Правильно. Зачем игры и прочие развлечения.
Человек обязан трудиться, молиться, поститься и слушать радио РадонежЪ.
И так 16-ть часов в день.

Сразу видно подростка максималиста.

WatchCat ★★★★★ ()
Ответ на: комментарий от eao197

Я не знаю, на чем пишут закрытые компиляторы. Интересно было бы узнать статистику. Вполне возможно, что C++ там популярен из-за инфраструктуры, о чем писали выше, и просто по историческим причинам.

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

Поэтому Rust вызывает интерес как язык для компиляторостроения.

UPD Да, сборки мусора у него нет, но всё-таки управление памятью наверно упростится. Я еще не разбирался с этим.

unsigned ★★★ ()
Последнее исправление: unsigned (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну смотри, человек, проводящий время на ЛОРе в героических баталиях в треде о расте ничего нового не творит, умнее не становится,

Не надо сравнивать общение, дискуссию, спор на проф. темы, в котором, как известно, рождается истина и проверяется своя правота или неправота с тупорылыми игрушками для великовозрастных даунят. :-)

anonymous ()
Ответ на: комментарий от eao197

Такой же, как и Rust: сильно обрезанный. Без RTTI и исключений, как минимум. Но с шаблонами и деструкторами.

Без RTTI и исключений - это уже C, шаблоны и деструкторы для управления памятью как не пришей кобыле хвост. Это раз.

Не во всякое железо даже C влезает, не то что C++. И речь уже должна идти о Форте, который я очень уважаю. Это два.

anonymous ()
Ответ на: комментарий от anonymous

Без RTTI и исключений - это уже C, шаблоны и деструкторы для управления памятью как не пришей кобыле хвост

С шаблонами и деструкторами (и виртуальными функциями) - это уже не Си.

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

молодец, до двух считать умеешь. деструкторы это RAII, а это управление ресурсами, в т.ч и памятью

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.