Состоялся (http://blog.rust-lang.org/2015/12/10/Rust-1.5.html) релиз языка программирования Rust 1.5 (http://www.rust-lang.org), развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo (https://www.opennet.ru/opennews/art.shtml?num=36576), написанный (https://github.com/servo/servo/) на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).В новом выпуске представлено (https://github.com/rust-lang/rust/blob/stable/RELEASES.md#ve...) более 700 изменений, наиболее значительным из которых является доведение утилиты cargo до полноценного средства распространения приложений на языке Rust. В частности, в новой версии представлена команда "cargo install", предназначенная для установки пакетов с приложениями в локальной системе в директорию ~/.cargo/bin. Новая команда также может использоваться для установки средств разработки, таких как утилита форматирования кода rustfmt или модули с реализацией дополнительных подкоманд для cargo. Например, уже доступны пакеты с реализацией подкоманд "cargo check" для статической проверки проекта без сборки исполняемого файла, "cargo edit" для добавления или удаления зависимостей, "cargo graph" для создания графика зависимостей при помощи GraphViz, "cargo watch" для автоматического повтора команды Cargo при изменении проекта.
Из других изменений отмечается стабилизация значительной части библиотечного API и, в частности, вызовов, связанных с работой с файлами. Продолжена оптимизация системы сборки. На 20% сокращён размер создаваемых метаданных. Улучшено качество генерации кода, что позволило сократить размер libcore на 3.3 Мб и сократить потребление памяти rustc на 18 Мб. Добавлена поддержка платформы NetBSD на архитектуре amd64 и ядер rump (https://www.opennet.ru/opennews/art.shtml?num=40371).
Язык 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/12/10/Rust-1.5.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=43498
А где в расте модель акторов?
Там же, где почти всё остальное — сбоку.
> предназначенная для установки пакетов с приложениями в локальной системе в директорию ~/.cargo/binОно так и устанавливает трояны неизвестно откуда неизвестно кем и как собранные?
Оно устанавливает только то, что ты скажешь ему установить?
Очень много у него конкурентов.
Нет. Один Swift, и тот не везде можно применять, где применим Rust.
Как можно сравнивать 2 языка, если у одного есть сборщик мусора, а у другого нет? Swift не подойдет для системного программирования (ядро драйвера фс), а руст может подойти.
Ссылку на наличие GC в Swift в студию. Если речь об ARC - в Rust они тоже есть. Да они и в ядре Linux есть, к слову.
Какие, например, кроме крестов?
Без учета попсового маркетинга и разницы во вбухиваемом бабле, D например.
D не конкурент, он с GC.
GC там опционально, как напишешь. А вот заявления о Rust, что он и без ручного управления и без GC с подсчетом ссылок, кажется маркетойдным бредом, если и без того и без другого, значит пришлось пожертвовать чем-то еще. Вот только чем, я для себя пока не понял.
Основное управление памятью берёт компилятор и язык. Для некоторых определённых случаев памятью можно управлять в unsafe блоках если это необходимо. Так же есть механизмы со счётчиками ссылок(Rc, Arc и тд.) которые берут владение данными и всем потребителям предоставляют ссылки. Так что в зависимости от задачи и необходимости можно воспользоваться разными механизмами.
При написании кода скорее потребуется себя переучить в плане того как его писать. Поскольку придётся соблюдать правила.
Мне кажется, что ты даже не пытался. Критикуешь сам не знаешь что. И там есть управление памятью.
D - ходячий мертвец.
Как и Rust. Еще один громкий "убийца С++".
Кроме С и плюсов у него нет конкурентов. Поскольку остальные все "модные языки" (swift, go, d, java) используют GC для сборки мусора.
Swift использует ARC.
Да не использует SWIFT сборку мусора, что за тугие роботы это пишут?
> Да не использует SWIFT сборку мусора, что за тугие роботы это пишут?Пытаются отличаться хоть какими-то надуманными пововодами. Акторов налепили, отсутствие сборщика пытаются из недостатка сделать уникальным достоинством. Якобы язык спасает от ошибок в головах...
Rust не спасает от ошибок в головах. Просто при наличии ошибки в голове на других языках программа запускается, но работает не правильно, а Rust пытается объяснить пользователю почему тот идиот.
Пишут обезьяны, а в дураках пользователь
С каких это пор D стал "модным" языком?
Да и GC у него опционален.
Неделя Mozilla объявляется открытой!
Когда планируют его закрыть?
На фоне последних новостей, не удивлюсь, если Mozilla выдаст что-то на подобии: Mozilla прекращает разработку языка программирования Rust.
Даже если такое и произойдёт, язык будет разрабатываться - он открыт и все желающие могут помогать его развивать.
> язык будет разрабатываться - он открыт и все желающие могут помогать его развиватьВообще-то, то что язык открыт вовсе не гарантирует, что у тех, кто может помогать его развивать, будет такое желание…
>> язык будет разрабатываться - он открыт и все желающие могут помогать его развивать
> Вообще-то, то что язык открыт вовсе не гарантирует, что у тех, кто
> может помогать его развивать, будет такое желание…D тоже открыт, с самого начала. Субъективно говоря, он и сейчас лучще Rust.
>>> язык будет разрабатываться - он открыт и все желающие могут помогать его развивать
>> Вообще-то, то что язык открыт вовсе не гарантирует, что у тех, кто
>> может помогать его развивать, будет такое желание…
> D тоже открыт, с самого начала. Субъективно говоря, он и сейчас лучще
> Rust.«Субъективно говоря» = «Чем лучше? — Чем Rust»
Наплодили сущностей! Да здравствует QuickBASIC, C, Delphi, PHP. И точка!Плодят тут языки для школоты. Всё сделать так, чтобы программировать мог любой безграмотный имбицил. Программировать должны специально обеченные люди. А такие люди, как правило, консервативны. Всплывает тут понимаешь всякое - "эгэгэй, я новый супер крутой язык! Я лучше чем С и любой дурак может на мне программировать!" Дураки должны лечится. Программировать должны программисты, при чём, на языках, которыми пользуются другие программисты.
Школота пусть Бэйсик учит; системное программирование на С; юзерские интерфейсы на Дельфах; веб на ПХП. Точка.
дурак ты Коля и не лечишься.
обоснуй
Ты свой путь в программировании и остановку в развитии пытаешься спроецировать на всех остальных программистов. Это нормальное поведение для двухлетнего ребенка, который закрывает глазки в уверенности, что всем остальным тоже станет темно и его не увидят. В промежутке с трех до пяти лет большинство детей понимает ошибочность такого подхода. Но некоторые продолжают его использовать даже став великовозрастными балбесами. Это дураки, их не вылечить.
Но в "напплодили" он таки прав. В результате этого "быстрее, легче, топорнее" у нас текстовые странички тормозят на топовых компах, которые легко справляются с риалтаймовым рендерингом гор, лесов и полей и тысячи НПС.Раст из той же оперы, и результаты будут теми же.
Тормозящие текстовые странички сделаны на чем-то новом или на языках двадцатилетней давности?
Тесты производительности для rust ты смотрел?
> Тормозящие текстовые странички сделаны на чем-то новом или на языках двадцатилетней давности?
> Тесты производительности для rust ты смотрел?Ну тормозит, как все языки с доп. проверками границ, типов, возвратов, GC. Да еще при этом без GC. И че?
> обоснуйДиагноз не обосновывают, а устанавливают.
"системное программирование на С"
и каждый плодит свою реализацию и свои костыли, а потом все дружно ищут баги годами :)
БСД, Линукс и даже Виндовс API написаны на сях. Им это скажи.
> БСД, Линукс и даже Виндовс API написаны на сях. Им это скажи.А что, когда их создавали, была альтернатива?
Си создавался как язык системного программирования. Альтернатив и сейчас нет и не надо. Будете мне заливать, что Си устарел? Я за 8 лет программирования на разных языках (с, с++, с#, дельфи, и др. и пр.) не встречался с такой задачей, которую нелзя решить на Си. Всякие там рекурсии и абстракции на нём прекрасно пишутся. Всё просто - во первых, руки надо иметь прямые, во вторых, если структура программы зашла в тупик, то надо переписывать, а не городить костыли. Не язык плохой, а лень и кривые руки виной во всём.
> БСД, Линукс и даже Виндовс API написаны на сях. Им это скажи.
> Альтернатив и сейчас нет и не надо.Сам же и ответил.
> Будете мне заливать, что Си устарел? Я за 8 лет программирования на разных языках (с, с++, с#, дельфи, и др. и пр.) не встречался с такой задачей, которую нелзя решить на Си. Всякие там рекурсии и абстракции на нём прекрасно пишутся. Всё просто - во первых, руки надо иметь прямые, во вторых, если структура программы зашла в тупик, то надо переписывать, а не городить костыли. Не язык плохой, а лень и кривые руки виной во всём.
Замечательно! И если так, то заявления вида:
> Плодят тут языки для школоты. Всё сделать так, чтобы программировать мог любой безграмотный имбицил.
оставь при себе.
> Замечательно! И если так, то заявления вида:
>> Плодят тут языки для школоты. Всё сделать так, чтобы программировать мог любой безграмотный имбицил.
> оставь при себе.Он прав (в части системного программирования), а ты неаргументированно троллишь. Заявления вида "сам дурак" - это стиль программирования rust, судя по его фанатам.
> Он прав (в части системного программирования), а ты неаргументированно троллишь. Заявления вида "сам дурак" - это стиль программирования rust, судя по его фанатам.А можно пример его конструктивной критики языка?
> Наплодили сущностей! Да здравствует QuickBASIC, C, Delphi, PHP.
> Плодят тут языки для школоты.
> Дураки должны лечится.
> Школота пусть Бэйсик учит;
> И точка!
> Точка.Да, против такого... Да кто я такой?
------------------------------------------
> Заявления вида "сам дурак" - это стиль программирования rust, судя по его фанатам.Да ты посмотри, что он пишет. Если я троллю, то он просто королева троллей.
> Не язык плохойПлохой, ведь на нем надо учиться программировать. /сарказм/
>Всякие там рекурсии и абстракции на нём прекрасно пишутсяс макросами, приведением типов через указатели, и прочей неотлаживаемой фигней
>Не язык плохой, а лень и кривые руки виной во всём
то же самое можно написать про ассемблер
> и каждый плодит свою реализацию и свои костыли, а потом все дружно ищут баги годами :)Классика же. ;)
Иди ознакомься с историей.
До C то же были языки. Ты бы и тогда сказал пошли вы все со своими новыми модными языками?
Ты тут понимаешь выплюнул свой кругозор языков, а некоторым твой этот наборчик по большей части тоже нафиг не нужен.
я говорю про сейчас, а не про стопицсот лет назад. Ну и какие же языки например Вы нам посоветуете? Java + .NET + Python? Джентльменский набор айтишника, который ничерта не понимает, как работает и как устроен тот компютер, на котором он кодит... Механик, не понимающий, как устроен автомобиль. Даааа, бедааа.
> Java + .NET + Python? Джентльменский набор айтишника, который ничерта не понимает, как работает и как устроен тот компютер, на котором он кодит... Механик, не понимающий, как устроен автомобиль. Даааа, бедааа.Ну да... Есть руль, твоя задача рулить. Не обязательно (но полезно, на всякий) знать, что там под капотом.
Ты между прочим тоже, пишешь на Си, но ведь... Зачем Си? Пиши в машинных кодах! Будь мужиком!
Такая позиция, абсолютный бред! Если им нравится, то пусть жрут кактус. Ты то чего за них так переживаешь, они ведь не твой пирог жрут?
Си в своё время тоже был: "Наплодили сущностей!".
> Плодят тут языки для школоты. Всё сделать так, чтобы программировать мог любой безграмотный имбицил.
И такие же олдфаги как ты, тогда писали такое же.
> Ты то чего за них так переживаешь, они ведь не твой пирог жрут?Я не могу запрограммировать все на свете, мне приходится пользоваться софтом, написанным такими неучами, и этот софт тормозит, глючит, дико бесит и разражает.
Это как жить в городе, в котором полным полно срущих прямо на улице бомжей. Да, теоретически можно ходить и за всеми ними убирать. Хотя правильнее было бы их всех пристрелить.
Если это адресовано мне, то комментарий писал с позиции Коляна.Я сам ничего против разнообразия не имею. Больше языков, каждый для своей ниши, а там пусть победит сильнейший.
Стоимость и сложность разработки софта на С (серьезного софта) очень высока. Т.е. если бы все писали на си, компании бы выпускали только текстовые программки или на ГТК, и те раз в 2 года. Такая модель подходит только для тех кто никогда разработкой-то и не занимался, просто считает себя "программистом".ЗЫ. На си такие же как вы очень много ненадежного, дырявого и при этом еще и тормозного софта написали. Поэтому мир решил иначе.
Чем плохи C+Go+Perl, C+Rust+Ruby, C+Ocaml+Erlang, C+Haskell+Scheme или десятки других возможных связок? А самое главное, с чего ты взял, что знание выбранного тобой PHP или Qbasic лучше позволяет понять устройство компьютера, чем Java + .NET + Python?
> я говорю про сейчас, а не про стопицсот лет назад. Ну и
> какие же языки например Вы нам посоветуете? Java + .NET +
> Python? Джентльменский набор айтишника, который ничерта не понимает, как работает и
> как устроен тот компютер, на котором он кодит... Механик, не понимающий,
> как устроен автомобиль. Даааа, бедааа.Есть бензопила (Java + .NET + Python - прикладное ПО), есть скальпель (С - системное ПО), есть мультитул (С++). И они не заменяют друг друга.
Валить лес скальпелем можно, но это стиль сбежавшего психа, а не хирурга.
> Есть бензопила (Java + .NET + PythonЭто не бнзопила, а "летающий топор" из "Юного техника" 1983 года.
> QuickBASIC, DelphiУровень допустимой толщины превышен в разы
Delphi мертво. PHP убого.
Сразу видно Коляну >35 лет
>Программировать должны специально обеченные людиничего мы тебе не должны
Хочешь побольше технических аргументов? ОК:1. Delphi проприетарный компилятор и проиприетарная IDE. Писать "юзерские интерфейсы" на ней глупо т.к. будет работать только в одной ОС, будет требовать бабла чтобы даже собрать пакет из исходников.
2. PHP это язык с тонной врождённых кривостей которые делают его непригодным для задач где высока цена ошибки.
3. Вы не привели ни одного нормального языка с GC. При этом специалистам достаточно ИМХО очевидно что ниша gc-языков типа python,ruby,scala -- весьма широкая. Т.е. для очень многих задач GC годится если даёт иные выгоды в духе цены поддержки и скорости написания.
Квик-бэйсиком и Си вы может быть покрыли свои текущие умения, но я советую всё же расширять кругозор. И уж _точно_ не думать что вы покрыли >50% надобностей человечества.
но зачем? если есть уже открытые и стандартизированные Java, C++14, C#(5-я версия+ADO.NET+LINQ+WCF в процессе стандартизации ECMA), но или попсовые Go и Swift
>стандартизированные JavaБззззз! Наброс сфейлил. Попытайтесь ещё.
Java это настолько тонкая тема, что аж толсто)
> настолько тонкая тема, что аж толсто)Бссодержательная глубина Вашей рекурсивности поражает всё больше с каждым новым повторением. Да-да. Не останавливайтесь.
Из этого списка упоминания заслуживают только C++ и Swift, а остальное из другой вселенной.
А тут внезапно оказывается что у Rust есть свои особенности которые дают преимущества перед плюсами. Что касается Swift, то почему это нужно выбирать его если он такой же новичок как Rust? Или для некоторых Apple создала машину времени?
Вон Коля уже выше предложил уничтожить все языки и оставить только C/QuickBasic/PHP/Delphi. Вы в ту же коробку, громко удивляетесь зачем созданы различные Я.П.? Не хотите вчитываться в подробности?
Так что на нем написано, кроме мозилкиного движка? Очередной ненужный убийца плюсов, сколько их было уже.
> Так что на нем написано, кроме мозилкиного движка? Очередной ненужный убийца плюсов,
> сколько их было уже.Внимательно подними глаза вверх: там примеры. Убийца *NIX "под лицензией MIT", убийца GNU Coreutils "под лицензией MIT". Опасные ребята, пора искать в их вики расстрельный список, провериться -- а то не ровен же час!?
Бро, извини, но о чем ты вообще несешь, а?
> Бро, извини, но о чем ты вообще несешь, а?Там вверху, под новостью, ссылки на "что на нем написано, кроме мозилкиного". Туда надо поднять глазики и посмотрекать. ---Russian, motherfucker, do you speak it?
настолько ненужный, что Страуструп и Ко чешут головы и потихоньку перетаскивают в плюсы фичи оттуда, стыдливо умалчивая об источнике вдохновения :) Вот только это появится в компиляторах лет через 3-5, а ржавчина уже есть здесь и сейчас.Судя по тому, что начали появляться вакансии rust-программистов, шансы взлететь у этого языка довольно хороши.
Я аж на хедхантер полез с такой наглости - вакансия аж целых две на всю РФ.А фичи потырили - это да, это ок, прогресс.
> потихоньку перетаскивают в плюсы фичи оттуда, стыдливо умалчивая об источнике вдохновенияОх уж эта безграмотная школота... Все эти фичи известны (и реализованы) уже лет 20 как, просто никому особо не были нужны, потому и попадали в мейнстримовые языки.
написал человек, не видевший ни одной строчки кода на rust, ни одной статьи Страуструпа о C++17, и даже не представляющий, о каких собственно фичах идет речь. Эсперты opennet - они такие :)
А без сборщика мусора это примерно как и плюсы, где нельзя к примеру вернуть статический локальный массив из функции и просто обязан использовать указатели, чтобы объект не исчез раньше времени?
А что в этом плохого?
Самодеятельность языка это плохо. Когда если массив передаётся по стеку выше, но компилятор не смотря на это его уничтожает.
Вы слегка мануал не дочитали. Нету в плюсах никаких массивов. Есть указатели и синтаксический сахар к ним. Вы создаете указатель на область памяти, функция его и возвращает. Где тут самодеятельность?
Указатели объявляются с помощью *. Ты видишь в строке "int a[10];" хоть одну звёздочку?
Вы все таки не читали мануал
Во первых какую часть мануала? Во вторых даже если назвать это сахаром, то это будет звучать: сахар не работает. Так больше нравится?
Используйте вектор. В чем проблема?
Ха.
- Слушайте у вас тут компилятор шалит.
- Используй стандартную библиотеку.
Наличие костыля не отменяет проблемы. К тому же есть принцип наименьшей сложности.
> А без сборщика мусора это примерно как и плюсы, где нельзя к
> примеру вернуть статический локальный массив из функции и просто обязан использовать
> указатели, чтобы объект не исчез раньше времени?Yes We Can - http://is.gd/IXHhll
Ну это хорошо.
> нельзя к примеру вернуть статический локальный массивМожно. RTFM.
В плюсах? Пример в студию.
int *foo(void)
{
static int A[10] = { };A[9] = '3';
return A;
}
> В плюсах? Пример в студию.статический локальный массив это в понятиях С и С++ парадокс.
Локальный значит аллокированный на стеке (видимость в пределах функции/метода и субфункций расширения если компилятор поддерживает), статический значит (видимость в пределах модуля при линковке) живет в одной из .data, .rodata, .sdata, .bss или .sbss и еще в нескольких секциях может быть, но вы и про эти вряд ли слышали зачем они...Пример приведен для статика. Так кстати работает много функций разных реализаций libc.
Еще может быть TLS локальность...
Лично мое мнение что для каждой задачи подходит свой набор языков которые ее оптимально решают в соответствии с заданными ограничениями.
По опыту большой проект легче всего поддерживать на С. Хуже всего на С++ с применением всех фич языка и автогенерацией кода. о больших проектах на других языках я не слышал... Если в проекте меньше 100 000 000 строк и его писало < 100 людей это еще не большой проект. Код с черезмерным засилием ООП или не следующему подобию Linux Kernel Codyng Style тяжело читать.
PS обидно за незаслуженное отсутствие интереса к прекрасному языку TCL/TK для разработки GUI морд (но не работы с данными конечно).
>> сократить потребление памяти rustc на 18 Мб.- И эти люди говорят что Java много ест??
Для компилятора и пара гиг - не беда, если есть ради чего
>>> сократить потребление памяти rustc на 18 Мб.
> - И эти люди говорят что Java много ест??Для сравнения Chromium для компиляции сразу честно просит 6 Гб и, ЧСХ, гарантированно сжирает их на пол часика.
А что там Java, перестала быть JIT-backed интерпретатором, что её решили с чистым компилятором сравнить?
> Для сравнения Chromium для компиляции сразу честно просит 6 Гб6 Гб оперативы или места на харде?
>> Для сравнения Chromium для компиляции сразу честно просит 6 Гб
> 6 Гб оперативы или места на харде?Да, кто ж https://chromium.googlesource.com/chromium/src/+/master/docs... его разберёт: от 4 памяти, примерно 8 свопа и 10 диска (там же выше парой строчек). В среднем 6, B) почти
Мне одному кажется, что ставить приложения в ~/ - это ненормально за исключением случаев, когда ему предназначено быть запущенным пару раз и удалённым?
> Мне одному кажется, что ставить приложения в ~/ - это ненормально за
> исключением случаев, когда ему предназначено быть запущенным пару раз и удалённым?Видимо, да. Для вашего случая идеально подходит /tmp а в ~/bin устанавливаются пользовательские приложения, нужные только этому пользователю и доступные только ему для запуска, установки и удаления. А также, что бы установщик этих приложений мог работать только с ними и не имел привелегий выполнять чего-то больше.