URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 86887
[ Назад ]

Исходное сообщение
"Проект Mozilla выпустил язык программирования Rust 0.4"

Отправлено opennews , 16-Окт-12 16:42 
Представлен (https://mail.mozilla.org/pipermail/rust-dev/2012-October/002... релиз экспериментального языка программирования Rust 0.4 (http://www.rust-lang.org/), развиваемого проектом Mozilla. Rust является языком со строгой типизацией, сфокусированным на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий (возможность порождать тысячи и даже миллионы подпроцессов). Исходные тексты проекта распространяются (https://github.com/mozilla/rust/) под лицензией MIT. Компилятор поддерживает сборку для платформ Linux (x86 и x86_64), FreeBSD (x86_64), Mac OS X (x86 и x86_64) и Windows (x86), включая возможность кросс-компиляции и сборки сразу для нескольких целевых платформ. Параллельно с Rust развивается экспериментальный браузерный движок Servo (https://github.com/mozilla/servo), написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).


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

С момента прошлого выпуска внесено около 2200 изменений (https://github.com/mozilla/rust/wiki/Doc-detailed-release-no.... При подготовке новой версии основное внимание было уделено стабилизации синтаксиса языка и реализации поддержки передачи результатов функций через указатели. Поддержка ранее используемого метода передачи аргументов прекращена. Из других важный улучшений можно отметить начальную поддержку JIT-компиляции и "аккуратного" сборщика мусора. Вместо классов ('class') теперь предлагается использовать более простые структуры ('struct'). Переименованы некоторые неоднозначные элементы, например, вместо ret  теперь следует использовать return, вместо alt  - match, вместо import - use. Для эффективного взаимодействия между задачами реализована поддержка неименованных каналов (pipe), добавлена новая библиотека с инструментами синхронизации (std::sync).

<center>
<table style="border: 1px solid rgb(176, 177, 144); border-collapse: collapse; background: none repeat scroll 0% 0% rgb(221, 225, 194);" cellpadding="2" cellspacing="0" width="60%" border="1">
<tr><td>

<font color="#461b7e">
fn main() {
    for ["Alice", "Bob", "Carol"].each |name| {
        let name = copy *name;
        do task::spawn {
            let v = rand::Rng().shuffle([1, 2, 3]);
            for v.each |num| {
                io::print(fmt!("%s says: '%d'\n", name, *num))
            }
        }
    }
}
</font>

</td></tr></table>
</center>

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


-  Ориентация на безопасность:


-  Аккуратная работа с памятью - никаких нулевых и потерянных указателей. Автоматическое управление памятью;

-  Контроль изменчивости. Объекты неизменяемы (Immutable) по умолчанию;

-  Безопасность динамического выполнения: обработка сбоев, исключения, ведение лога, RAII / dtors;

-  Typestate: возможность определения сложных инвариантов, контролирующих структуры данных.

-  Ориентация на параллельность и эффективность кода:


-  Явный контроль памяти, контролирование схемы распределения памяти;

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

-  Итераторы стека (фактически лямбда-блоки без распределения кучи);

-  Статическая, нативная компиляция с созданием исполняемых файлов ELF, PE, Mach-o;

-  Прямой и простой интерфейс для кода на языке Си;

-  Ориентация на практическое применение:


-  Мультипарадигменный, функциональный, императивно-процедурный, объектно-ориентированный, поддерживающий параллельную actor-модель;

-  Функции первого класса с биндингами;

-  Нет номинальных типов (http://en.wikipedia.org/wiki/Nominative_type_system) или иерархии типов;

-  Мультиплатформенный, поддерживается Windows, Linux, Mac OS X, *BSD;

-  Хранение строк в UTF8, разнообразие низкоуровневых типов;

-  Работает с существующими нативными наборами инструментов: GDB, Valgrind, Shark и т.д.;

-  Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.

URL: https://mail.mozilla.org/pipermail/rust-dev/2012-October/002...
Новость: http://www.opennet.me/opennews/art.shtml?num=35097


Содержание

Сообщения в этом обсуждении
"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 16-Окт-12 16:42 
Для каждого языка должны быть samples легкодоступны, чтобы на практике и наглядно  показывать зачем Это и его(языка) возможность

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Boboms , 16-Окт-12 17:09 
>    for ["Alice", "Bob", "Carol"].each |name| {
>     let name = copy *name;

После таких ананонов пестон кажется верхом совершенства.


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Виктор , 16-Окт-12 18:58 
Чем-то Ruby напомнило

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Ищавин , 16-Окт-12 19:25 
Вот да, только не ясно зачем for, если логичнее просто [el1, el2, el3].each |el|

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено user , 16-Окт-12 20:04 
for позволяет использовать break.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Ищавин , 16-Окт-12 20:17 
Да, и правда так. Спасибо за объяснение.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено ан0нимус , 17-Окт-12 03:04 
А кто мешает в итераторе использовать break?

http://shelr.tv/records/507de8139660807d95000070


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Ищавин , 17-Окт-12 03:32 
Разговор о Rust, а не о Ruby.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 17-Окт-12 09:47 
а зачем в ruby break, если вместо each можно использовать [1,2,3].detect{|x| condition }?

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Pickle , 16-Окт-12 16:45 
Даешь кол-во Яп = кол-во программистов

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 16-Окт-12 17:07 
Чо, еще один Rust? :)

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


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено taliano , 16-Окт-12 17:17 
Ну как что. Напишите на нем незаменимый софт и зарабатывайте на его поддержке всю оставшуюся жизнь.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Очередной Анонимус , 16-Окт-12 17:54 
Разработчики Mathematica и AutoCAD гарантируют это.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Aquarius , 16-Окт-12 22:02 
есть одна проблема: в таком случае, кто-то должен для вас поддерживать сам язык, точнее интерпретатор/компилятор и средства разработки

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено pro100master , 17-Окт-12 00:20 
например написать быстро, минут за 20, какую-нибудь одно-двух- разовую утилитку - самое милое дело на каком-нибудь простом и быстром языке )

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 18-Окт-12 13:10 
Shell, не?

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено pro100master , 22-Окт-12 00:59 
> Shell, не?

с базой, блек джеком и шлюхами? неа, не надо :)


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено rshadow , 16-Окт-12 18:12 
Что только не придумают лишь бы PHP, Python, Perl, Rubi ... в браузер не интегрировать.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Виктор , 16-Окт-12 19:00 
> Что только не придумают лишь бы PHP, Python, Perl, Rubi ... в
> браузер не интегрировать.

s/Rubi/Ruby/


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено зачем имя анониму , 16-Окт-12 20:30 
в браузерах вполне достаточно одного недоязыка

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено vasek , 31-Окт-12 22:29 
да и то щас его ярые rails-ruby-онанисты выпиливают и пытаются запилить coffeescript, а он еще лучше, в конце концов он компилируется в JavaScript!

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено ВовкаОсиист , 16-Окт-12 20:15 
Оно умеет компилится в arm?

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Aquarius , 16-Окт-12 22:04 
> Оно умеет компилится в arm?

http://tsya.ru/


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено ВовкаОсиист , 16-Окт-12 23:24 
Ъ

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Loooooker , 16-Окт-12 20:33 
> Вместо классов ('class') теперь предлагается использовать более простые структуры ('struct').

То есть, все таки больше С, чем С++.
Если бы он еще CUDA/OpenCL мог использовать (у них вроде как раз печально с классами), тогда вполне мог бы стать примечательным.


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 16-Окт-12 20:39 
> Если бы он еще CUDA/OpenCL мог использовать

ЭЭэ так если заявлен простой интерфейс с си... ?

В общем то задумка неплохая, но для демонстрации возможностей мозилле надо как минимум переписать на этом свой браузер :)


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 16-Окт-12 21:59 
> В общем то задумка неплохая, но для демонстрации возможностей мозилле надо как минимум переписать на этом свой браузер :)

