The OpenNET Project / Index page

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

Релиз языка программирования Rust 2018 (1.31)

08.12.2018 15:58

Представлен релиз языка системного программирования Rust 1.31, развиваемого проектом Mozilla. Кроме штатного номера версии выпуск также обозначен как Rust 2018 и преподносится как наиболее важный релиз с момента формирования версии 1.0 в 2015 году. Rust 2018 выступит основой для наращивания функциональности в последующие три года, по аналогии с тем, как выпуск Rust 1.0 стал базисом для развития языка в прошедшие три года.

Для разделения несовместимой функциональности введена концепция редакций языка. Редакции с номерами "2015" и "2018" могут использоваться в качестве метки для определения среза состояния языка, разделяющего несовместимые изменения (в секцию "[package]" с метаданными из cargo-пакетов добавлено новое поле "edition").

Редакция "2015" включает уже стабилизированную к текущему моменту функциональность и все будущие изменения, не нарушающие совместимость. Редакция "2018" дополнительно охватывает нарушающие совместимость новшества, предложенные в текущем выпуске 1.31 и утверждённые для реализации в будущем. Кроме самого языка редакции также учитывают состояние инструментария и документации (например, в редакции 2018 в состав введены модули поддержки IDE, rustfmt и Clippy).

Режим "2015" позволяет сохранить полную совместимость с существующими приложениями без внесения нарушающих совместимость изменений. Что касается режима "2018", то активировать его имеет смысл при желании задействовать в коде будущие возможности языка, такие как ещё не реализованные концепции async/await и try. Так как данные возможности могут потребовать корректировки кода старых программ, написанных до резервирования слов async, await и try, указанные ключевые слова уже внесены в редакцию "2018", несмотря на то, что связанная с ними функциональность ещё не добавлена.

Иными словами, в выпуске Rust 1.31 заранее произведена фиксация ключевых слов для ещё не готовых новшеств, нарушающих обратную совместимость, и ожидаемых в последующие три года. При этом грядущие изменения и новшества, не приводящие к нарушению совместимости, по мере своего появления будут доступны для пакетов независимо от выбранной редакции - специфичными для редакции "2018" и не попадающими в редакцию "2015" станут только изменения, нарушающие совместимость.

