LINUX.ORG.RU

Приоритеты развития Rust после 1.0

 , ,


2

8

Опубликован план развития ЯП Rust после выхода версии 1.0, назначенной на май 2015 года, фанбоям и хейтерам будет одинакового интересно ознакомиться.

Задачи с высшим приоритетом:

  • Расширение стандартной библиотеки, в частности Filesystem APIs и Memory allocation APIs.
  • Улучшение поддержки ARM и Windows.
  • Ускорение компиляции, в частности добавление параллельной компиляции.
  • Упрощение распространения написанных на Rust приложений и библиотек, в частности реализация cargo install.
  • Расширение поддержки инструментария, в частности отладчиков и профайлеров, по возможности используя применяемые в С инструменты.
  • Реализация динамических деструкторов(?), что позволит избежать расходов на обнуление памяти при освобождении объектов.
  • Улучшенная поддержка аллокаторов.
  • Специализация трейтов, по типу специализации шаблонов в С++.
  • Виртуальные структуры - вариант реализации наследования.

Задачи с высоким приоритетом:

  • Улучшения в borrow checker'e.
  • Улучшения в макросах, в частности лучшая интеграция с модульной системой.

Некоторые долгосрочные задачи:

  • Передача типов с динамическим размером по значению.
  • Параметризация дженериков целочисленными значениями.
  • async/await/yield .
  • Типы высшего порядка.

Улучшения в макросах, в частности лучшая интеграция с модульной системой.

Было бы неплохо. Кто-то может кинуть ссылки на обсуждения по этой теме? А то сейчас импорт/экспорт макросов какой-то корявый, ну или я его не понимаю как следует.

Заинтересовался можно ли как-то конфликты разруливать, сделал пример - ожидал ошибку компиляции, но нет, выбирается просто последний макрос.

Расширение поддержки инструментария

Ещё такой вопрос знатокам - к play.rust-lang.org какой-то форматтер прикручен. Правда результат не всегда радует, но тем не менее. А есть ли что-то такое в виде отдельной тулзы? Помню, что читал, что его пилят, интересен прогресс.

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

Собственно да, так всегда и нужно делать. И совсем не сложно найти format.sh

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

Понадобилось ровно три клика

Ок, пристыдил меня. Вообще, просто не ожидал, что эта логика уже в компиляторе есть. Думал оно как раз в rust-playpen и реализовано.

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

это даже лучше, чем включение того макроса в стандартную библиотеку.

А чем лучше? В голову приходит дурацкое ограничение макроса, что внутрь него нельзя другие макросы заворачивать. Или есть ещё причины почему атрибут лучше?

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

А чем лучше? В голову приходит дурацкое ограничение макроса, что внутрь него нельзя другие макросы заворачивать. Или есть ещё причины почему атрибут лучше?

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

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

Я б еще упомянул, хоть оно и со среднеим приоритетом, обсуждение операторов try и ?

Посмотрел, местами интересно. Вот только с этим не согласен:

Requiring an explicit ? operator to propagate exceptions strikes a very pleasing balance between completely automatic exception propagation, which most languages have, and completely manual propagation

Имхо получилось ни то ни сё. Как сахар для «кодов возврата» получается не так уж изящно. Ну и «нормальными исключениями» это не является. Называли бы как-то иначе что ли.

DarkEld3r ★★★★★
()

Ясно. Еще несколько итераций в этом же направлении, и в rust'е должна появится частичная поддержка haskell.

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

Кто может объяснить, почему суровые сишкисты/крестовики настолько не могут в Result?

казалось бы, сишникам Result должен быть как бальзам на душу, да и в ++ часто приходится иметь дело с кодами возврата

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

Кто может объяснить, почему суровые сишкисты/крестовики настолько не могут в Result?

Про сишников не скажу, но как «крестовику» - не хочется отказываться от исключений. При этом стандартная библиотека построенная на Option/Result как раз нравится - исключения удобно иметь именно опциональными, а не на каждых чих, как в джаве/шарпе.

Паника - не совсем полноценная замена. Так как бывают случаи, когда ошибку надо пробросить на несколько уровней, но не «настолько далеко», чтобы ради этого заводить отдельный поток.

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

казалось бы, сишникам Result должен быть как бальзам на душу

Сишники в большинстве своём заскорузлые недоучки с понтами :)

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

Могут. Если речь о си, то там(где нет смысла в C++) не нужно. Если о C++, то исключения удобны.

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