Доступен (http://blog.rust-lang.org/2015/10/29/Rust-1.4.html) релиз языка программирования Rust 1.4 (http://www.rust-lang.org), развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo (https://www.opennet.me/opennews/art.shtml?num=36576), написанный (https://github.com/servo/servo/) на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).
В новом выпуске представлено (https://github.com/rust-lang/rust/blob/8ab8581f6921bc7a8e3fa...) более 1200 изменений, который в основном связаны с небольшими улучшениями и стабилизацией кодовой базы. В стандартной библиотеке 48 API отмечены как стабильные, 8 API переведены в категорию устаревших, 2 API переработаны для увеличения производительности. В пакетном менеджере обеспечен вывод дельной информации об изменениях при выполнении команды "cargo update".
В языке реализованы предложения RFC 1214 (https://github.com/rust-lang/rfcs/pull/1214) по устранению недостатков в системе типов. Для кода не соответствующего новым правилам определения типов обеспечен вывод предупреждений, которые в следующем выпуске будут заменены на вывод ошибок. В состав также приняты изменения RFC 1212 (https://github.com/rust-lang/rfcs/blob/master/text/1212-line...), затрагивающие функции чтения строк и допускающие использование как "\\\\r\\\\n", так и "\\\\n" в качестве меток конца строки. Расширена поддержка платформы Windows, при сборке для которой теперь можно использовать 64-разрядный MSVC ABI и штатный компоновщик.
Язык Rust развивается проектом Mozilla и сфокусирован на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий. При этом Rust обходится без использования сборщика мусора или runtime, что делает возможным создания на Rust библиотек, которые могут выступать в роли прозрачной замены библиотекам для языка Си. Для распространения библиотек на языке Rust, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo (http://blog.rust-lang.org/2014/11/20/Cargo.html), позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек введён в строй репозиторий crates.io (https://crates.io/).По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.
URL: http://blog.rust-lang.org/2015/10/29/Rust-1.4.html
Новость: http://www.opennet.me/opennews/art.shtml?num=43223
>>В состав также приняты изменения RFC 1212, затрагивающие функции чтения строк и допускающие использование как "\\r\\n", так и "\\n" в качестве меток конца строки.Скоро компилятор будет добавлять BING-bar в бинарники?
В HTTP и SMTP, очевидно, BING-bar'ы уже доба- ох черт!
> защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п.А где же ваши невозможны гонки данных и безопасное многопоточное программирование? Им уже можно пользоваться?
Да можно, но дерзайте вполне себе нормальный язык, местами даже проще чем c++.
можно будет использовать тогда когда Servo нормально на нём запилят, а то пока лидирует среди языков тока по скорости клепания версий.
Не скажите, ещё он уделывает С++ и Fortran по скорости: https://benchmarksgame.alioth.debian.org/u64q/which-programs...
Нефига он не быстрее С++! Как раз на графике видно, что С++ идёт сразу за С и только потом Rust и далее Ada 2005
В С++ из-за указателей часть оптимизаций со стороны компилятора применить не всегда возможно. У rust'а в этом смысле гораздо больше потенциал.
В смысле потенциал, который не реализован? Ну как в C++ :)
Подсунуть "потенциал" как реализованный и якобы доказанный бенчмарком факт - сильно...Так же как утверждения что Rust защищает от ошибок, типа переполнений, потом выясняется что только от элементарных, которые в C++ и так сразу ловятся статическими анализаторами.
> Rust защищает от ошибок, типа переполнений, потом выясняется что только от элементарных, которые в C++ и так сразу ловятся статическими анализаторами.А статические анализаторы прям всемогущи? Загляни в чендж лог любого из них - сразу будут "добавлены такие-то и такие проверки". Те же ребята из pvs studio хвалятся тем, что всё время находят косяки в крупных и не очень опенсорсных проектах. В расте же благодаря внутренней семантике языка и различных ограничений возможностей программиста (владение, заимствование и т.п.) и была достигнута безопасность. При написании на расте не раз было чувство, что компилятор попусту трещит и ошибок нет, однако после повиновения компилятору приходит осознание возможных последствий этой с виду неошибки. Возможно, компилятор может и пропустить какую-нибудь экзотичесикую багу в релиз, но благодаря своей архитектуре с каждым релизом цепи становятся всё прочнее и прочнее. Не стоит забывать, что вне области действий компилятора (ОС, код других ЯП) всё есть unsafe.
1) Там для Вас внизу есть сноска почему на графике RUST идет по скорости сразу же после C.
http://portal.acm.org/citation.cfm?id=5666.56732) по "нераскрытому потенциалу" скорости RUST на графиках:
https://alioth.debian.org/tracker/?atid=413122&group_id=1008...
почти месяц стоят в очереди новые версии програм для тестов дающие прибавку в скорости, в своих категориях, в пределах 20%.
Странный язык. Синтаксис уродлив, продуктивность низкая, зато память безопасна. Похож на уродца с единственной перекачанной мышцой. Вспоминается Charger из L4D2
> Странный язык. Синтаксис уродлив, продуктивность низкая, зато память безопасна.Вот у си или явы да уродливый синтаксис, а тут просто непривычный для большинства. Многим нажеться синтаксис Erlang уродливым хотя это далеко не так и по лаконичности он уделает и си и яву, и даже питон.
Ваш Erlang тот ещё уродец, локаничность != красота. А вот Basic и Pascal да, это языки.
learn you a D for great good!
"Синтаксис уродлив" - очень субъективно, люди и на brainfuck пишут.
"продуктивность низкая" - в каких попугаях продуктивность измеряли?
"память безопасна. Похож на уродца с единственной перекачанной мышцой." - если модель работы с памятью, это все что вы знаете о rust, то возможно вам не стоит отвлекаться от L4D2 ради написания своих отзывов о нем?
> люди и на brainfuck пишутИ как, много написали?
> не стоит отвлекаться от L4D2
Маловато высокомерия!
Это откуда у вас сведения что продуктивность низкая? Балабол?
На самом деле язык очень четкий и легкий
Основное назначение языка - писать такой код, который через статический анализ можно максимально оптимизировать и обезопасить. Да, это требует соблюдения дополнительного ряда правил со стороны программиста. Зато он может быть уверен что скомпилированное приложение никогда не упадет и будет по скорости превосходить реализацию на с++ (возможно не сейчас, а в будущем, по ряду оптимизаций g++ пока превосходит).
Упадет при выходе за границы типов, заодно и поломает что-нибудь, т.к. в релизе по умолчанию проверки отключены, а с ними медленно.
> поломает что-нибудьа затем
> Упадет
> Зато он может быть уверен что
> скомпилированное приложение никогда не упадетЛожная уверенность фанатов что новые безопасные грабли спасут от логических ошибок и сценариев фейла - только ухудшит качество.
Ты там как, уже хоть одну компилируемую программу написал? ))
Ладно синтаксис - но семантика у него точно уродливая, со всеми боксингами и пришибленной системой типов.
>>пришибленной системой типовв чем заключается "пришибленность системы типов" RUST?
Да во всём. Хилые пользовательские типы. Неопределённость лейаута структуры. Вся шиза с прибитым к языку ownership. Отсутствие приличного метапрограммирования. Отсутствие приличного ООП. Правда, от глупостей вроде структурной системы типов ушли - и то хлеб.А в целом Rust больше всего похож на очередного кадавра a-la Scala, с попыткой функциональщину вырядить в приличные одежды, чтобы на неё не сразу плевались.
Правильная система типов - это D. Мощное метапрограммирование, разделение классов и структур, всё, что можно, делается в библиотеке (и, соответственно, пользователь может реализовать своё не хуже), "стандартное" ООП в полном объёме плюс свои плюшки вроде alias this (в том числе UFCS, который мозилловцы спёрли - и правильно, хорошая штука), и так далее, и тому подобное.
> Хилые пользовательские типы.В чём заключается «хилость»? Что сложно сделать такого, что было бы просто в альтернативах?
> Вся шиза с прибитым к языку ownership.
Для желающих и умеющих стрелять себе в ногу — секция unsafe.
И опять же, в свете Rust отсутствие в языках средств управления ownership - выглядит уже не меньшей шизой.
> Отсутствие приличного ООП.
Крупные и успешные проекты, написанные на неООП языках, являются прямым подтверждением того, что отсутствие ООП, прибитого к языку, — это не всегда минус.
Ну и чередование фраз «приличный ООП» и «стандартный ООП» выдают почти религиозную субъективность, которая железобетонно подтверждается фразой про «функциональщину».
Что для вас "Правильная система типов"?
Зачем разделять классы и структуры, если всё это просто типы?
Система типов Rust строже следует теориям (https://en.wikipedia.org/wiki/Substructural_type_system). Просто в Rust все абстракции подразумевают, что всё ещё есть память, которой надо управлять, и все абстракции вокруг неё и крутятся (потому что системное программирование).
*зачем* столько языков?
АПВС? Ты и так ни одного не знаешь, теперь будешь не знать на один больше. :-)
Затем чтобы ламерам жизнь медом не казалась.
Чтобы было из чего выбирать. И ведь, что характерно, сколько не придумали, а всё равно нет идеального. Я до сих пор не могу выбрать какой-нибудь язык, указать на него и сказать, что он лучший, и других мне не надо. У каждого языка какой-нибудь фатальный недостаток. А то и не один.
Да... Вот бы мощь лиспа совместить с выводом типов, как в ocaml/haskell. Никто, кстати, не смотрел ещё на typed/racket?
Аналогов Rust'а нет, не в той теме задаешь этот вопрос.
абсолютно всё можно написать на Фортране...
...а фортран программу можно написать на любом языке программирования.
накой их плодить?
> накой их плодить?Дык, не плоди ))
Абсолютно всё можно написать на любом Тьюринг-полном языке, но «остерегайтесь трясин Тьюринга, в которых можно сделать всё, но ничего интересного нельзя сделать просто» (Алан Перлис).
Если бы сообщество рулило, то к 2020 году ядро Линукс уже полностью было-бы переписано на питоне. Только Линус (временно) и Гугл (глобально) не дадут этому случится. Потому что Гугл всё-таки нанимает программистов НА РАБОТУ ЗА ДЕНЬГИ и предъявляет к ним требования при отборе.
на каком из питонов?
(рукалицо)
Да, и грузилось бы ядрышко несколько суток и требовало бы несколько сот гигов оперативки, а после загрузки стабильно выдавало бы кернел паник. Пускай сообщество сначала разберется с менеджером приложений убунты.
Да питон это не ОС, это база данных со вменяемым языком запросов :)
Ещё что-нибудь расскажи. Очень интересно.
> средства для высокого параллелизма выполнения заданийДа сколько можно это повторять? Там обычные потоки, как и в любом другом языке (кроме питона).
Потоки то обычные, однако взаимодействуешь ты с ними под бдительным присмотром компилятора.
> Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.Где там функциональное программирование и модель акторов?
>> Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.
> Где там функциональное программирование и модель акторов?Спроси у Crazy Alex чуть выше - он тебе расскажет много тёплых слов ))
Функциональное программирование уже встроено в язык. Просто запрети себе присваивание и нигде не используй mut.
Модель акторов - в библиотеках.
Системы типов как System F нет, которая присутствует в том же Ocaml, оптимизации хвостовой рекурсии нет. Модели акторов в стандартной библиотеке нет. "Вечносырой" компилятор.
Так лучше C++ использовать.