https://github.com/mozilla/servo


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 17-Окт-12 03:53 
> https://github.com/mozilla/servo

Ну так это только движок. Вот если они на этом файрфокс перепишут и получат +200 к производительности и +50 к крутизне концепций - это будет разговор :)


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 18-Окт-12 12:02 
>у них вроде как раз печально с классами

С классами и метапрограммированием в CUDA всё ОК, нет только виртуальных методов. В любом случае, использовать полиморфизм в SIMT вычислениях - полная глупость.


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Anonus , 16-Окт-12 22:08 
> Аккуратная работа с памятью - никаких нулевых и потерянных указателей. Автоматическое управление памятью;

Как это понимать ? Указатель нужно всенепременно инициализировать ? Что значит в данном контексте потерянный указатель ?


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

Эта как ?


> Статическая, нативная компиляция с созданием исполняемых файлов ELF, PE, Mach-o;

Где тогда сборщик мусора проживает ? Или он в тот же самый файлец прописывается ? Это какого же размера он тогда будет ?

А если на этом чуде скажем динамическую библиотечку написать, где будет жить сборщик мусора ?


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Xasd , 16-Окт-12 22:44 
> Или он в тот же самый файлец прописывается ? Это какого же размера он тогда будет ?

где тут фантастика-то?

в Python -- сборщик мусора умещается внутри libpython2.XXX.so.YYY.ZZZ и вродебы это не занимает немыслеммое число мегобайт :-D


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Anonus , 16-Окт-12 23:02 
А еслиф ахота всё статически слинковать, чтобы не зависеть от тантайма на конкретной машине ?

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Anonus , 16-Окт-12 23:05 
> А еслиф ахота всё статически слинковать, чтобы не зависеть от тантайма на
> конкретной машине ?

