LINUX.ORG.RU

Релиз языка программирования Rust 1.39

 ,


1

8

Rust — мультипарадигмальный компилируемый язык программирования общего назначения, спонсируемый Mozilla, сочетающий парадигмы функционального и процедурного программирования с объектной системой, основанной на типажах, и с управлением памятью через понятие «владения».

Что нового в версии 1.39:

  • стабилизирован новый синтаксис асинхронного программирования, основанный на функции «async», блоке async move { … } и операторе «.await»;
  • разрешено указание атрибутов при определении параметров функций, замыканий и указателей на функции. Поддерживаются атрибуты условной компиляции (cfg, cfg_attr), управляющие диагностикой через lint и вспомогательные атрибуты вызова макросов;
  • стабилизирован «#feature(bind_by_move_pattern_guards)», который позволяет использовать переменные с типом привязки «by-move» в шаблонах;
  • предупреждения о проблемах при проверке заимствования переменных c использованием NLL переведены в разряд фатальных ошибок;
  • в пакетный менеджер cargo добавлена возможность использования расширения «.toml» для файлов конфигурации.

С полным списком изменений можно ознакомиться на сайте разработчика.

>>> Источник

★★★★★

Проверено: cetjs2 ()

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

Ключевые аргументы - сишка фундаментальна и можно реализовать любые нужные тебе концепции + самые большие и сложные в мире программы пишут только на С/С++. Это главное.

40-летний шлак

Даже с такой логикой си выигрывает. 40-летний шлак, на котором написано множество программ, лежащих в основе всего современного it (покажи мне прикладуху, которая может работать вообще без ОС и libc, прошивка микроконтроллеров - это не прикладуха) по умолчанию выигрывает у 10-летнего шлака (та же логика, а не лицемерие), на котором не написано ни одного проекта уровня линукса, да хотя бы браузера (от начала до конца, а не только движок). Редокс не используют в продакшене.

Почему сразу идиоты?

Потому, что кричат громкие лозунги без единого обоснования. Либо маркетолог на зарплате, либо идиот. Растофанаты поумнее включают голову и выдают хоть какие-то технические аргументы.

Вот демонстрация того, почему это бесит нормальных людей.

Допустим, кто-то заявил: «RazrFalcon любит раст потому, что все люди: здоровые и больные, живые и мёртвые любят раст. А кто пишет, что не любит раст - просто врёт.» Нормальная 1-я часть «RazrFalcon любит раст», но просто долбанутый конец «потому, что …» И именно это «потому что» бесит, несмотря на нормальное начало.

А кто-то другой написал: «RazrFalcon любит раст. Ведь он явно писал об этом на лоре». Здесь нормальные обе части, никаких претензий.

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

C/C++ действительно говно. Или у вас есть аргументы использовать 40-летний шлак?

Ты вот взял и проигнорировал все стандарты для данных языков.

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

Всегда был, если у тебя не может не быть объекта, то это ссылка(&), а не указатель.

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

Самый топовый язык на сегодня.

лмао

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

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

Например, на нём довольно херово делать прототип, когда цена разработки более важна чем сложность сопровождения

А если я знаю руст, но не знаю похапэ, стоит ли мне делать прототип на похапэ?

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

Или это не полный список курсов?)

раньше сразу все видео были открыты. Щас надо тест проходить на усвоенный материал и регистрироваться. Там чем дальше, тем интереснее :) но уровень да, базовый. Но проект развивается — успехов ему )

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

Риал гикс код он линукс (запускает виртуалку с убунтой на маке)

Жиза. В моем мухосранске элита понакупила макбуков потомушта модно, выстраиваются стройными рядами в сервисы за виндой на буткэмпе или виртуалбоксе (если SSD не позволяет дуалбут. Брали же подешевше, 120Гб)

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

Риал гикс код он линукс (запускает виртуалку с убунтой на маке)

Жиза

ей все можно. Не знаю почему другие девушки это так явно не используют :)

В моем мухосранске элита понакупила макбуков потомушта модно, выстраиваются стройными рядами в сервисы за виндой на буткэмпе или виртуалбоксе (если SSD не позволяет дуалбут. Брали же подешевше, 120Гб)

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

Я тоже на бывшей работе начальнику на макбук винду ставил, ибо макось он не осилил )

pihter ★★★ ()
Ответ на: комментарий от fsb4000
#include <iostream>

void print_int( int& a ){
    std::cout << a << std::endl;
}

