LINUX.ORG.RU

Rust 1.11

 


1

5

Команда разработчиков Rust рада представить релиз Rust 1.11. Rust — это системный язык программирования, при разработке которого внимание сосредоточено на безопасности, скорости и параллелизме.

Как обычно, вы можете установить Rust 1.11 с соответствующей страницы на официальном сайте, а также посмотреть примечания к выпуску на GitHub.

Основные изменения

  • Большая часть изменений касалась пока ещё нестабильных внутренностей компилятора. Началась работа над инкрементальной компиляцей и переходом на MIR. В этом выпуске были заложены основы для этих возможностей.
  • В выпуске 1.10 был введён новый формат контейнеров cdylib, который используется при компиляции кода на Rust для встраивания в другие языки. До этого момента поддержка cdylib была реализована только в компиляторе, теперь эта возможность стала доступна и в Cargo.
  • В стандартной библиотеке изменилась функция хэширования по умолчанию с SipHash 2-4 на SipHash 1-3.

Стабилизации библиотеки

  • В BinaryHeap, BTreeMap, и BTreeSet добавлен метод append.
  • В BTreeMap и BTreeSet добавлен метод split_off.
  • Методы to_degrees и to_radians ранее были реализованы для f32 и f64 в libstd, теперь они также доступны в libcore.
  • В Iterator добавлены два новых метода: sum и product.
  • Cell и RefCell получили метод get_mut.
  • assert_eq!, как и assert!, теперь принимает пользовательское сообщение об ошибке.
  • Главный поток теперь называется “main” вместо “<main>”.

Cargo

  • Добавлена поддержка цвета для Windows-консолей, и вы можете теперь конфигурировать цвета для stderr так же, как и для stdout.
  • Скрипты сборки теперь могут выдавать предупреждения.
  • Как было упомянуто выше, добавлена поддержка cdylib-контейнеров.
  • Cargo теперь предотвращает публикацию контейнеров при наличии изменённых файлов или файлов, которые не являются частью рабочего дерева.

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Kilte (всего исправлений: 9)

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

В контексе такой нетривиальной задачи как гуй не путаю. Тут структурками не обойтись

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

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

Благодаря тому, что они на GObject

Нет, благодаря тому, что создание нового виджета ничем не отличается от расширения старого. А расширение старого - это банальная возможность выставить свои обработчики для событий (отрисовка/мышь/etc.). И никакого GObject это не требует в принципе. А дальше уже поверх сишного API в каждом языке делай так, как там лучше будет вписываться. В С++, например, в обертку можно виртуальные методы выписать, который будут этими обработчиками.

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

Ну такое. Плюсовые шаблоны вообще мало кто умеет.

Но в обычной работе QtC намного лучше дополняет, чем racer. И работать в нём приятнее. Clang-code-model реально тугой, это да. Но это не вина QtC.

Использую sublime + racer + rustc-linter.

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

Да, будет выглядеть отвратительно - прямо как GObject/GTK, но что делать.

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

void on_clicked( QObject* sender, void* user_data ) {
    qobject_set_property( sender, "text", qarg_pchar("Clicked") );
}

int main( int argc, char** argv ) {
    QObject* app = qobject_new( "QApplication", qarg_int( argc ), qarg_pchar_pchar( argv ) );

    QObject* btn = qobject_new( "QPushButton", qarg_pchar( "Hi!" ) );
    qobject_connect( btn, "clicked", on_clicked, NULL );
    qobject_call( btn, "show" );

    qobject_call( app, "exec" );
}

Для создания такого интерфейса к С надо написать минимум кода, и хоть он ес-но не все покроет (и не все нужно на самом деле), но диалоги/кнопочки создать будет можно. Ну и ес-но это пример именно интерфейса, чтоб писать обертки, а не интерфейса, чтоб прямо в С относительно удобно писать GUI на Qt.

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

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

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

Ну вот QtWidgets использует ООП по полной, и как его заменить композицией/агрегацией - совершенно не понятно.

На Rust пилят свой GUI - conrod, но он еще в дикой альфе. Хз получится ли у них сделать удобный API, даже с учётом ништяков раста.

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

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

В системах pip и rubygems такого бардака нет. Я как увидел этот npm, он меня сразу поразил своей мусорностью.

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

Я как увидел этот npm, он меня сразу поразил своей мусорностью.

Тогда в crates.io не заходи. По крайней мере пока. Я поставил какую-то игру, запустил, а она мне в консоль Hello, world вывела. Три других не скомпилялись вообще

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

Я поставил какую-то игру

Он для либ, вообще-то. И все что имеет публичные релизы работает нормально. Я знаю только одну кривую либу - conrod. Он у меня не собирается. Но он альфа, поэтому не страшно.

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

Нет конечно. Но человек же поразился именно мусорностью

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

правильные вещи не всегда побеждают.

Лалка. Ты про «экономику qwerty» слышал когда-нибудь?

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

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

Это такой сарказм? Там же лютый треш и угар. Достаточно посмотреть на их представление про «powerful layout and positioning». Люди смотрят на гуй глазами человека из 80-х.

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

Лалка. Он об этом же и написал.

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