Основные новшества Rust 1.31:

  • Реализована техника NLL (Non-Lexical Lifetimes), расширившая систему учёта времени жизни заимствованных переменных. Вместо привязки времени жизни на лексическом уровне, NLL осуществляет учёт на уровне набора указателей в графе потока выполнения. Новый подход позволяет увеличить качество проверки заимствования переменных (borrow checker) и допустить выполнение некоторых видов корректного кода, использование которого ранее приводило к выводу ошибки. Новое поведение также существенно упрощает отладку. Например:
    
       fn main() {
           let mut x = 5;
           let y = &x;
           let z = &mut x;
           println!("y: {}", y);
       }
    

    Выполнение данного кода в редакции "2015" приводит к выводу ошибки "cannot borrow 'x' as mutable because it is also borrowed as immutable" для всего блока "{}", не детализируя источник проблемы. Начиная с Rust 1.31 при выборе редакции "2018" ошибка будет локализована для выражения 'println!("y: {}", y);', которое вызывает конфликт;

  • Внесены изменения в систему модулей, нацеленные на её упрощение: для большинства случаев убрана необходимость использования "extern crate"; добавлена возможность импорта макросов при помощи выражения "use" вместо атрибута "#[macro_use]"; абсолютные пути, начинающиеся с названия пакета (crate), теперь разбираются относительно текущего пакета; возможно сосуществование подкаталогов foo.rs и foo/, при размещении субмодулей в подкаталоге больше не нужен mod.rs. Изменения применимы только в режиме "2018";
  • Добавлены новые способы упрощённого задания области видимости (lifetime elision) в функциях и заголовках реализаций (impl). Вместо "impl<'a> Reader for BufReader<'a> {}" теперь можно указывать "impl Reader for BufReader<'_> {}".
  • Добавлен новый способ определения функций - "const fn", который дополнил уже существующие выражения "fn", "unsafe fn" и "extern fn". Функции, определённые через "const fn", могут вызываться не только как обычные функции, но и использоваться в любом контексте вместо констант, например "const SIX: i32 = foo(5);". Данные функции вычисляются на этапе компиляции, а не в ходе выполнения, поэтому на них накладываются определённые ограничения (допускаются арифметические операции и операции сравнения над целыми числами, запрещены булевые операторы "&&" и "||", допускается чтение только из констант, можно вызывать только функции, определённые как "const fn" и т.п.);
  • Помимо cargo, rustdoc и rustup в основной состав включены утилиты clippy (linter) и rustfmt (форматирование кода), а также плагины для поддержки интегрированных сред разработки Visual Studio Code, IntelliJ, Atom, Sublime Text 3 и Eclipse;
  • Стабилизированы новые атрибуты для инструментов Rust, таких как rustfmt и clippy. Например, "#[allow(clippy::bool_comparison)]" для ограничения применения clippy;
  • В разряд стабильных переведена новая порция API, в том числе From<NonZeroU8>, From<&Option<T>>, slice::align_to, slice::chunks_exact;
  • В пакетный менеджер Cargo добавлена поддержка параллельной загрузки нескольких пакетов при помощи HTTP/2. За исключением специфичных случаев переведено в разряд необязательных выражение "extern crate".
  • Запущены инициативы по оптимизации Rust для предметно-ориентированных областей. Созданы рабочие группы для развития средства для разработки сетевых сервисов (развивает async/await), создания приложений для командной строки (развивает библиотеки для CLI-интерфейса), поддержки WebAssembly (компиляция и взаимодействие с wasm) и создания решений для встраиваемых устройств (улучшение поддержки ARM).

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

  1. Главная ссылка к новости (https://hacks.mozilla.org/2018...)
  2. OpenNews: Релиз языка программирования Rust 1.30
  3. OpenNews: Выпуск интегрированной среды разработки Eclipse "Photon" с поддержкой языка Rust
  4. OpenNews: Выпуск libOS, unikernel на языке Rust для запуска приложений поверх гипервизора
  5. OpenNews: Mozilla развивает прослойку для обеспечения переносимости между JavaScript и Rust
  6. OpenNews: Для Linux и Redox представлена реализация Libc на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49747-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (115) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Fracta1L (ok), 16:00, 08/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Пора бы уже потихоньку перетаскивать ядро на Rust
     
     
  • 2.13, A.Stahl (ok), 16:32, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +14 +/
    На Лисп или Квик Бейсик. Оба проверены временем. А Раст ещё не заслужил.
     
  • 2.15, Иваныч (??), 16:48, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Rust это как Ada, но с хипсторами. Зачем?
     
  • 2.16, VINRARUS (ok), 17:00, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Старые штопаные дыры на новый ЯП? Для нового ЯП нада новое ядро!
    Долой монополизм Linux!
     
     
  • 3.18, asargis (ok), 17:07, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Таки есть же Redox
     
     
  • 4.80, proninyaroslav (ok), 14:58, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Единственное что не нравится - это лицензия MIT.
     
     
  • 5.97, Аноним (97), 03:07, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Слишком свободная?
     
     
  • 6.101, Аноним (101), 12:21, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вам смешно а вот лицензия MIT, как то раз покусала, мою бабушку.
    Я требую ее запретить!
     
     
  • 7.125, роспозор (?), 11:25, 13/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    мы вас услышали, ваша бабушка добавлена в список запрещенных ресурсов.

     
  • 6.103, Andrey Mitrofanov (?), 12:38, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Слишком свободная?

    Для проприертарщиков, от и против пользовуемых.

     
     
  • 7.105, Аноним (101), 12:47, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >пользовуемых

    Кто пустил на форум пьяного?

     
  • 4.100, Попугай Кеша (?), 11:34, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И зачем она? Хипстеры для хипстером фигачат? Лучше уж Haiku OS
     
  • 3.19, asargis (ok), 17:07, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.redox-os.org/
     
  • 2.79, proninyaroslav (ok), 14:56, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Те кто умеет разрабатывать ядра то обоходятся и без Rust, им не нужен "безопасный" язык, они должны прекрасно разбираться в том что они делают и зачем. Хотя назвать безопасным язык с unsafe блоками сложно, так как теряется весь смысл этой "безопасности".
     
     
  • 3.81, Аноним (81), 15:54, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Те кто умеет разрабатывать ядра то обоходятся и без Rust, им не нужен "безопасный" язык,

    Потому что ядра пишут не люди а роботы, притом пишут сразу на машинном коде, так как не надо тратить время на компиляцию

     
     
  • 4.84, proninyaroslav (ok), 16:07, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Те кто умеет разрабатывать ядра то обоходятся и без Rust, им не нужен "безопасный" язык,
    > Потому что ядра пишут не люди а роботы, притом пишут сразу на
    > машинном коде, так как не надо тратить время на компиляцию

    У каждого языка свои задачи. И Rust для этой задачи не создавался впринципе. А си был изначально создан для написания переносимого Unixа.

     
  • 3.85, Fracta1L (ok), 16:32, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А без unsafe ядро написать получится?
     
     
  • 4.87, proninyaroslav (ok), 17:55, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А без unsafe ядро написать получится?

    Насколько знаю даже в Redox около 15%.

     
  • 3.102, Аноним (101), 12:23, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >Те кто умеет разрабатывать ядра то обоходятся и без Rust, им не нужен "безопасный" язык

    Загуглил Linux Kernel уязвимости. Ни одного результата!
    Действительно "безопасный" язык не нужен!

     
     
  • 4.106, proninyaroslav (ok), 15:22, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > >Те кто умеет разрабатывать ядра то обоходятся и без Rust, им не нужен "безопасный" язык
    > Загуглил Linux Kernel уязвимости. Ни одного результата!
    > Действительно "безопасный" язык не нужен!

    Говнокод не перестаёт быть говнокодом даже в безопасных языках. Просто в отличии от C такие языки будут бросать исключение. Но в любом случае это не сделает говнокода конфеткой. Наверное единственная полезная вещь для адекватного программиста: исключить человеческий фактор (опечатался, забыл проверить и т.д).

     
  • 4.107, Аноним (107), 15:30, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Загуглил Linux Kernel уязвимости

    Глубокий уровень экспертности

     
  • 4.116, Анонимчжан (?), 20:59, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    если в ядре линукс нет уязвимостей то те кто его писал просто боги программирования)) просто эти дыры еще не откопали или они не проявили себя напрямую или в составе работы с другими приложениями. идеальный код без дыр... это "Hello World" наверно?  :)
     
  • 3.120, asargis (ok), 05:20, 11/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, ну да Поэтому в линуксе и остальных ядрах, написанных знатоками ядраписа... большой текст свёрнут, показать
     
     
  • 4.122, КГБ СССР (?), 06:55, 11/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Не понимаю почему
    > все так настроены против Rust да и вообще против всего нового.
    > Не нравится? Не используй. Ведь никто не заставляет.

    Потому что «новое» не синоним «хорошего». Трудно понять это без подсказки-то?

    Есть множество специализированных (если ты понимаешь значение этого слова) языков, некоторым более полувека. На них написаны миллиарды строк кода полезных программ. Обезьяны мечтают всё это скопом упразднить и запретить ради убогого и дефективного by design жлобоскрипта «патамушта на ём лихко песать кот для бровзера».

     
  • 4.124, proninyaroslav (ok), 10:47, 11/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален Да я и не против rust, я считаю его отличной заменой C ... большой текст свёрнут, показать
     

  • 1.4, Аноним (4), 16:05, 08/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "релиз языка системного программирования Rust 1.31"
    Какая система написана на Rust?
     
     
  • 2.5, Аноним (5), 16:09, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Linux
     
  • 2.7, Аноним (7), 16:11, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Например, Redox https://www.opennet.ru/opennews/art.shtml?num=46919
     
     
  • 3.22, Ретроград (?), 17:10, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Этот самый Redox очень трудно назвать ОС. Если внимательно почитать список его возможностей и ограничений, то оно больше на какую-то демку похоже, чем на ОС. Они не осилили даже работу с дисками, про остальное даже не говорю.
     
  • 2.8, Анонимчжан (?), 16:13, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –8 +/
    они сравнивают его c C++))) это мило однако. как детский автоматик сравнивать с АК))
     
     
  • 3.10, Аноним (10), 16:20, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Не, не, мы используем в нескольких местах в проде: раст однозначно тащит и разработка несколько проще, чем на С++, но изучить и привыкнуть ушло время. Но в целом думаю за ним будущее.
     
     
  • 4.24, Ретроград (?), 17:17, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Ржа, честно говоря, неплохой язык в своей ключевой идее (современный системный ЯП с автоматизацией управления памятью), но реализация и сателлитный шлак просто убивают. У плюсов весьма неуютный синтаксис и неочевидная семантика, и нужно было сильно постараться, чтобы сделать хуже. У Ржи получилось, да так, что смотреть на это без крови в глазах невозможно, а чтение хоть сколько-нибудь сложного кода напоминает изощренную интеллектуальную пытку. Плюс вместо того, чтобы пилить чисто компилятор и отдать все прочее на откуп давно проверенным средствам, они навертели и NIH менеджер пакетов, и NIH систему сборки, и еще кучу всякой херни, которая объективно не нужна и ничем, кроме хипстоты, не выделяется. Тьфу.
     
     
  • 5.29, интеллигентный разработчик (?), 17:37, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > люс вместо того, чтобы пилить чисто компилятор и отдать все прочее на откуп давно проверенным средствам

    Каким интересно? Скоро 2018 год, а single header либы для плюсов это норма, потому что пакетного менеджера нет, систем сборки N штук.

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

     
     
  • 6.30, интеллигентный разработчик (?), 17:38, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Скоро 2018 год

    2019 fixed

     
  • 6.113, PartyPooper (?), 20:15, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > потому что пакетного менеджера нет

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

    > систем сборки N штук

    Есть одна система сборки - Make. Она много лет прекрасно работает. У нее один недостаток: NIH. Вот и плодятся как грибы после дождя сначала обертки поверх нее, потом обертки поверх оберток, потом обертки поверх оберток поверх оберток...

     
     
  • 7.126, интеллигентный разработчик (?), 18:26, 21/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Есть системный менеджер пакетов, его более чем достаточно.

    При условии, что ты пишешь софт под конкретный дистрибутив.

    > Есть одна система сборки - Make. Она много лет прекрасно работает. У
    > нее один недостаток: NIH. Вот и плодятся как грибы после дождя
    > сначала обертки поверх нее, потом обертки поверх оберток, потом обертки поверх
    > оберток поверх оберток...

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

    Потом не забудь убедить весь остальной мир, что показанное тобой - это "нормально".


     
  • 5.32, Аноним (32), 17:57, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Плюс вместо того, чтобы пилить чисто компилятор и отдать все прочее на откуп давно проверенным средствам,

    Ага, на примере C++ можно увидеть как ваш совет клево работает,
    не подскажите почему столько single-header библиотек в C++?

     
     
  • 6.48, _ (??), 23:36, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >не подскажите почему столько single-header библиотек в C++?

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

     
  • 6.114, PartyPooper (?), 20:17, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Ага, на примере C++ можно увидеть как ваш совет клево работает, не подскажите почему столько single-header библиотек в C++?

    Потому что они слишком маленькие, чтобы их оформлять в полноценную библиотеку? Всякие glm и иже с ними весьма тривиальны.

     
  • 5.42, Junior frontend developer (?), 20:22, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Менеджер пакетов и система сборки во всех языках свои, ничего необычного в этом нет.
     
     
  • 6.49, Аноним (49), 23:41, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Менеджер пакетов и система сборки во всех языках свои, ничего необычного в этом нет.

    Но и ничего хорошего тоже.

     
  • 6.115, PartyPooper (?), 20:18, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И в итоге у тебя в системе стоит 50 менеджеров пакетов в дополнение к системному и 100 сборочных систем вместо одной. И зачем все это? Просто кто-то не осилил сделать по-нормальному.
     
     
  • 7.117, Аноним (117), 21:12, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    покажите мне систему сборки, которая одинаково хорошо работает как с джаваскриптом, так и с крестами, перлом и powershell
     
  • 4.35, Анонимчжан (?), 19:15, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    тогда вам и D  понравится))
     
     
  • 5.41, Junior frontend developer (?), 20:19, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    D как раз так себе и уже не актуален. Rust куда интереснее.
     
     
  • 6.47, Иваныч (??), 22:54, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Junior Frontend Developer это явно виднее. Понятный синтаксис если когда-то видел C/C++/C#/Java, грамотно реализованы модули, режим betterC, обширная стандартная библиотека, пакетный менеджер, scope exit, mixin, адекватные шаблоны, CTFE, UFCS, immutable, нормальный const, opDispatch, slices, GC и/или std.allocator под задачу, for & for parallel, foreach в котором сразу есть доступ и к индексу, Unicode, interop вместе с C и что интересно - C++ (что немаловажно, есть куча всего от чего отказаться тяжело)... Это из памяти по быстрому. D очень плохой язык, Вы правы.
     
     
  • 7.57, annual slayer (?), 05:06, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    D как язык прикольный, но во всех бенчмарках, какие я нашел, результаты были не очень по сравнению с другими языками-конкурентами
     
     
  • 8.73, Иваныч (??), 11:24, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    WekaIO Matrix https www weka io resources wekaio-matrix Written in DLang Л... текст свёрнут, показать
     
     
  • 9.77, annual slayer (?), 14:11, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ты точно уверен, что знаешь что такое бенчмарк ... текст свёрнут, показать
     
     
  • 10.88, Иваныч (??), 18:22, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно Из того что видел, D был на уровне с C C Но помимо, WekaIO Matrix... текст свёрнут, показать
     
     
  • 11.95, annual slayer (?), 02:35, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    вот здесь у D в среднем по больнице результаты медленнее чем у конкурентов но т... текст свёрнут, показать
     
  • 11.96, annual slayer (?), 02:36, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    при использовании BetterC или в штатном режиме со сборщиком мусора ... текст свёрнут, показать
     
     
  • 12.104, Иваныч (??), 12:44, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В общем Даже с GC Просто не использовать его как нечеловек Я никогда не любил... текст свёрнут, показать
     
  • 7.74, Junior frontend developer (?), 11:31, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы не советовал иммутабельность даже упоминать как фичу D в контексте Rust, который как раз реализован для контролируемой мутации
     
     
  • 8.82, Иваныч (??), 15:55, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Но все же immutable есть, хоть это и не основное место в языке Так же как и sa... текст свёрнут, показать
     
  • 4.67, Проходил мимо (?), 10:16, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Насчет "проще" - это вы, батенька, погорячились. Но сам по себе язык мне нравится, хотя мозги он способен выносить просто великолепно. И производительность в режиме сборки --debug просто 3.14сец.
     
  • 4.108, adolfus (ok), 16:27, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Будущее у него появится не раньше, чем появится его ANSI/IEEE стандарт. А он не появится до тех пор, пока язык полностью не освободится от авторских и прочих прав.
     
     
  • 5.112, Andrey Mitrofanov (?), 17:41, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > пока язык полностью не освободится от авторских и прочих прав.
    >от авторских и прочих прав.
    >прав.

    Я вижу, что эо слово д.б.бы быть "ограничений".

    Реальность с чёрное-это-белое новоязом пугает, да.

     
  • 3.12, Аноним (-), 16:24, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Какие у вас интересные аналогии, милитаристские.
     
  • 3.21, Аноним (32), 17:09, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > они сравнивают его c C++))) это мило однако. как детский автоматик сравнивать с АК))

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

     
     
  • 4.37, Анонимчжан (?), 20:03, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    растаман что ли? ))) ну взгляни на свой раст. как ломают совместимости. и еще не скоро перестанут. это проблема всех языков проограммирования, которые только появились. поэтому он и не может похвастать привлекательностью. а мозги то у вас еще детские))
     
     
  • 5.39, апро (?), 20:13, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ну взгляни на свой раст. как ломают совместимости

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

    А C++ такое может? Подсказка библиотеки собранные в режиме c++98 и c++11 gcc
    вместе не сможет слинковать, ABI они сломали.

    Я же говорю детская игрушка этот C++.

     
     
  • 6.44, Анонимчжан (?), 21:47, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    всех вас на D))))ахахах
     
     
  • 7.64, Анонис (?), 08:16, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Есть такие вещи, про которые люди хорошо отзываются и рекомендуют их всем, но сами ими не пользуются.

    Ваш д никому не нужен

     
     
  • 8.75, Анонимчжан (?), 12:47, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    я скорее поклонник классического Си плюсы только как его развитие несколько зл... текст свёрнут, показать
     
     
  • 9.83, Аноним (81), 15:57, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Перед Вами стоит прикладная задача Или вы так просто, студент или предподавател... текст свёрнут, показать
     
  • 8.92, Иваныч (??), 20:50, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    После D, C боль Вечно не хватает электронных вещей на которые отвлекает внима... текст свёрнут, показать
     
  • 6.78, Аноним (78), 14:16, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А C++ такое может?

    Может. Пожалуй, самая большая поломка обратной совместимости за всю историю стандартизованного C++ -- удаление std::auto_ptr (и триграфов, если у кого-то был настолько старый код) в C++17. В остальном же никто не запрещает взять код на C++98, добавить в него чего-нибудь из C++11 и собрать всё это в режиме C++17.
    Обратная совместимость ABI на совести разработчиков компиляторов, язык тут не при чём.

     
     
  • 7.94, Аноним (94), 01:21, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > язык тут не при чём.

    А разве не язык заставляет name mangling делать?

     
     
  • 8.99, nobody (??), 10:33, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не язык Это расплата за возможность пользоваться теми же самыми компоновщи... текст свёрнут, показать
     
  • 8.109, Аноним (109), 16:32, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Алгоритм name mangling-а, раскладка классов структур в памяти и прочие элементы ... текст свёрнут, показать
     
  • 7.128, апро (?), 01:49, 02/01/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> А C++ такое может?
    > Может.

    Где? Пересобрать все в режиме C++17 это не то о чем я спрашивал.
    Я спрашивал можно ли часть объектников собрать в режиме c++03, часть в c++11,
    а остальное в c++17 и потом слинковать и чтобы все это заработало корректно?

    Впрочем из вашего ответа очевидно что не может, так кто ломает совместимость?

     
  • 2.11, пох (?), 16:21, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    как какая? mozilla firefox. В принципе ничего система, браузер вот скоро заменят на хромиум, и вообще будет шикарно.

     
  • 2.61, Аноним (61), 07:36, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    firefox quantum
    servo
     
  • 2.68, Аноним (68), 10:19, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Servo
     

  • 1.6, Аноним (-), 16:09, 08/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Cистема контроля версиями pijul, например.
     
  • 1.17, Аноним84701 (ok), 17:05, 08/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > Редакция "2015" включает уже стабилизированную к текущему моменту функциональность и все будущие изменения не нарушающие совместимость, а редакция "2018" дополнительно охватывает нарушающие совместимость новшества,

    Можно было бы не портить традицию и использовать "2.x" и "3.x" для обозначения разных, не совместимых между собой, веток языка.

     
     
  • 2.23, Аноним (32), 17:11, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно было бы не портить традицию и использовать "2.x" и "3.x" для обозначения разных, не совместимых между собой, веток языка.

    ну вообще это версия компилятора (1.31), а версия языка 2018,
    и компилятор 1.31 поддерживает и 2015 и 2018 варианты,
    и может собрать проект из разных (crate) которые вперемешку написаны на 2015 и 2018

     
     
  • 3.25, Ретроград (?), 17:19, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Правильно, и пусть пользователь гадает, почему у него при минорном обновлении с 1.30 на 1.31 все сломалось. Впрочем, растаманам не привыкать, походу...
     
     
  • 4.43, имя (?), 21:37, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А почему при обновлении компилятора должно что-то ломаться? Старый код без аннотации "компилируй меня в 2018 редакции" будет компилироваться по-старому; обратная совместимость на уровне компилятора не нарушена, только на уровне синтаксиса.
     
  • 3.26, Аноним84701 (ok), 17:21, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Можно было бы не портить традицию и использовать "2.x" и "3.x" для обозначения разных, не совместимых между собой, веток языка.
    > ну вообще это версия компилятора (1.31), а версия языка 2018,

    Ну вообще-то версия языка и обыгрывалась (просто у того ЯП версия эталонного _компилятора_ совпадает с поддерживаемой версией ЯП) ;).

     
  • 2.28, Аноним (49), 17:30, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно было бы не портить традицию и использовать "0.2.x" и "0.3.x" нестабильных (тех, в которых всё меняется каждые несколько месяцев) веток языка.

    почин

     

  • 1.31, Аноним (31), 17:41, 08/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Qt не хватает
     
     
  • 2.33, вейланд (?), 18:33, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вот да. Прикрутили бы, писал бы.
     
     
  • 3.34, Анонимчжан (?), 19:14, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    а то что кути постоянно ломают совместимость не страшно? хотя для небольших проектов самое то.
     
     
  • 4.40, апро (?), 20:15, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > а то что кути постоянно ломают совместимость не страшно? хотя для небольших проектов самое то.

    С чего вдруг? В течении мажорной версии они не то что API, ABI не ломают.

     
  • 4.98, Аноним (97), 03:09, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Дык и сам Rust постоянно меняют. Тут ведь как выходит что не новая версия руки в ноги и опять все перехерачивать. То ли дело Си с его обратной совместимостью код 89 года собирает и даже варнинги не валт
     
     
  • 5.127, апро (?), 01:44, 02/01/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Дык и сам Rust постоянно меняют.
    > Тут ведь как выходит что не новая версия руки в ноги и опять все перехерачивать

    И что именно они ломают? С 1.0 только добавляли новый функционал, не ломая уже существующий.

     
  • 2.38, Аноним (38), 20:09, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    https://azul.rs/
     
  • 2.46, Аноним (46), 22:48, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем? WPF или WinForms надо.
     
  • 2.59, Аноним (61), 07:30, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/KDE/rust-qt-binding-generator
     
     
  • 3.66, Fracta1L (ok), 09:30, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Теперь "кедораст" не будет считаться ругательством?
     
     
  • 4.93, Анонимчжан (?), 00:53, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ахахах упал со стула))) теперь все будут боле осмотрительны со словами)))ахахах
     

  • 1.36, Аноним (68), 19:59, 08/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://hacks.mozilla.org/2018/12/rust-2018-is-here/
     
     
  • 2.50, Аноним (50), 23:41, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    "Stuffing my head with code, then turning it into codecartoons" на этом, пожалуй, и закончим.
     

  • 1.51, Аноним (51), 00:03, 09/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Clippy столько исправлений выявил! Очень крутая штука, даже баг помог найти
     
  • 1.52, Аноним (52), 00:18, 09/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Rust уже написан на Rust...
    Может на Go его переписать?..
     
     
  • 2.53, Аноним (53), 00:23, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Любой язык - подмножество Perl ©
     
     
  • 3.65, Аноним (65), 09:13, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто-то забыл про десятое правило Гринспена.
     

  • 1.54, Аноним (54), 00:31, 09/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Для хыпстоты самое то, люди же продолжут писать на c/c++.
     
     
  • 2.55, Аноним (54), 00:37, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    продолжат*
     
  • 2.56, Аноним (52), 01:13, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Хипстерский не люди? Ей богу, фошызм какой-то
     
  • 2.71, Аноним (71), 10:48, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да хипстота ваши плюсы, люди продолжат писать на Каболе.
     
     
  • 3.76, Онаним (?), 13:43, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    кОболе, хипстота )
     
  • 2.89, DerRoteBaron (ok), 18:38, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот только любой новый стандарт C++ переносит костыльные реализации раста двух-трехлетней давности, и то в виде отвратительной STL, да еще и часто с ненулевой стоимостью.
    А си будет жить, правда в основном лишь там, где еще недавно писали только на асме и в компактных инструментах вроде стандартных консольных утилит
     
  • 2.111, Гит (?), 17:31, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Раст создали для того чтобы все знали что может быть ещё хуже и писали дальше бы на С++.
     

  • 1.60, Аноним (61), 07:32, 09/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Запущены инициативы по оптимизации Rust для предметно-ориентированных областей.

    а gui?

     
     
  • 2.63, asargis (ok), 08:06, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    https://azul.rs/
     
     
  • 3.69, Проходил мимо (?), 10:23, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо!
    Надо будет посмотреть, что это такое.
     
  • 3.90, DerRoteBaron (ok), 19:21, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Какой-то ад, в релиз не собирающийся и, похоже, не способный выглядеть хоть сколько-нибудь нативно
     
     
  • 4.91, Аноним (38), 20:50, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да, один из недостатков раста - молодость и недостаток стабильных решений. Все быстро развивается. Тот же azul основан на webrender, который 3 недели назад ушел в бету.

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

     
  • 2.72, Аноним (81), 10:48, 09/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    http://relm.ml/relm-intro
     
     
  • 3.110, Гит (?), 17:29, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не нужно.
     
     
  • 4.118, Аноним (117), 21:24, 10/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Правила статического анализатора раста приводят в бешенство при использовании гтк. И хочется какого-никакого паттерна, чтобы были вьюхи, модели, и чтобы не начинать каждый мелкий проект с написания велосипеда MVC
     

  • 1.86, Anon4ik_ (?), 17:47, 09/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > предметно-ориентированных областей

    Спасибо тебе автор за грамотные термины, как бальзам на душу.

     

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



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

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