int main(){
    int* t = NULL;
    print_int(*t);
}
WatchCat ★★★★★ ()
Ответ на: комментарий от pihter

ей все можно. Не знаю почему другие девушки это так явно не используют :)

Напротив, впору недоумевать, зачем они так часто этим злоупотребляют. Вон сколько примеров в интернете. Купят макбук и давай туда виртуалки накатывать

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

Я имел в виду, что ей все простительно, пока она голая. Может хоть виртуалку с убунтой, хоть готу пользоваться )

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

А по делу: не вижу особого зла в накатывании виртуалок и работы в них: вон, какой-нибудь андроид – бай дизайн виртуалка поверх линукса и ничего.

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

на котором не написано ни одного проекта уровня линукса

Не так давно это же относилось и к сям.

без единого обоснования

Это ты без единого обоснования написал. А вдруг, то, о чём они говорят, работает именно так, как в «рекламе»?

DonkeyHot ★★★★★ ()
Последнее исправление: DonkeyHot (всего исправлений: 1)

Они столько уже туда понапихали, что понять всё это стало очень сложно, но оно всё ещё не работает. Идея создать безопасный язык без сборщика мусора была интересная, но реализация вышла не очень. Не зря Вирт ещё в 1990-ом утверждал, что за сборщиками будущее. По факту сходные по производительности языки типа go и D оказались существенно популярнее, потому что меньше заморочек.

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

на котором написано множество программ

Популярность держится не только из-за достоинств, но и из-за сложности перехода. Когда компьютеры были большие, программы - маленькие, хакеры не продавали 0-day уязвимости на закрытых аукционах, С был удачным компромиссом между возможностями предоставляемыми программисту и сложностью написания компилятора. Что и обусловило его широкое и, в некоторых случаях, безальтернативное использование. С тех пор много что изменилось.

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

D мертвый

Да ладно, а мы не знали. То, что вокруг него нет такого хайпа с хэлловордами, не значит, что он не нужен. Есть вот проекты типа многомерных массивов, развиваемые. Народу нужно. Есть vibe.d. Есть привязки к основным графическим либам. Есть, наверное, ещё много чего, просто я не в курсе.

Тут вопрос в том, что писать на D можно начать быстро и довольно естественно.

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

main.c

#include <stdlib.h>

int main() {
    int * arr;
    arr = (int*)malloc(100*sizeof(int));
    free(arr);
    arr[1] = 10;
    return arr[0];
}
$ gcc -Wall -Wextra -Wpedantic main.c
$ // Никаких предупреждений
red75prim ★★ ()
Последнее исправление: red75prim (всего исправлений: 2)
Ответ на: комментарий от fsb4000

Один компилятор поймал тривиальный случай use after free. Ну здОрово, да.

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

// Никаких предупреждений

clang и IDE, его использующие, обругают:

 
/home/user/test.cpp:7:12: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
    arr[1] = 10;
           ^
/home/user/test.cpp:5:17: note: Memory is allocated
    arr = (int*)malloc(100*sizeof(int));
                ^
/home/user/test.cpp:6:5: note: Memory is released
    free(arr);
    ^
/home/user/test.cpp:7:12: note: Use of memory after it is freed
    arr[1] = 10;
           ^
Serral ()
Ответ на: комментарий от Serral

Т.е. -Werror и статические анализаторы спасут всех. Тогда странно, что CVE-2019-8912 16 лет в ядре сидело и было найдено не статическим анализатором.

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

Сейчас Linux и Windows основные системы, немного использую FreeBSD, Хайку в ближайших планах. Просто не приятно осозновать будет что если захочется изучить какой-то аспект работы операционной системы придётся вникать в мяго говоря говнявый синтаксис Раста, чего не хотелось бы, а Си (ядро BSD и Linux) и Си++ (ядро Хайку) я знаю - можно сразу приступать к понимаюнию алгоритмов а не странного синтаксиса.

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

И откуда в программистах столько эстетов/снобов. Не гуманитарная профессия вроде бы.

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

А я не понимаю почему rust так уязвляет сишников и плюсовиков. Казалось бы придумали язык лучше, чем C++, так это же, во-первых, прекрасно, а, во-вторых, естественно — прогресс не стоит на месте. Так нет же, ворчат, недовольны чем-то. Почему?

У меня есть ложка дегтя.

Вне всякого сомнения, что Rust как язык замечателен. Он отлично спроектирован. Продуман. У него хорошая реализация. Однако, есть несколько моментов, которые не позволяют стать ему заменой ни C, ни C++.

