The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проект Mozilla выпустил язык программирования Rust 0.4"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от opennews (??) on 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-notes). При подготовке новой версии основное внимание было уделено стабилизации синтаксиса языка и реализации поддержки передачи результатов функций через указатели. Поддержка ранее используемого метода передачи аргументов прекращена. Из других важный улучшений можно отметить начальную поддержку 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...
Новость: https://www.opennet.ru/opennews/art.shtml?num=35097

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проект Mozilla выпустил язык программирования Rust 0.4"  +3 +/
Сообщение от Аноним email(??) on 16-Окт-12, 16:42 
Для каждого языка должны быть samples легкодоступны, чтобы на практике и наглядно  показывать зачем Это и его(языка) возможность
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

9. "Проект Mozilla выпустил язык программирования Rust 0.4"  +1 +/
Сообщение от Виктор (??) on 16-Окт-12, 18:58 
Чем-то Ruby напомнило
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Ищавин (ok) on 16-Окт-12, 19:25 
Вот да, только не ясно зачем for, если логичнее просто [el1, el2, el3].each |el|
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Проект Mozilla выпустил язык программирования Rust 0.4"  +3 +/
Сообщение от user (??) on 16-Окт-12, 20:04 
for позволяет использовать break.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

14. "Проект Mozilla выпустил язык программирования Rust 0.4"  +1 +/
Сообщение от Ищавин (ok) on 16-Окт-12, 20:17 
Да, и правда так. Спасибо за объяснение.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

31. "Проект Mozilla выпустил язык программирования Rust 0.4"  –1 +/
Сообщение от ан0нимус email on 17-Окт-12, 03:04 
А кто мешает в итераторе использовать break?

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

32. "Проект Mozilla выпустил язык программирования Rust 0.4"  +2 +/
Сообщение от Ищавин (ok) on 17-Окт-12, 03:32 
Разговор о Rust, а не о Ruby.
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

37. "Проект Mozilla выпустил язык программирования Rust 0.4"  –1 +/
Сообщение от Аноним (??) on 17-Окт-12, 09:47 
а зачем в ruby break, если вместо each можно использовать [1,2,3].detect{|x| condition }?
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

2. "Проект Mozilla выпустил язык программирования Rust 0.4"  –2 +/
Сообщение от Pickle on 16-Окт-12, 16:45 
Даешь кол-во Яп = кол-во программистов
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Проект Mozilla выпустил язык программирования Rust 0.4"  +3 +/
Сообщение от taliano (ok) on 16-Окт-12, 17:17 
Ну как что. Напишите на нем незаменимый софт и зарабатывайте на его поддержке всю оставшуюся жизнь.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Проект Mozilla выпустил язык программирования Rust 0.4"  +2 +/
Сообщение от Очередной Анонимус on 16-Окт-12, 17:54 
Разработчики Mathematica и AutoCAD гарантируют это.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

19. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Aquarius (ok) on 16-Окт-12, 22:02 
есть одна проблема: в таком случае, кто-то должен для вас поддерживать сам язык, точнее интерпретатор/компилятор и средства разработки
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

28. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от pro100master (ok) on 17-Окт-12, 00:20 
например написать быстро, минут за 20, какую-нибудь одно-двух- разовую утилитку - самое милое дело на каком-нибудь простом и быстром языке )
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

43. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Аноним (??) on 18-Окт-12, 13:10 
Shell, не?
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

46. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от pro100master (ok) on 22-Окт-12, 00:59 
> Shell, не?

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

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

8. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от rshadow (ok) on 16-Окт-12, 18:12 
Что только не придумают лишь бы PHP, Python, Perl, Rubi ... в браузер не интегрировать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

s/Rubi/Ruby/

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

15. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от зачем имя анониму on 16-Окт-12, 20:30 
в браузерах вполне достаточно одного недоязыка
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

47. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от vasek on 31-Окт-12, 22:29 
да и то щас его ярые rails-ruby-онанисты выпиливают и пытаются запилить coffeescript, а он еще лучше, в конце концов он компилируется в JavaScript!
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

13. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от ВовкаОсиист (ok) on 16-Окт-12, 20:15 
Оно умеет компилится в arm?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Проект Mozilla выпустил язык программирования Rust 0.4"  +4 +/
Сообщение от Aquarius (ok) on 16-Окт-12, 22:04 
> Оно умеет компилится в arm?

http://tsya.ru/

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

26. "Проект Mozilla выпустил язык программирования Rust 0.4"  +1 +/
Сообщение от ВовкаОсиист (ok) on 16-Окт-12, 23:24 
Ъ
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

https://github.com/mozilla/servo

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

42. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Аноним email(??) on 18-Окт-12, 12:02 
>у них вроде как раз печально с классами

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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


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

Эта как ?


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

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Anonus on 16-Окт-12, 23:02 
А еслиф ахота всё статически слинковать, чтобы не зависеть от тантайма на конкретной машине ?
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

35. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Аноним (??) on 17-Окт-12, 03:55 
> "тантайма" читать как "рантайма"

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

Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

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

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


Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

27. "Проект Mozilla выпустил язык программирования Rust 0.4"  +1 +/
Сообщение от Ищавин (ok) on 17-Окт-12, 00:09 
> Что значит в данном контексте потерянный указатель ?

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

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

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


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

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

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

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

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

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

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

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

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

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

41. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Anonus on 17-Окт-12, 23:38 
Получаются "зелёные потоки", то есть они сами "унутре" всем рулят.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

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

36. "Проект Mozilla выпустил язык программирования Rust 0.4"  +/
Сообщение от Аноним (??) on 17-Окт-12, 09:33 
Во сколько раз медленнее C++, кто проверял?
А то пишут, в 10 раз медленнее и другие отрицательные моменты.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

40. "Проект Mozilla выпустил язык программирования Rust 0.4"  +1 +/
Сообщение от mumu (??) on 17-Окт-12, 21:10 
Никто не будет заниматься оптимизацией компилятора на этапе разработке ещё синтаксиса языка
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

44. "Проект Mozilla выпустил язык программирования Rust 0.4"  –1 +/
Сообщение от Аноним (??) on 19-Окт-12, 10:03 
Какой же у него жуткий синтаксис...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

45. "Проект Mozilla выпустил язык программирования Rust 0.4"  –1 +/
Сообщение от Аноним (??) on 20-Окт-12, 14:47 
Сколько еще будет языков, созданных лишь потому, что кому-то хочется, чтобы Python или Javascript был похож на C?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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