"тантайма" читать как "рантайма"


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 17-Окт-12 03:55 
> "тантайма" читать как "рантайма"

А как насчет "еслиф" и "ахота"? Граммар-наци, тащи ружье! :)


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 17-Окт-12 03:54 
> А еслиф ахота всё статически слинковать, чтобы не зависеть от тантайма на конкретной машине ?

Походу программист из вас такой же как писатель коментов.



"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Anonus , 16-Окт-12 23:07 
> в Python -- сборщик мусора умещается внутри libpython2.XXX.so.YYY.ZZZ и вродебы это не
> занимает немыслеммое число мегобайт :-D

В статье написано "СТАТИЧЕСКАЯ НАТИВНАЯ КОМПИЛЯЦИЯ" - делаем упор на слово статическая.
Или тогда надо пояснить что сие означает.


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Ищавин , 17-Окт-12 00:09 
> Что значит в данном контексте потерянный указатель ?

Не найденный сборщиком, как я понимаю.

>> Крайне легкие задачи, формируемые в виде сопрограмм. Лёгкость в порождении тысяч и миллионов подпроцессов;
> Эта как ?

Это без минимум одного мегабайта на новый поток, как в C.


> Где тогда сборщик мусора проживает ? Или он в тот же самый файлец прописывается ? Это какого же размера он тогда будет ?

Так же как и у Go.


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Anonus , 17-Окт-12 00:59 
> Это без минимум одного мегабайта на новый поток, как в C.

И кто будет "рулить" этим хозяйством, ОС или они сами?

Слово "подпроцессы" по отношению к Венде, которую они тоже поддерживают, совершенно непонятно. Там либо нормальные процессы либо потоки, и то и другое "разруливается" самой ОС. При создании потока в Венде не обязательно иметь мегабайт стека, можно указать сколько надо.

Коротко говоря, нифига не понятно с этими миллиардами легковесных "подпроцессов".

Надежда тока на Ищавина, может он растолкует.


"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Ищавин , 17-Окт-12 01:30 
Я без понятия как в винде, насколько я понимаю, идеология та же, что у Go и Erlang, никаких системных потоков и процессов не создается, все в одном и том же адресном пространстве одного процесса. Это в общем случае. На практике, создается по одному «контролирующему» процессу на ядро, который и выполняет эти легковесные потоки со своим встроенным планировщиком. По факту система управляет только этими оболочками в которых находятся «подпроцессы». К сожалению, более конкретно я не могу рассуждать, так как не моя стихия.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Anonus , 17-Окт-12 23:38 
Получаются "зелёные потоки", то есть они сами "унутре" всем рулят.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено NavDotRu , 17-Окт-12 19:53 
Если я правильно помню, в Win есть унаследованные еще с Win16 API для управления нитями - вполне себе легковесные потоки в UserSpace. Правда они работают в режиме кооперативной многозадачности и должны сами отдавать управления. Если данный функционал в Rust  реализован подобным способом, то возникает вопрос, как обрабатывается ситуация блокировки на вводе-выводе, или, например, бесконечный цикл.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 17-Окт-12 09:33 
Во сколько раз медленнее C++, кто проверял?
А то пишут, в 10 раз медленнее и другие отрицательные моменты.

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено mumu , 17-Окт-12 21:10 
Никто не будет заниматься оптимизацией компилятора на этапе разработке ещё синтаксиса языка

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 19-Окт-12 10:03 
Какой же у него жуткий синтаксис...

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено Аноним , 20-Окт-12 14:47 
Сколько еще будет языков, созданных лишь потому, что кому-то хочется, чтобы Python или Javascript был похож на C?

"Проект Mozilla выпустил язык программирования Rust 0.4"
Отправлено vasek , 31-Окт-12 22:33 
> Rust

хорошее название =)