Во-первых, в Rust нет стабильного ABI и вряд ли когда-нибудь будет, смотря на опыт компиляторостроителей C++. Rust умеет создавать либы, которые выглядят как сишные с поддержкой сишного ABI, но этого мало, чтобы заменить сишку в системщине.

Во-вторых, в Rust нет раздельной компиляции. Поэтому не может стать заменой C++. Чтобы кто что там ни говорил, идея раздельных заголовочных и объектных файлов по-своему является блестящим техническим изобретением (должна быть еще в Ada). Для нынче модного и вездесущего опенсорса и разработки in-house это глубоко фиолетово, а вот для коммерческих закрытых проектов все же это может быть очень важно.

Ну, и для кого-то еще важна переносимость. Например, для Эльбрусов можно считать пока, что Rust не существует. Лично мне становится грустно и печально от этого.

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

Во-первых, в Rust нет стабильного ABI

Всё выглядит так, что из WASM Interface Types со временем вырастет новое универсальное ABI на замену сишного морально устаревшего.

Во-вторых, в Rust нет раздельной компиляции.

Не нужно. Проприетарщина тоже не нужна.

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

не такие мусорные как в говнорасте.
Реализованы «зерокостом», т.е. из функции создаётся стейт-машина.

Хм... А ты точно в курсе, как они реализованы в Раст?

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

Это на таком простом примере тебе Werr поможет.
В некоторых случаях даже мощные статические анализаторы не спасут от сегфолта.

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

This file was generated by gir

Что тут еще можно комментировать?

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

Т.е. -Werror и статические анализаторы спасут всех.

От всех ошибок не спасут, как и Rust. Ошибки делают люди, а не ЯП. Чтоб делать меньше ошибок - надо меньше писать кода. Например, пореже использовать всякие new/delete/malloc/free. И с современным С++ это делать несложно. Другое дело, что школьников учат именно этим new/delete, вместо того, чтоб объяснить им, что это как unsafe в Rust - надо, но редко.

Тогда странно, что CVE-2019-8912 16 лет в ядре сидело и было найдено не статическим анализатором.

Если бы Linux был бы написан на Rust, то там было бы полно unsafe и подобных багов.

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

.е. -Werror и статические анализаторы спасут всех.

а borrow checker это что?

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

Что тут еще можно комментировать?

Например, что в генереном коде ты считаешь лишним или переусложненым. Вот чтоб как с С++ было мало кода и читабельного.

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

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

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

Т.е. ты предлагаешь обсудить, насколько хорошо генерилка генерит код?

Или можем попробовать обсудить выхлопы gRPC-шного/protobuf-ного генератора для С++. Вот уж где будут тонны жести.

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

Т.е. ты предлагаешь обсудить, насколько хорошо генерилка генерит код?

Да, покажи, что там не так.

Или можем попробовать обсудить выхлопы gRPC-шного/protobuf-ного генератора для С++

Можем.

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

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

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

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

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

Это шутка?

Это вера. Если бы он был разумно спроектирован и продуман, то осваивать его можно было бы быстро и через пару недель начинать писать на нём. Как на go, например.

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

вы решили поиграть в сектанта D? d - мертвый язычок, представляющий академический интерес.
и уж точно ничем не лучше rust

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

ну да, создатель rust бросил свой язык ради swift.
и да - изначально речь была о том, что d намного более популярен, чем rust, т.е. d популярен как go
это чушь.

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

И с современным С++ это делать несложно

Следить за отсутствием инвалидации итераторов, отсутствием выхода за границы в operator [], отсутствием data races, отсутствием UB. Таких несложно много набирается.

Если бы Linux был бы написан на Rust, то там было бы полно unsafe и подобных багов.

Поправлю. Там было бы меньше unsafe и подобных багов. В C весь код можно считать в блоке unsafe.

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

Это вера. Если бы он был разумно спроектирован и продуман, то осваивать его можно было бы быстро и через пару недель начинать писать на нём. Как на go, например.

Так и представляю название новой книги: «Освой полный курс Теории Вероятностей за 21 день (включает совершенно бесплатный полный курс по стохастическим интегралам, расчитаный на один день)». Картина маслом.

Не путай go и rust! Совершенно разные уровни.

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

Так есть же бесплатный курс на русском по расту как раз на две недели. 13 лекций, по одной в день.

Я постараюсь сам до конца года найти время на него…

https://compscicenter.ru/courses/rustprogramming/2019-spring/classes/4445/

fsb4000 ★★ ()
Последнее исправление: fsb4000 (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)