Хз, ничего не имею против инстанциирования виджетов в draw-цикле.
С нынешними мощностями и применением какого-нибудь кэширования виджетов и переиспользования кучи так это вообще идеальный вариант.
Кто и застрял в 80х так это люди, которые бредят static layouts и разметкой при компиляции.
На immediate widgets ты можешь что угодно построить, хоть HTML DOM прикручивай и скрипты на JS и рули как хочешь.

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

Кто и застрял в 80х так это люди, которые бредят static layouts и разметкой при компиляции.

Это ты бредишь или просто не понимаешь простых вещей. У них тупо нет понятия size hint, size constraints, height for width и пр. Нет понятия лайаутов аналогичных Qt/GTK. Все что они могут - как раз по сути статично распихать виджеты по позициям и не дышать на них, не ресайзить окно, не менять dpi, не менять текст/содержимое и т.д. Потому-что при любом изменении у них гуй разлетется по всем швам.

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

Поясни простые вещи, в таком случае. Я не отрицаю, что опыта у меня нет в гуях, я ими не занимался и, если честно они меня интересуют на уровне простых визуализаций, для которых эта либа — топ.

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

Ты точно смотрел примеры кода и описание в документаци?

Да, и запускал. Почему ты думаешь у них сколько-нибудь сложные примеры не ресайзятся вместе с окном (тормоза отрисовки - отдельный вопрос)? Потому-то их «powerful layout and positioning» умеет только статично расставить виджеты. Максимум - растягивать без всякой привязки к содержимому.

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

Потому-то их «powerful layout and positioning» умеет только статично расставить виджеты.

Оно еще в pre-alpha же, подожди. Хотя я тоже слабо представляю как можно без костылей это реализовать.

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

Поясни простые вещи, в таком случае

http://doc.qt.io/qt-5/images/lineedits-example.png

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

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

Ну вот и ее авторы видимо смотрят на нее так же. А если нет - им явно стоит посмотреть аналоги, чтоб вовремя начать переписывать.

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

Оно еще в pre-alpha же, подожди.

Дело не в pre-alpha, не в недоделанности, а в том что они выбрали кривую концепцию и очевидно не считают ее кривой.

anonymous
()

Сначала появляется философия которая должна облегчить жизнь программисту. После её применения то что решалась 10 строчками расползается на 20. Нет. не надо. ООП хорошо себя зарекомендовал. Не хотите ООП? Добро пожаловать в 80(подставте другую цифру если хотите). Потом в 2030 вы переизобретёте ООП и в 2050 ваша философия будет реализована в виде пруфа того что это работает. Только Gtk не трогайте.

anonymous
()

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

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

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

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

Вот добавят оператор '?' в стабильную ветку - тогда и будет срач на тему синтаксиса.

Наоборот, станет меньше поводов для срача.

anonymous
()

Главный поток теперь называется “main” вместо “<main>”.

А ведь могли бы и в “mn” переименовать. Добрейшей души́ люди!

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

Я не разделяю это неправильное мнение.

Ну, по факту это уже так. «Если твое представление о мире не соответствует объективной реальности, кому от этого хуже, тебе или реальности?»

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

AlexM ★★★★★
()
Ответ на: комментарий от X-Pilot

«правильное мнение» ... разбилось о реальность.

А из-за чего, кстати? Экслипс-то упаковали. И для енд-лузера установка IDE'шки через rpm/dpkg всяко удобнее тех супер-нупер инсталляторов, после которых приходится потом ходить и руками дочищать права и прочие .desktop-ы.

AlexM ★★★★★
()

Добавлена поддержка цвета для Windows-консолей

Ну офигеть, HKT с монадами пилили бы лучше.

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

Требования к реалтайму немного разные в умном доме и госпитале/электростанции/дроне/etc.

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

А вот на D GUI https://github.com/buggins/dlangui

Кроссплатформенное (Linux, OSX, Win), поддерживает OpenGL. Layouts, темы и ресурсы похожи на Android API. Начальная поддержка Андроид.

Скриншоты: http://buggins.github.io/dlangui/screenshots.html

Вот пример приложения на DlangUI - IDE. https://github.com/buggins/dlangide

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

Не-не-не, не нужно. Уноси обратно.

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

А вот на D GUI

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

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

То есть GObject нужен ровно для того, чтобы расширять Gtk.

Не, это универсальная объектная система, с которой можно работать из разных языков, написав небольшой слой совместимости (gobject introspection). Малой кровью можно притащить в язык объекты, написанные на си — удобно для написания биндингов. К тем же культям полноценный биндинг есть только для питона, например. Остальные через одного лепят все на qml.

Например, для раста уже есть полноценные биндинги для гтк и гстримера, а как там у культей дела? Только qml.

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

HIG
22.08.2016

Во-первых, в каджой версии ОС/тулкитов HIG меняется (Дуров Кук гей, верни скевоморфинг)

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

В-третьих, покажи мне натив в GUI фотошопа и других больших проектах

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

В-третьих, покажи мне натив в GUI фотошопа и других больших проектах

Microsoft Office на macOS и Windows.

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

Не нужно переносить свой манямирок на реальность.

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

HKT с монадами пилили бы лучше.

Уолтон скептически относится к монадам.

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

Во-первых, в каджой версии ОС/тулкитов HIG меняется

Адаптируйся, при наличии достойных альтернатив пользователь уйдет к конкуренту.

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

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

В-третьих, покажи мне натив в GUI фотошопа и других больших проектах

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

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