The OpenNET Project / Index page

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

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

01.09.2017 11:22

Доступен релиз языка программирования Rust 1.20, развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model). На Rust также разрабатывается операционная система Redox, использующая концепцию микроядра и продвигающая принцип "все есть URL".

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

  • В дополнение к ранее доступной поддержке ассоциированных функций (функции, привязанные непосредственно к типу) в новом выпуске реализована возможность создавать ассоциированные константы. Например, в примере ниже константа ID прикреплена к типу Struct:
    
       struct Struct;
       impl Struct {
           const ID: u32 = 0;
       }
       fn main() {
           println!("the ID of Struct is: {}", Struct::ID);
       }
    

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

    
       trait Trait {
           const ID: u32;
       }
       struct Struct;
    
       imp Trait for Struct {
           const ID: u32 = 5;
       }
       fn main() {
           println!("{}", Struct::ID);
       }
    
  • В разряд стабильных переведена новая порция функций и методов, в том числе CString::as_c_str, Chain::get_ref, Take::get_ref, f32/64::from_bits, f32/64::to_bits, slice::sort_unstable_*, str::as_bytes_mut, str::get_mut, str::get_* и т.п.
  • В макросе "unimplemented!" обеспечена возможность определения сообщений, информирующих что именно пока не реализовано;
  • Поддержка Unicode обновлена до версии спецификации 10.0.0;
  • Реализация функций min и max для типов с плавающей запятой переписана на языке Rust и больше не связана с cmath;
  • Обеспечена дополнительная защита от атаки Stack Сlash, в результате которой содержимое переполненной кучи может оказаться в области стека или, наоборот, стек может переписать область кучи;
  • В стандартной библиотеке представлены новые функции нестабильной сортировки: slice::sort_unstable_by_key, slice::sort_unstable_by и slice::sort_unstable, которые отличаются от стабильных тем, что работают быстрее, но не гарантируют сохранение порядка следования элементов в группе;
  • Существенно увеличена скорость (до 29 раз) раскрытия макроподстановок в процессе работы компилятора rustc;
  • В пакетном менеджере Cargo хранение параметров аутентификации к crates.io перенесено из общего файла с настройками ~/.cargo/config, который часто доступен на чтение всем пользователям, в специальный файл ~/.cargo/credentials;
  • В Cargo обеспечена сборка бинарных файлов main.rs, размещённых в подкаталогах src/bin, например, на базе src/bin/server/main.rs и src/bin/client/main.rs будут сгенерированы исполняемые файлы target/debug/server и target/debug/client;
  • Добавлена возможность указания версии устанавливаемого исполняемого файла при указании опции "--vers" в "cargo install";
  • Добавлена новая целевая сборочная платформа wasm32-experimental-emscripten, позволяющая организовать сборку в псевдокод WebAssembly при помощи бэкенда на базе LLVM.

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

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



  1. Главная ссылка к новости (https://blog.rust-lang.org/201...)
  2. OpenNews: Третий выпуск операционной системы Redox OS, написанной на языке Rust
  3. OpenNews: В Firefox добавлен CSS-движок Stylo, написанный на языке Rust
  4. OpenNews: Релиз языка программирования Rust 1.19
  5. OpenNews: Эксперимент по разработке частей ядра Linux на языке Rust
  6. OpenNews: Рассматривается возможность перевода NTPsec на язык Rust или Go
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47113-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (106) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 12:41, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –20 +/
    чего только не придумают, лишь бы не писать на си-89.
     
     
  • 2.10, A.Stahl (ok), 13:38, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +9 +/
    89?
    Ты точно знаешь как выглядит код на С89? Даже во времена борландовского турбо-си все смеялись над С89.
     
     
  • 3.28, dq0s4y71 (ok), 16:39, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ты сам, похоже, не знаешь, как выглядит код на С89. На нём, вообще-то, чуть менее чем полностью ядро написано. А смеялись вы, наверное, над K&R C. Ну и к слову, Турбо си появился когда никакого С89 ещё в помине не было.
     
     
  • 4.33, Ordu (ok), 17:41, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > На нём, вообще-то, чуть менее чем полностью ядро написано.

    Это в том смысле, что если попытаться его скомпилировать с --std=c99, то компилятор будет ругаться менее чем на 5% строк? С тем же успехом можно для любой C'шной программы и любого C'шного стандарта начиная с K&R, сказать, что эта программа написана чуть менее чем полностью в рамках выбранного стандарта.

    В ядре, мы видим, например, множество inline функций, мы видим, например, активное использование членов структур с неопределённым размером, то есть что-то в стиле:
        struct dynarr {
            size_t size;
            uint8_t data[];
        }

    Ядро активно использует фичи C99, и поэтому не надо натягивать сову на глобус и заявлять, что оно "чуть менее чем полностью написано на C89".

     
     
  • 5.38, dq0s4y71 (ok), 18:32, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Чот не понял Если взять любой стандарт и написать в нём программу, то она будет... большой текст свёрнут, показать
     
     
  • 6.43, Ordu (ok), 19:10, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я хочу сказать, что фраза чуть менее чем полностью по отношению к стандарту зв... большой текст свёрнут, показать
     
     
  • 7.51, dq0s4y71 (ok), 19:38, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ок, неудачно выразился Я чо хотел сказать Там чел выше пишет, типа, ты не з... большой текст свёрнут, показать
     
     
  • 8.58, Ordu (ok), 20:27, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В ядре постоянно Ты полистай хидеры Не, ну ты прикинь, как писать на C без inl... большой текст свёрнут, показать
     
     
  • 9.68, dq0s4y71 (??), 22:03, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я не делал Те С89-компиляторы, которыми я пользовался, всегда поддерживали каки... текст свёрнут, показать
     
     
  • 10.77, Ordu (ok), 22:38, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Угу После чего мы заглядываем в код ncurses и видим как выглядит код на c89 Бе... текст свёрнут, показать
     
     
  • 11.87, Аноним (-), 13:07, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это ж до чего же гoвнокод там, раз уж такие проблемы ... текст свёрнут, показать
     
  • 8.89, лютый жабист__ (?), 16:37, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    dq0s4y71, я вижу, ты гуру не только в жабке, но и в сях 8 ... текст свёрнут, показать
     
     
  • 9.91, Аноним (-), 16:46, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Указателем, маллоком, фри и интринсиком, заклинаю изыди, зелененький ... текст свёрнут, показать
     
  • 5.49, Аноним (-), 19:34, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ядро активно использует фичи C99

    Ядро использует gnu89/gnu90 без всяких "активно"/"пассивно".

     
     
  • 6.52, Ordu (ok), 20:14, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ядро активно использует фичи C99
    > Ядро использует gnu89/gnu90 без всяких "активно"/"пассивно".

    Ага. То есть ядро не написано в рамках стандарта C89, так?

     
  • 4.34, anonimbl (?), 17:44, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Очевидно, что он не знает. Это же просто клоун, который срет в комментах под каждым постом.
     
     
  • 5.45, НяшМяш (ok), 19:21, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя казалось бы, уже вроде 1 сентября...
     
  • 4.61, Аноним (-), 20:58, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> как выглядит код на С89. На нём, вообще-то, чуть менее чем полностью ядро написано

    В ядре почти каждый драйвер использует инициализацию полей структур по-умолчанию, что появилось только в 99

     
  • 2.23, Крутой аноним (?), 15:20, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > чего только не придумают, лишь бы не писать на си-89.

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

     
  • 2.63, Аноним (-), 21:02, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > чего только не придумают, лишь бы не писать на си-89.

    Особенно, говоря о С89, современные разработчики "любят" декларировать все переменные сразу после начала функции... как в Паскале....

     

  • 1.3, Аноним (-), 12:53, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –11 +/
    > Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем

    Зато создаёт проблемы с производительностью.

     
     
  • 2.6, Аноним (-), 13:07, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    >> Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем
    > Зато создаёт проблемы с производительностью.

    Что-то не сильно видно: http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=rust&lang2=gpp
    Кстати, растовское "автоматическое" управление памятью немного не то, что под этим понимают в других ЯП.


     
     
  • 3.12, Аноним (-), 13:46, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –6 +/
    По этой ссылке нет никаких тестов с управлением памятью.
     
     
  • 4.15, Аноним (-), 14:38, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > По этой ссылке нет никаких тестов с управлением памятью.

    Т.е. вы туда не ходили?
    Да и, как я понимаю, ничего конкретного насчет "создавания проблем с производительностью" мы не увидим?

     
  • 3.64, Аноним (-), 21:23, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Что-то не сильно видно

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

    На одном тесте ржавый потребляет на 20% меньше памяти, чем C++, ещё на одном примерно столько же, ещё на четырёх на 50-80% больше, и ещё на 5 тестах - в 2-20 раз больше. При этом работает сравнимое время (кроме теста, где выигрывает 20%, - там и работает в 6 раз быстрее).

     
     
  • 4.67, Аноним (-), 21:57, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >>>> Автоматическое управление памятью избавляет разработчика
    >>> Зато создаёт проблемы с производительностью.
    >> Что-то не сильно видно
    > А вы поближе к монитору подсядьте.
    > На одном тесте ржавый потребляет на 20% меньше памяти,
    > кроме теста, где выигрывает 20%, - там и работает в 6 раз быстрее
    > где выигрывает 20%, - там и работает в 6 раз быстрее

    Вы бы тоже подсели и прочитали внимательно, на что решили отвечать.
    Производительность и потребление памяти - разные вещи (только не надо начинать про взаимосвязь и трейдоффы, конкретно тут ее, в идеальном случае, не должно быть).
    А уж
    > где выигрывает 20%, - там и работает в 6 раз быстрее

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

     
     
  • 5.70, Аноним (-), 22:11, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Производительность и потребление памяти - разные вещи

    То есть путать производительность и потребление памяти нельзя, а путать производительность и скорость работы - можно?

     
  • 2.16, Илья (??), 14:43, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как? Это же не GC или подсчет ссылок.
     
  • 2.24, Крутой аноним (?), 15:21, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем
    > Зато создаёт проблемы с производительностью.

    И какие проблемы? Это ведь не GC.

     
     
  • 3.41, Аноним (-), 18:59, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Подсчёт ссылок в рантайме.
     
     
  • 4.47, Аноним (-), 19:23, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Подсчёт ссылок в рантайме.

    Вот! Экспертный тезка зрит в самый корень! Заморочки с временем жизни, владениями и прочим - для отвода глаз и накручивания ЧСВ, а на самом деле унутрях там неонка^W ссылки в рантайме считают! И как его только на ардуинах или в качестве ядра ОС использовать заставляют?

     
     
  • 5.59, 123 (??), 20:47, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>Заморочки с временем жизни, владениями и прочим

    Зачем, если есть тупо область видимости и нет глобальных указателей? Счетчик ссылок на пару порядков  быстрее CG.  

     
     
  • 6.71, Ordu (ok), 22:13, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Неа Во-первых, даже полностью статическое управление памятью не на порядки быст... большой текст свёрнут, показать
     
     
  • 7.73, Аноним (-), 22:18, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Как расписал, прям можно подумать, что сборщик мусора — это альтернатива подсчёту ссылок.
     
     
  • 8.82, Ordu (ok), 00:08, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не можно, а нужно Не обязательно выбирать именно эту альтернативу, но подумать ... текст свёрнут, показать
     
  • 7.117, Аноним (-), 09:37, 07/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну давай расскажи как быстро сборщик мусора освободит пару гигов когда памяти уже совсем нет, а вот очень прям сейчас надо. Сборщик мусора порождает тормоза в любой непредсказуемый момент времени для тяжелых приложений.
     
     
  • 8.118, Аноним (-), 16:10, 07/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А в ручную, когда кончилась память, ты делаешь волевым усилимем free random Ещ... текст свёрнут, показать
     
     
  • 9.120, Аноним (-), 08:17, 08/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    в том то и дело, что память есть Высоконагруженное на java когда-либо писали ... текст свёрнут, показать
     
     
  • 10.121, Аноним (-), 17:42, 08/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Так она есть или ее нет Тут бы некоторая определенность не помешала Еще раз, д... текст свёрнут, показать
     
  • 8.119, Ordu (ok), 18:30, 07/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если у тебя кончилась память, то тебе уже ничто не поможет Ни сборщик мусора, н... большой текст свёрнут, показать
     
  • 6.72, Аноним (-), 22:16, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Затем, что оперируя только областями видимости трудно будет передавать ссылочки ... большой текст свёрнут, показать
     
     
  • 7.74, Аноним (-), 22:20, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> Счетчик ссылок на пару порядков  быстрее CG.
    > Вообще-то, в общем случае - наоборот. Счетчик легче сделать, поведение предсказуемее, но
    > зато есть постоянный оверхед на инкремент/декремент, что очень заметно на CPU-bound
    > задачах.

    Ты как себе представляешь GC, работающий без подсчёта ссылок, умник? Откуда он будет узнавать, что мусор, а что — нет?

     
     
  • 8.75, Аноним (-), 22:26, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Яснопонятно Я то думал, сегодня количество знатоков на опеннете поубавится, ... текст свёрнут, показать
     
  • 8.81, Ordu (ok), 00:04, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты б хотя бы википедию почитал сначала о том, что такое сборщик мусора, какие он... текст свёрнут, показать
     
  • 6.80, КО (?), 23:03, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    1. Подсчет ссылок - один из вариантов GC :)
    2. Хорош на тестах a la helloworld, но в реальности коллекция недостатков типа:
       a) фрагментация памяти;
       b) операции со ссылками только через инвалидацию кеша (или иные методы синхронизации) - или прощай многозадачность;
       с) непредсказуемость времени выполнения операции (простенькое удаление ссылки может обернуться каскадом удалений);
       d) циклические ссылки сами не обнуляются.

    Но идеальной системы, пока никто не придумал.

     
     
  • 7.96, Аноним (-), 21:33, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    https://kgv.gitbooks.io/rust_book_ru/content/src/custom-allocators.html
     
  • 6.90, лютый жабист__ (?), 16:41, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Зачем, если есть тупо область видимости и нет глобальных указателей? Счетчик ссылок
    > на пару порядков  быстрее CG.

    Экспертик ты мой сердешный, ничего, что GC по большей части работает в отдельных от основной программы потоках? :)

    Кстати, счетчик ссылок дефрагментацию памяти делает? :)

     
     
  • 7.92, Аноним (-), 16:53, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Экспертик ты мой сердешный, ничего, что GC по большей части работает в
    > отдельных от основной программы потоках? :)

    Жабиный GC != единственная альтенратива счетчику.
    > Кстати, счетчик ссылок дефрагментацию памяти делает? :)

    А это-то причем? Как сделаешь, так и будет - можешь хоть маллок/фри обернуть, хоть еще что-то сваять. Естественно, с компактирующим GC оно в шарообразных бенчах и рядом не стояло, но в реальной жизни в 64 битном адресном пространстве дефрагментация пока вообще не ощущается, да и нюансики у копирующих GC тоже есть.

     
     
  • 8.102, лютый жабист__ (?), 07:08, 04/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Щито Создала прожка 1000 объектов по мегабайту Потом каждый второй удалила П... текст свёрнут, показать
     
     
  • 9.104, Аноним (-), 15:49, 04/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Т е не общим куском на 1000 мегабайт, т е аж целы1 ГБ, а именно по мегабайту ... текст свёрнут, показать
     
     
  • 10.107, Очередной аноним (?), 09:49, 05/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Блин, ну откуда такие люди берутся Вроде бы всё очевидно Даже кэпуочевидности ... большой текст свёрнут, показать
     
     
  • 11.111, Аноним (-), 17:28, 05/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вам не угодишь У вас там случаем, не шиза Или вы не помните, что сами же спра... большой текст свёрнут, показать
     
  • 9.105, Аноним (-), 16:04, 04/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Т е не общим куском на 1000 мегабайт, т е аж целый 1 ГБ, а именно по мегабайту... большой текст свёрнут, показать
     
     
  • 10.106, лютый жабист__ (?), 05:36, 05/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тут все школьники и запалились Во первых зааллокейтить все доступные 16TB мож... большой текст свёрнут, показать
     
     
  • 11.112, Аноним (-), 17:44, 05/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Класс Сам что-то придумал, сам же опроверг, сам доволен А по теме что-то буде... большой текст свёрнут, показать
     
     
  • 12.113, лютый жабист__ (?), 05:54, 06/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если твои прожки работают по 3 минуты и заключаются в проинициализованы ноликам... текст свёрнут, показать
     
     
  • 13.114, Аноним (-), 07:08, 06/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Т е Великий Дефрагментатор зафейлился на своем же примере и сказать ему хоть чт... текст свёрнут, показать
     
     
  • 14.115, лютый жабист__ (?), 09:25, 06/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https en wikipedia org wiki Allocator_ C 2B 2B The default allocator uses ope... большой текст свёрнут, показать
     
     
  • 15.116, Аноним (-), 15:24, 06/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Подразумевалось чтение и ПОНИМАНИЕ прочитанного И то ли дело жабка, ведь там вс... текст свёрнут, показать
     
  • 5.62, Вареник (?), 21:00, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > И как его только на ардуинах или в качестве ядра ОС использовать заставляют?

    Заставляют??? Соболезнцую :)

     

  • 1.9, Аноним (-), 13:33, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > увеличена скорость (до 29 раз)

    Это, значит, так они его писали?

     
     
  • 2.29, dq0s4y71 (ok), 16:45, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Нормально, чо. Make it Work, Make it Right, Make it Fast.
     
     
  • 3.46, НяшМяш (ok), 19:22, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вообще-то это нормально - сначала писать, потом оптимизировать. Да и это на скорость компиляции влияет, а не на результирующий код, так что это неприятно, но не критично.
     

  • 1.17, Аноним (-), 14:46, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Скажите, кто следит, оно по степени yпоротости уже перегнало кресты, или всё ещё только догоняет?
     
     
  • 2.18, Илья (??), 14:49, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Что для Вас является степенью упoротости? И что в таком случае "отстаёт"?
     
     
  • 3.20, Аноним (-), 14:51, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Синтаксис через одно место
     
     
  • 4.21, Илья (??), 14:53, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А чем именно вам не нравится синтаксис rust ?
     
  • 3.30, dq0s4y71 (ok), 16:51, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    6 операторов преобразования типа, например.
     
  • 3.32, Аноним (-), 17:28, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Степенью yпоротости для меня является избыточность возможностей (вроде тех же ассоциированных функций), создающая плодородную почву для написания совершенно нечитаемого кода. Отстаёт — в смысле туда уже запихали всё, что есть в C++, то есть примерно всё, что вообще встречается в разных языках программирования, или ещё не успели?
     
     
  • 4.35, freehck (ok), 17:58, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ну, ну С такой логикой Вы скоро объявите Python вершиной эволюции языков прог... большой текст свёрнут, показать
     
     
  • 5.57, Аноним (-), 20:24, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Целиком и полностью согласен. Но Rust — это не Perl, это попытка переделать C++ «правильно». И сообщество его состоит преимущественно из плюсовиков.
     
  • 4.36, Ordu (ok), 18:07, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > Отстаёт — в смысле туда уже запихали всё, что есть в C++...

    Нет конечно. За rust'ом стоит другая идеология. Страуструп пихал в C++ всё, что он смог в zero-cost абстракции завернуть, потому что не знал ещё, как люди будут писать программы на C++. Когда же rust зародился, уже было понятно, как надо писать программы на C++. Что, например, наследование не нужно, что try/catch/throw не самая удачная штука для обработки ошибок, что UB в стандарте -- это плохо, что функциональное программирование -- это хорошо и вполне юзабельно, если не впадать в крайности, что обратная совместимость синтаксиса с C -- это недостижимо, но привносит кучу проблем, что utf8 -- это стандарт для представления строк. C++ был поиском новых путей для программирования в ширину, rust -- это скорее поиск в глубину.

    > то есть примерно всё, что вообще встречается в разных языках программирования, или ещё не успели?

    Да ну. В C++ нет и половины того, что встречается в разных языках программирования. Глянь, например, на CLOS, чтобы проникнуться тем, что такое ООП. Глянь на Ocaml, чтобы понять, что такое полиморфные типы. Или на хаскель, чтобы понять, что делают с языком immutable данные, pure функциональность и РЕАЛЬНЫЙ полиморфизм.

     
     
  • 5.42, 123 (??), 19:04, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >> Глянь, например, на CLOS, чтобы проникнуться тем, что такое ООП. Глянь на Ocaml, чтобы понять, что такое полиморфные типы. Или на хаскель, чтобы понять, что делают с языком immutable данные, pure функциональность и РЕАЛЬНЫЙ полиморфизм.

    Ну как в каждом языке своё, а в c++ впихнули все и ввели еще режим совместимости, тк сверху вниз он не совместимы 90% компиляторов. Что уже говорить про разные реализации  компиляторы.  

    Нормальное ООП и полиморфизм есть только в SmallTalk. В остальных ЯП идет скрещивание ужа с ежом.

     
     
  • 6.44, Ordu (ok), 19:18, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну как в каждом языке своё, а в c++ впихнули все...

    Повторюсь: не всё.

     
  • 5.55, Аноним (-), 20:21, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Да ну. В C++ нет и половины того, что встречается в разных языках программирования. Глянь, например, на CLOS, чтобы проникнуться тем, что такое ООП. Глянь на Ocaml, чтобы понять, что такое полиморфные типы. Или на хаскель, чтобы понять, что делают с языком immutable данные, pure функциональность и РЕАЛЬНЫЙ полиморфизм.

    Примерно это я и имел в иду: в C++ оно как бы есть, но толку от этого чуть больше нуля.

     
     
  • 6.65, Ordu (ok), 21:30, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Да, вероятно. Я не понимал как надо писать на C++, до тех пор пока не разобрался с Rust'ом. В C++ действительно очень много чего намешано и неясно, как именно всё это можно сочетать, без прочтения правильных гайдов, но какие из них правильные априорно непонятно.
     
  • 2.25, Крутой аноним (?), 15:29, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Скажите, кто следит, оно по степени yпоротости уже перегнало кресты, или всё
    > ещё только догоняет?

    Т.к. C++ стартовал намного раньше не думаю что его возможно догнать.
    Например о "move" авторы Rust думали с самого начала, поэтому там нет
    такого сумасшествия как 4 спецальных функций чтобы экземпляры твоего типа
    передавались туда сюда (имеется ввиду copy/move constructor и copy/move operator=).

    Также авторы Rust знали заранее к чему может привести простой функционал
    замены "А" на "Б" в руках неокрепших умов, поэтому все применения макросов
    помечены восклицательным знаком.

    В общем думаю еще лет 10-20 не то что не догонит, но и близко не будет по сложности синтаксиса.

     

  • 1.26, anon2314 (?), 15:54, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    бобит то как, чувствуют, чувствуют люди, что скоро Раст подвинет старичков из системного программирования, насиженного места.
     
     
  • 2.27, Аноним (-), 16:28, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это вряд ли. Rust это очередная игрушка попиарится.
    Не более.
     
     
  • 3.37, anonimbl (?), 18:23, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Это вряд ли. Rust это очередная игрушка попиарится.
    > Не более.

    На которой, меж тем, пишутся вполне себе серьезные вещи уже.

     
     
  • 4.39, Аноним (-), 18:33, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это просто попытка привлечь внимание, а не серьезные вещи.
     
  • 4.56, Вареник (?), 20:24, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Это вряд ли. Rust это очередная игрушка попиарится.
    >> Не более.
    > На которой, меж тем, пишутся вполне себе серьезные вещи уже.

    Эти "серьезные вещи" из целого одного браузера -начали падать в разы чаще и вчистую сливают конкурентам аудиторию.

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

     
     
  • 5.76, Аноним (-), 22:26, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>> Это вряд ли. Rust это очередная игрушка попиарится.
    >>> Не более.
    >> На которой, меж тем, пишутся вполне себе серьезные вещи уже.
    > Эти "серьезные вещи" из целого одного браузера

    https://www.opennet.dev/opennews/art.shtml?num=46805
    Это, конечно, далеко не браузерный движок, зато сама контора посолидней мозиллы.

     
  • 5.108, Firefoxus (?), 12:13, 05/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Эти "серьезные вещи" из целого одного браузера -начали падать в разы чаще и вчистую сливают конкурентам аудиторию.

    Это в ваших влажных хромоюзеровских фантазиях чтоли?
    А ничего, что на Rust в Firefox пока ещё ничего нет в проде? Firefox Nightly — не прод, если что. Он как раз для того и создан, чтобы всякие баги отлавливали желающие новизны, которые ну явно Nightly ставили не ради «стабильности».

    Между прочим я всегда «стабильной» версией пользовался. И только с выходом Firefox Nightly 57 (Mark 57) я его поставил. Именно ради того, чтобы не иметь хоть и редкие падения, которые вызваны этим легаси-глюкодромом под названием XUL. Так и случилось — у меня ни разу Nightly не упал, не заглючил, не затормозил даже.

    Что же касается Quantum CSS (aka Stylo), который является пока единственной частью Servo на Rust портированный в Firefox Nightly 57 (в Nightly, Карл! не в прод 55) — так это единственное, к чему у меня нет нареканий сейчас. Остальные части движка, которые не связаны с парсингом и обработкой CSS, всё так же чутка уступают Blink (у меня есть на чём это проверять).

    Хотя… в чём-то вы правы. Ведь с выпуском Nightly 57 как и я очень многие на него перешли… так сказать, «слились» из пользователей «стабильного» Firefox, по крайней мере до выхода в ноябре Firefox 57 😉

     
  • 2.79, freehck (ok), 22:52, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > скоро Раст подвинет старичков из системного программирования

    Ну нет, это вряд ли. :)

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

     
  • 2.85, Аноним (-), 09:36, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Скажу по секрету - как раз таки "старички", у которых кроме основного рабочего ЯП (того же C или жабы) пары ЯП "для разной мелочёвки" (например, awk - иногда груду текстового навоза перелопатить) есть ещё в анамнезе десяток ЯП, от тикля до эрланга, которые ему пришлось изучить для ковыряния чужогого кода - так вот именно такие "старички" быстрее освоят новый язык (если понадобится), чем свежевыпущенная с курсов макака, признающая только один ЯП - тот единственный, которому её научили.
     
     
  • 3.94, pripolz (?), 17:54, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пока одни учат бесконечные япы, другие растут как профессионалы в своём направлении. К примеру, можно OpenGL освоить хорошенько, на это несколько лет нужно.
    Яп - это просто инструмент, который мало чего решает. А времени у нас не так уж много в этой жизни.
     
     
  • 4.95, Led (ok), 18:58, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А времени у нас не так уж много в этой жизни.

    Естественно. Уроки учить...

     

  • 1.31, Какаянахренразница (ok), 17:24, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > [...] обеспечивающего автоматическое управление памятью и предоставляющего
    > средства для высокого параллелизма выполнения заданий
    > ...
    > Напомним, что язык Rust сфокусирован на безопасной работе с памятью и
    > обеспечении высокого параллелизма выполнения заданий. [...]

    Спасибо за напоминание, но не слишком ли часто?

     
  • 1.40, Lolwat (?), 18:38, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Ох уж эти змеи, как только не изовоються лишь бы не писать на С.
     
     
  • 2.48, НяшМяш (ok), 19:24, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А ну бегом написал движок для firefox-next.
     
  • 2.60, 123 (??), 20:53, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Заказчики заразы - требуют быстрее выпускать рабочие версии, не хотят ждать квартал, пока ищешь утечку в памяти, говорят php-шники и python-исты пишут гораздо быстрее и дешевле.
     
     
  • 3.66, Аноним (-), 21:33, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Заказчики заразы

    ... разные бывают.

    Если ты планируешь строить свою карьеру на тех, кто ищет подешевле, то будь готов, что дешевле они хотят не только в собственно разработке, но и в организации рабочего процесса, оформлении официальных документов, переводе денег тебе, тестировании и дальнейшей поддержке софта и т.д. А ещё они хотят не просто "дешевле", а "дешевле для них", поэтому будут с радостью перекладывать на тебя часть своей работы, потому что "ну тут же тебе немного, а мне разбираться придётся. А вот знакомый похапешник сделал мне это бесплатно за то, что я заказал у него сайт".

     
  • 3.103, r2d3 (?), 12:16, 04/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Смешно, когда код питониста работает быстрее, чем код сишника. Ибо тот байтики перекладывать научился, а программировать - нет. Серьёзно, я после ассоциативного массива на связном списке уже ничему не удивляюсь.
     

  • 1.53, Вареник (?), 20:19, 01/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    >> защищает от проблем
    >> в один клик
    >> избавляет разработчика от

    Почему Firefix чем дальше, тем чаще крашится на ровном месте? На банальной закачке 500-мегового файла может упасть, сразу после открытия программы.

    И почему я не удивлен? Видя восторг школоты по повобу "оно само безопасно" - почему я предполагал нечто подобное?

     
     
  • 2.54, Вареник (?), 20:20, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Firefix

    Очепятка по Фрейду :)

     
  • 2.69, Аноним (-), 22:05, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Наставил расширений небось. В ноябре они все отвалятся с приходом новой архитектуры запрещающей им глубоко внедряться в браузер.
     
     
  • 3.78, Аноним (-), 22:46, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    У меня, наверное, более сотни расширений. Да, я плагиновый маньяк. Не крешится.
     
     
  • 4.83, Аноним (-), 00:57, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Зависит от самих расширений, а не от их количества. Сложно было догадаться? Иди ты думаешь в коде FF стоит if (ext_count < 100) do_crash()?
     
  • 4.98, YetAnotherOnanym (ok), 10:55, 03/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное. ты - хозяин Оки "Моня"?
     
  • 2.86, fooBar (?), 12:06, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сейчас в фаерфоксе на RUST написаны движок стилей (CSS), и парсер метаданных (mp3/4,...)  "Закачка" файла к этим модулям на RUST не имеет никакого отношения
     
     
  • 3.109, Firefoxus (?), 12:24, 05/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Если быть точнее, то не «сейчас». А в ноябре. Сейчас же только в Nightly.
     
     
  • 4.110, Firefoxus (?), 12:27, 05/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    На тому кренделю лишь бы слюной побрызгать 😂
     
  • 2.97, VEG (ok), 23:02, 02/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если используете 32-разрядную версию, попробуйте перейти на 64-разрядную.
     

  • 1.101, pripolz (?), 19:02, 03/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    я бы сказал, язык готов процентов на 30. К продаже. Adobe.
    Хотя, это если у мазилы всё получится, нынче на этом рынке неплохая конкуренция.
     

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



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

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