The OpenNET Project / Index page

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

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

26.10.2018 11:05

Состоялся релиз языка системного программирования Rust 1.30, развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.

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

В подготовке нового выпуска приняли участие 178 разработчиков. Основные новшества:

  • Добавлена поддержка двух новых видов процедурных макросов: макросы похожие на атрибуты и макросы похожие на функции. Атрибутоподобные макросы напоминают ранее доступные произвольные макросы на базе механизма "derive", но кроме генерации кода только для атрибута "#[derive]" позволяют создавать собственные произвольные атрибуты, а также не ограничены работой только со структурами и перечислениями (enums). Макросы похожие на функции дают возможность определить макрос в форме вызова функции (например, "let sql = sql!(SELECT * FROM posts WHERE id=1);").
  • Добавлена возможность выноса макроса в текущую область видимости (scope) по аналогии функциями при помощи ключевого слова "use", без использования специальной аннотации "#[macro_use]";
  • Стабилизирован пакет (crate) proc_macro, предоставляющий API для упрощения создания макросов. В proc_macro также значительно расширен API для обработки ошибок, который уже задействован в пакетах подобных syn и quote;
  • Началась работа по упрощению системы создания модулей. Добавлена возможность использования ключевого слова "crate" в пути для отсылки к корню иерархии модулей, например, "crate::foo" ссылается на модуль "foo", размещённый в "src/lib.rs". При использовании внешних пакетов отныне не требуется указание префикса "::", например, вместо "json = ::serde_json::from_str(foo);" теперь можно писать "let json = serde_json::from_str(foo);". Логика разбора пути "a::b::c" выглядит следующим образом: если "a" является именем пакета, то в этом пакете осуществляется поиск "b::c"; если в "a" указано ключевое слово "crate", то поиск "b::c" осуществляется относительно корня иерархии модулей; иначе "a::b::c" извлекается из текущей позиции в иерархии модулей;
  • Добавлена возможность использования ключевых слов в качестве идентификаторов. Например, для создания локальной переменной с именем "for" можно указать "let r#for = true;", а для создания функции с именем "for" - "fn r#for() {". При вызове подобной функции следует использовать признак raw-идентификатора - "r#for();";
  • Добавлен атрибут "#[panic_handler]", предоставляющий возможность определения функции для обработки сбоев (panic) в Rust runtime. Подобное может оказаться полезным для сборки приложения без стандартной библиотеки, используя режим no_std;
  • Реализована возможность определения в макросах видимости ключевых слов, таких как "pub", используя спецификатор "vis";
  • Стабилизированы атрибуты для инструментов Rust, таких как rustfmt и clippy. Например, "#[rustfmt::skip]" может применяться отключения форматирования следующего элемента;
  • В разряд стабильных переведена новая порция API, в том числе Ipv4Addr::{BROADCAST, LOCALHOST, UNSPECIFIED}, Ipv6Addr::{BROADCAST, LOCALHOST, UNSPECIFIED}, Iterator::find_map;
  • Из-за неверной трактовки в функциях "trim_*" понятий "лево" и "право" для RTL-языков, данные функции переименованы: trim_left в trim_start, trim_right в trim_end, trim_left_matches в trim_start_matches, trim_right_matches в trim_end_matches;
  • В пакетный менеджер Cargo добавлен индикатор прогресса выполнения операций.


  1. Главная ссылка к новости (https://blog.rust-lang.org/201...)
  2. OpenNews: Mozilla и Xiph развивают реализацию видеокодека AV1 на языке Rust
  3. OpenNews: Выпуск интегрированной среды разработки Eclipse "Photon" с поддержкой языка Rust
  4. OpenNews: Выпуск libOS, unikernel на языке Rust для запуска приложений поверх гипервизора
  5. OpenNews: В Firefox добавлен CSS-движок Stylo, написанный на языке Rust
  6. OpenNews: Третий выпуск операционной системы Redox OS, написанной на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49503-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (118) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.7, Аноним (7), 12:00, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Добавлена возможность использования ключевых слов в качестве идентификаторов. Например, для создания локальной переменной с именем "for" можно указать "let r#for = true;", а для создания функции с именем "for" - "fn r#for()

    А я думал ХРУСТ сильнее испохабить уже невозможно, ан нет.

    Они начали на полном серьезе воспроизводить мемы времен младенчества языков программирования, когда можно было писать:



    IF = TRUE
    define THEN goto X:
    define ELSE goto Y:

    IF IF THEN THEN ELSE ELSE



     
     
  • 2.73, Аноним (73), 17:35, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    У вас FFI с библиотекой, имя символа в которой такое же, как какое-то ключевое слово в языке, что будете делать?
     
     
  • 3.75, Аноним (75), 18:10, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >У вас FFI с библиотекой, имя символа в которой такое же, как какое-то ключевое слово в языке, что будете делать?

    - Мама, что такое Name mangling???

     
     
  • 4.76, имя (?), 18:22, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Name mangling? В си? Да вы эстет!
     
  • 4.147, Аноним (147), 08:02, 30/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Причём здесь манглинг, дебик. Как ты напишешь в принципе в языке Функцию или любой другой символ, чьё имя есть ключевое слово? Никак. Напиши в сях переменную с именем register.
     

  • 1.9, Аноним (7), 12:14, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    >Из-за неверной трактовки в функциях "trim_*" понятий "лево" и "право"

    Как можно неверно трактовать понятие "Лево"??? Разработчки языка страдают аутизмом?
    >данные функции переименованы: trim_left в trim_start

    ФЕЙСПАЛМ. Вместо того что бы ДОБАВИТЬ функции trim_start и trim_end они их ПЕРЕИМЕНОВАЛИ. А если мне нужно обрезать строку имменно слева, вне зависимости от содержания, например для сериализации, что мне использовать?

    Ответ прост. Нужно использовать язык программирования разработанный не 15летними аутистами.

     
     
  • 2.11, Аноним (11), 12:31, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Скорее всего это про языки с письмом справа налево
     
     
  • 3.13, Аноним (7), 12:42, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    У Арабов ЛЕВО это не ЛЕВО?
    А если человек двуязычный?
    Как только он начинает писать по Арабски у него руки меняются местами?

    А что по поводу языков с письмом сверху вниз? Руки с ногами меняются?

    Разгадка то проста. Программисты мозиллы жопоруки, но тупы. Или тупы но жопоруки, в зависимотси от того что у них сейчас ЛЕВО.

     
     
  • 4.17, Аноним (17), 13:04, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Разгадка то проста. Программисты мозиллы жопоруки, но тупы. Или тупы но жопоруки,

    И только анонимы опеннета в шляпах, плащах и со шпагами …
    Причем, каждый второй аноним - правая рука Линуса (или левая рука Горшечника), каждый третий - тайный консультант и вдохновитель Кнута и Шнайера.

     
     
  • 5.40, Аноним (7), 14:09, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Из-за неверной трактовки в функциях "trim_*" понятий "лево"

    Я знаю где лево. Это делает меня умнее всех программистов мозиллы.
    А вам есть чем похвастаться?

     
     
  • 6.46, Аноним (17), 14:58, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +9 +/
    >>Из-за неверной трактовки в функциях "trim_*" понятий "лево"
    > Я знаю где лево.

    И? Вместо простых и понятных "start/end" будем продолжать использовать зависящих от отобажения/языка left/right? Т.е. встроим в trim_left и trim_right еще и распозновалку выводимого языка, до кучи.
    > Это делает меня умнее всех программистов мозиллы.

    Нет, всезнание и всеумение делает анонима опеннета анонимом опеннета.

    > А вам есть чем похвастаться?

    А я сумел в английский:
    > For (readers/users of) RTL languages, trim_right is hinting that it will be
    > trimming the prefix, but this is of course not the case (and similarly for
    > _left).

     
     
  • 7.48, Аноним (7), 15:22, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вы в мозилле работаете ЛЕВО и ПРАВО от языка не зависят А вот start end от яз... большой текст свёрнут, показать
     
     
  • 8.50, Аноним (17), 15:40, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для анонимов поясняю лево право в отображаемом выводе и представление байтиков ... большой текст свёрнут, показать
     
     
  • 9.54, Аноним (7), 15:57, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нет не нужна Вася ты понимаешь что строка мажет содержать и арабский и ASCII и ... большой текст свёрнут, показать
     
     
  • 10.57, Аноним (17), 16:06, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Поздравляю, ты наконец начал понимать Не должен Он вообще там нафиг не нужен ... текст свёрнут, показать
     
  • 10.86, ig0r (??), 20:10, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Дело в том что начало строки всегда начало, но в зависимости от языка строки кот... текст свёрнут, показать
     
  • 8.87, Sw00p aka Jerom (?), 21:46, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    старт и энд вообще-то - палка о двух концах логичнее лэфт, райт использовать ... текст свёрнут, показать
     
  • 4.26, Ordu (ok), 13:39, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лево у них лево Для них нулевой символ строки слева У них всё то же самое, но ... большой текст свёрнут, показать
     
     
     
     
     
    Часть нити удалена модератором

  • 8.49, Ordu (ok), 15:39, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем Если кто-то пользуется дурацкими моделями, почему я должен Есть меньшие ... большой текст свёрнут, показать
     
     
  • 9.80, Илья (??), 19:06, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вам что, помандеть негде ... текст свёрнут, показать
     
     
  • 10.82, КГБ СССР (?), 19:17, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В самом деле форум, как и парламент, не место для дискуссий ... текст свёрнут, показать
     
  • 9.90, Sw00p aka Jerom (?), 22:15, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    слева и справа - природные однозначные понятия меньшие или большие адреса о ко... текст свёрнут, показать
     
     
  • 10.103, Ordu (ok), 06:59, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А линейная память, о которой ты говоришь, не природное понятие -- это искусствен... текст свёрнут, показать
     
     
  • 11.106, Sw00p akaJerom (?), 11:10, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    натуральный ряд чисел тоже искуственное понятие пс даже в теории о больше-мень... текст свёрнут, показать
     
     
  • 12.107, Sw00p akaJerom (?), 11:13, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    сс ... текст свёрнут, показать
     
  • 12.108, Ordu (ok), 12:45, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно же Число -- это абстракция Чисел не существовало пока люди не придумал... текст свёрнут, показать
     
     
  • 13.110, Sw00p akaJerom (?), 15:03, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну тогда докажи почему 1 2 истина ... текст свёрнут, показать
     
     
  • 14.112, Ordu (ok), 16:45, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    По определению Я может своё математическое образование и забыл за 15 прошедших ... текст свёрнут, показать
     
     
  • 15.120, Sw00p akaJerom (?), 17:48, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    на досуге - Готлоб Фреге, Рене Декарт ... текст свёрнут, показать
     
  • 13.111, Sw00p akaJerom (?), 15:05, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Того чего не существует - не придумаешь пс придумай мне тут новую геометрическ... текст свёрнут, показать
     
     
  • 14.113, Ordu (ok), 16:49, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да ладно Всё ровно наоборот, ты не сможешь придумать то, что существует Смотри... большой текст свёрнут, показать
     
     
  • 15.116, Sw00p akaJerom (?), 17:37, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален Такс начнём по-порядку, про квадрат было ожидаемо так... большой текст свёрнут, показать
     
  • 14.114, Ordu (ok), 16:51, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я не буду придумывать, я приведу чужие придумки, ок Тебе двух хватит 1 Бутылк... текст свёрнут, показать
     
     
  • 15.117, Sw00p akaJerom (?), 17:39, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ясно, не придумал... текст свёрнут, показать
     
  • 14.115, Ordu (ok), 16:59, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя если подумать чуть глубже, то выходит как в первом моём комменте любая гео... текст свёрнут, показать
     
     
  • 15.118, Sw00p akaJerom (?), 17:43, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    какими свойствами обладает твоё понятие точка , опиши и я скажу - видел или нет... текст свёрнут, показать
     
     
  • 16.122, Ordu (ok), 18:08, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Как неловко признавать свою неправоту, да Будем теперь крутиться ужом на сковор... текст свёрнут, показать
     
     
  • 17.128, Sw00p aka Jerom (?), 00:05, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Открой Основания Геометрии Гильберта и узнай что есть геометрическая точка аг... текст свёрнут, показать
     
  • 15.119, Sw00p akaJerom (?), 17:46, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    самое интересное пропустил , а будет ли существовать то, у чего размер равен н... текст свёрнут, показать
     
     
  • 16.124, Ordu (ok), 18:24, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Если не будет существовать, то ты слил в споре геометрическая точка придумана ч... текст свёрнут, показать
     
     
  • 17.129, Sw00p aka Jerom (?), 00:08, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Читай Гильбертово определение точки не говори никогда никогда а типа фотон... текст свёрнут, показать
     
  • 15.121, Sw00p akaJerom (?), 18:03, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Декарт ясно сказал, мыслю - значить существую Поправлю его, всё что мыслимо то... текст свёрнут, показать
     
     
  • 16.123, Ordu (ok), 18:13, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Если ты правишь Декарта, то тогда научись сначала пользоваться языком как следуе... текст свёрнут, показать
     
     
  • 17.130, Sw00p aka Jerom (?), 00:20, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    выйди сначала из порочного круга, Все критяне лжецы, сказал критянен Не идея ... большой текст свёрнут, показать
     
     
  • 18.132, Ordu (ok), 11:11, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И как всегда ошибаешься... текст свёрнут, показать
     
  • 18.143, anonymous (??), 00:20, 30/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну что за глупость Понятие пространство-время не заменило эфир Это понятие _из... текст свёрнут, показать
     
     
  • 19.144, Sw00p aka Jerom (?), 01:11, 30/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вот с такого утверждения начинает дискуссию всякий глупец Вам в школе проходили... большой текст свёрнут, показать
     
     
  • 20.151, Анонимный Алкоголик (??), 08:06, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну как не связывал В доэйнштейновской классике Эфир, как и всё прочее, сущест... текст свёрнут, показать
     
  • 21.160, Sw00p aka Jerom (?), 23:05, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    не вижу примера связи времени с эфиром ... текст свёрнут, показать
     
  • 10.133, None (??), 14:39, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Юноша не застал холивары на тему, на карте распределения памяти адрес 0 размещат... текст свёрнут, показать
     
     
  • 11.136, Sw00p aka Jerom (?), 17:22, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    вы у нас тут застали холивар о палке о двух концах ... текст свёрнут, показать
     
  • 9.92, Аноним (-), 22:58, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Почему же, с точки зрения железа лучше всего если софт работает так как оно реал... текст свёрнут, показать
     
     
  • 10.98, Sw00p aka Jerom (?), 00:16, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    быстрота алгоритма определяется Колмогоровской сложностью, а не железом ... текст свёрнут, показать
     
  • 5.47, Moomintroll (ok), 14:59, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Лево у них лево. Для них нулевой символ строки слева. У них всё то же самое, но ментальная модель строки перевёрнутая, из-за чего "left" и "right" не работает. А вот "start" и "end" будучи гендерно-нейтральными словами, работают и с твоей ментальной моделью строки, и ментальной моделью араба.

    Вы здесь перепутали всё с точностью до наоборот.

    Как Вы (и прочие высказавшиеся ранее) сказали - лево и право у всех одинаковые.

    А вот как раз «"start" и "end" будучи гендерно-нейтральными словами» работают по разному - у европейцев старт слева, а у арабов спарава.

     
     
  • 6.52, Ordu (ok), 15:44, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А, да вы правы Это у нас нулевой байт слева, у них он справа А это совершенно ... большой текст свёрнут, показать
     
     
  • 7.81, Аноним (81), 19:08, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Щас найдёлся еще один, который начнёт утверждать что все на самом деле не правы, и вероятно кто-то считает нулевой символ концом строки.
     
  • 7.152, Анонимный Алкоголик (??), 08:25, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А, да вы правы. Это у нас нулевой байт слева, у них
    > он справа.

    Да нет. Нулевой байт и у них и у нас справа. Только у нас нулевой байт равен нулю, а у них имеет нулевое смещение... >:-)
    >:-)
    >:-)

     
     
  • 8.153, Ordu (ok), 12:49, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я никогда не думал, что люди настолько не в состоянии отличать реальность от илл... текст свёрнут, показать
     
  • 5.88, Sw00p aka Jerom (?), 21:51, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    выше написал - все споры ведут к палке о двух концах!!!
     
  • 4.78, Илья (??), 18:59, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Старт у строки там где символ с индексом "0".
    Конец у строки - там индекс будет длина-1.
    А Лево и право - это скорее к вопросу отображения локали.

    Всё правильно сделали. А вы зря расходуете свои нервы по пустякам

     
     
  • 5.91, Sw00p aka Jerom (?), 22:21, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нарисуйте на бумаге ряд ячеек, и поставьте в начальной (стартовой) ячейке индекс 0, она будет слева или справа?

    пс: у англосакса (или немца), который проектировал линейную модель памяти как по вашему где стоял бы индекс 0?

     
  • 3.102, Аноним (102), 06:18, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Скорее всего это про языки с письмом справа налево

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

     
  • 2.16, Аноним (17), 13:03, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Как можно неверно трактовать понятие "Лево"??? Разработчки языка страдают аутизмом?

    Нет, но есть подозрение, что анонимы не умеют в аглицкий:

    https://github.com/rust-lang/rust/issues/30459



    str's trim_left and trim_right implicitly assume LTR text #30459
    Closed
    huonw opened this Issue on 18 Dec 2015 · 18 comments

    These functions and their _matches variants operate on the start and end of the string, which are only the left and right (respectively) of the displayed text when rendered left-to-right like English. For (readers/users of) RTL languages, trim_right is hinting that it will be trimming the prefix, but this is of course not the case (and similarly for _left).



     

     ....большая нить свёрнута, показать (57)

  • 1.18, Ordu (ok), 13:09, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлена поддержка двух новых видов процедурных макросов

    Наконец-то они вынесли это из nighly. Ряд проектов теперь сможет перейти на stable rust.

     
     
  • 2.63, Аноним (7), 16:29, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Ряд проектов

    Оба?

     
     
  • 3.69, Ordu (ok), 16:49, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Я сталкивался с этим, действительно в двух проектах Но они позволяют определять... большой текст свёрнут, показать
     
  • 2.93, Аноним (-), 23:03, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по всему теперь у плюсов появился наконец достойный конкурент В нечитаемом... большой текст свёрнут, показать
     
     
  • 3.104, Ordu (ok), 07:05, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я не очень понимаю о каком нечитаемом коде в rust'е говорят люди. От тебя я слышу это не в первый раз, но до сих пор мне не приходилось сталкиваться с кодом на rust'е, который не был бы прозрачен. Поэтому я очень приветствую конкретные ссылки на код. Любопытно посмотреть.
     
     
  • 4.141, Илья (??), 08:58, 29/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/antoyo/relm/blob/7e1baa6a62b2db5917720a1d871ade6d21486ad0/e

    Простой пример: Не обращаясь к документации найдите объявление структуры Counter.

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

     
     
  • 5.142, Ordu (ok), 10:32, 29/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не обращаясь к документации -- это искусственное ограничение в случае rust а, ... большой текст свёрнут, показать
     
     
  • 6.145, Илья (??), 07:54, 30/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так как, нашли Нет его, опредления этой структуры на уровне обчычного кода ... большой текст свёрнут, показать
     
     
  • 7.148, Ordu (ok), 09:15, 30/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И не искал Я представляю о чём речь macroexpand Используй macroexpand, Luke, ... большой текст свёрнут, показать
     
     
  • 8.149, Илья (??), 23:41, 30/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Где же вы раньше были пойду читать, что за зверь такой... текст свёрнут, показать
     
     
  • 9.150, Ordu (ok), 07:22, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Функция в lisp е Она есть в emacs е и её можно использовать не только с lisp ов... текст свёрнут, показать
     
  • 5.154, freecoder (?), 18:23, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да, это хороший пример, как использование атрибута может запутать, так как частично код генерируется в процедурном макросе. Однако мне потребовалось 5 минут, чтобы на Гитхабе отыскать то место, где создается структура. При этом я в своей жизни только один раз сам писал процедурный макрос и чтение кода особого труда мне не составило.
     

     ....большая нить свёрнута, показать (11)

  • 1.25, Аноним (25), 13:37, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > let r#for = true;

    Но зачем? Чем это отличется от "my_for", например, если в коде это всеравно будет везде с приставкой "r#". Или нет?
    Видимо, в талицу идетификаторов при трансляции все же занесется "for", но прогоаммисту-то до этого какое дело? Он  с этим разве что в каком-нибудь gdb встретится, наверно.
    Или я чего-то не знаю?

     
     
  • 2.35, trolleybus (?), 14:03, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Для интеграции с другими языками (с тем же Си, например). То есть, к примеру, надо из Rust вызвать функцию match(), которая на C, а просто так это не сделаешь: в Rust match - ключевое слово (а в Си - нет).
     
     
  • 3.44, Аноним (7), 14:23, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Другие языки уже лет сорок используют или
    [Code]
    import C

    c.match()
    [/Code]

    или
    [Code]
    c_match()
    c_getc()
    [/Code]
    Зачем изобретать уродливую конструкцию
    [Code]
    fn r#match()
    [Code]
    я не понимаю. Мания NIH?
    Кстати это несовместимое изменение языка и оно потребует переписывания всех анализаторов, lint-еров, и компилятора. Тогда как выше предложенные варианты обходятся без этого.

     
  • 2.68, zekefast (?), 16:48, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Затем, что с новым инструментом cargo fix не сможет добавлять везде префикс my_ так как он у тебя в коде может уже быть использован, а сканировать всю базу кода на обнаружение конфликтов не имён и потом добавлять что-то вроде my1_ или my2_ не представляется очень разумным. + к этому же добавляется проблема с вызовами между языками. r# выглядит наиболее адекватным решением.
     
  • 2.155, freecoder (?), 18:56, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ответ был дан в блогпосте, анонсирующем выпуск:

    "Пока не так много случаев, когда вам это пригодится. Но однажды вы попытаетесь использовать пакет для Rust 2015 в проекте для Rust 2018 или наоборот, тогда набор ключевых слов у них будет разным."
    https://habr.com/post/428073/

     

  • 1.51, Аноним (7), 15:42, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    >В пакетный менеджер Cargo добавлен индикатор прогресса выполнения операций.

    Знаете почему в GOLANG при компиляции нет индикатора прогресса?
    А в го компилятор собирает средний проект менее секунды. Стандартную библиотеку - 5 секунд.

    https://i.imgur.com/qfli0f7.png

     
     
  • 2.53, Аноним (17), 15:57, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    >>В пакетный менеджер Cargo добавлен индикатор прогресса выполнения операций.
    > Знаете почему в GOLANG при компиляции нет индикатора прогресса?
    > А в го компилятор собирает средний проект менее секунды. Стандартную библиотеку - 5 секунд.
    > https://i.imgur.com/qfli0f7.png

    Если бы еще достигалось не экономией на оптимизации результата и не сливало ржавчине по времени выполнения и потребления памяти, то разработчики го (к которым несомненно относятся и некоторые консультирующие их анонимы опеннета!) могли бы гордиться:

    https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/rust-go.htm



    regex-redux
    source secs mem gz cpu cpu load
    Rust
    2.44 194,804 765 3.87 85% 41% 20% 16%
    Go
    28.69 407,444 802 60.43 46% 51% 68% 46%
    binary-trees
    source secs mem gz cpu cpu load
    Rust
    4.14 175,692 721 15.18 90% 90% 91% 100%
    Go
    28.90 471,068 654 110.50 96% 95% 95% 97%
    ...
    pidigits
    source secs mem gz cpu cpu load
    Rust
    1.74 4,520 1366 1.74 1% 3% 0% 99%
    Go
    2.04 8,976 603 2.04 1% 0% 100% 0%




    Но чего нет, того нет.

     
     
  • 3.60, Аноним (7), 16:13, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Синтетические тесты это хорошо.
    Но потребление памяти и быстродействие я бы предпочел сравнить на реальных проектах.
    К сожалению не знаю никого кто бы использовал Раст в продакшене.
    А вы?
     
     
  • 4.64, Аноним (17), 16:31, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Синтетические тесты это хорошо.
    > Но потребление памяти и быстродействие я бы предпочел сравнить на реальных проектах.

    Юлеж это хорошо! Можно сравнить время загрузки или запуска браузера или доступа/записи данных на ФС
    https://www.redox-os.org/
    Что там у ГОшников есть для сравнения?

     
     
  • 5.135, Junior frontend developer (?), 15:55, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Никто не будет писать ОС на урезанном куске языка в 2018
     
  • 3.137, Аноним (137), 01:42, 29/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Go пока сливает по тестам даже Java (если внимательно посмотреть на тайминги), но этот язык простой, как угол дома. Годков через пять допилят оптимизцию так, что уделает всех, а вот Rust все усложняется и стабильных спек на горизонте не видать, скоро плюсы по сложности переплюнет (если уже не).
     
  • 2.74, Аноним (74), 17:44, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    FreePascal смеется над golang по времени сборки проекта.
     
     
  • 3.138, Аноним (137), 01:44, 29/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а зеленые треды там есть? без них микросервисы не сильно попишешь.
     
  • 3.139, mma (?), 05:15, 29/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Паскаль собирает быстро, для институтских поделок сойдет да и ладно:) Для всего остального есть C/Cpp/C#/Java.
     
  • 2.79, Алексей (??), 19:02, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну очевидно для этого пришлось чем-то пожертвовать. Создатели Go пожертвовали итоговой оптимизацией программы. Или вы думаете там применяется какая-то магия 60 уровня, которая не доступна другим программистам?
     
  • 2.156, freecoder (?), 19:02, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    За два года компиляцию в Rust уже не раз ускоряли. Так что не все так плохо.
     

  • 1.66, zekefast (?), 16:43, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для этого всего лишь стоит прочитать оригинальную новость в блоге Rust. При миграции между изданиями языка возможно, что в одном из следующих изданий будет добавлено слово, которое испльзуется уже в проекте как идентификатор. Что бы избежать конфликта с переименованием и сохранить семантику проекта необходимо будет просто добавить везде r#.

    Данная возможность является подготовкой к Rust 2018 Edition.

     
     
  • 2.67, Аноним (7), 16:47, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Rust 2018 Edition.

    История с Python2/3 никого ничему не научила.

     
     
  • 3.71, Ан (??), 17:02, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну почему же. В Rust 2018 насколько знаю просто в проекте будет прописана версия.
    И Компилятор может использовать как до 2018 библиотеку, так и 2018 библиотеку.
    Такого разрыва быть не должно.
     
     
  • 4.83, Аноним (81), 19:19, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Звучит интересно. Я никогда не понимал все эти "extern crate..."
     

  • 1.70, iZEN (ok), 16:59, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Дополнительная прокладка к режиму компиляции Firefox и Tunderbird.
     
     
  • 2.95, Аноним (-), 23:09, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Дополнительная прокладка к режиму компиляции Firefox и Tunderbird.

    Ну чо, изя, будет у тебя штук 5 компилеров, дюжина интерпретаторов, 20 гигатонн библиотек и 10 - хидеров. Про вспомогательное добро типа мезонавтотулсмэйков даже и вспоминать неудобно.

    А потом со всей этой фигней мы попробуем взлететь...

     
     
  • 3.105, iZEN (ok), 10:57, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Перед взлётом можно сделать pkg autorevove pkg autoremove Updating datab... большой текст свёрнут, показать
     

  • 1.84, Аноним (84), 20:09, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    на Haiku OS пойдёт?
     
  • 1.85, Аноним (85), 20:09, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Макросы — зло.
     
     
  • 2.89, Sw00p aka Jerom (?), 21:51, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    макросы для машин, а не для человека
     
     
  • 3.96, Аноним (-), 23:10, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > макросы для машин, а не для человека

    Судя по синтаксису - для боевых человекоподобных роботов.

     
     
  • 4.97, Аноним (97), 23:27, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> макросы для машин, а не для человека
    >
    > Судя по синтаксису - для боевых человекоподобных роботов.

    Судя по синтаксису - для боевых паукоподобных роботов.

     

  • 1.99, kiwinix (?), 00:49, 27/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот подскажите пожалуйста. Если учить php, то чтоб взяли программистом, нужно знать MySQL, html, css, js.. и какой-то фреймворк.

    А в случае с растом, какие еще будут зависимости на собеседовании?

     
     
  • 2.100, Аноним (100), 01:37, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > А в случае с растом, какие еще будут зависимости на собеседовании?

    Спросят, почему решил устраиваться именно в Мозиллу.

     
  • 2.101, Аноним (101), 04:01, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А в случае с растом, какие еще будут зависимости на собеседовании?

    MySQL, html, css, js.. и какой-то фреймворк.

     
  • 2.126, Аноним (126), 22:09, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Надо не учить, а жить этим.
     
  • 2.157, freecoder (?), 19:06, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    TCP/IP стек и блокчейны.
     

  • 1.109, Аноним (109), 14:41, 27/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    очередной убийца с++ скатился
     
     
  • 2.125, th3m3 (ok), 21:35, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Аргументы?
     

  • 1.127, java developer (?), 22:16, 27/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Аргументы что не скатился?
     
     
  • 2.158, freecoder (?), 19:10, 31/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А что значит "скотился"?
     

  • 1.131, Илья (??), 10:07, 28/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А есть кто-нибудь, кто шарит в этой библиотеке?
    http://relm.ml/relm-intro
     
     
  • 2.134, Аноним (97), 15:09, 28/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А есть кто-нибудь, кто шарит в этой библиотеке?
    > http://relm.ml/relm-intro

    Есть. Но я их не знаю.

     
     
  • 3.140, Илья (??), 08:20, 29/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ваше чувство юмора просто зашкаливает.
     

  • 1.159, Аноним (159), 20:21, 31/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Может кто из растаманов пояснить нафига это "Добавлена возможность использования ключевых слов в качестве идентификаторов."?
     
  • 1.161, iZEN (ok), 22:29, 06/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Rust-1.31 на FreeBSD занимает 320 МБ в распакованном виде, в архиве пакета - rust-1.31.0.txz 104,1 МБ. На Ryzen 5 2600 собирается из исходников за 45 минут.
    Это всё, что нужно знать об инфраструктуре этого языка.
     
     
  • 2.162, Andrey Mitrofanov (?), 10:13, 07/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Rust-1.31 на FreeBSD занимает 320 МБ в распакованном виде, в архиве пакета
    > - rust-1.31.0.txz 104,1 МБ. На Ryzen 5 2600 собирается из исходников
    > за 45 минут.
    > Это всё, что нужно знать
    >об инфраструктуре этого языка.

    Ты забыл, или тебе просто не надо, указать, что каждая следующая версия обязятельно собирается предыдущей, и, чтобы собрать этот свой "1.31"  таки из исходников, включая инструменты сборки! ddg://trusting+trust+compiler+attack, станцевать придётся с версии, кажется, 1.19 и какого-то "mrust"-а, собирая _каждую_ из них предыдущей -- в диапазоне  19..31, соответственно.

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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