The OpenNET Project / Index page

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

Выпуск языка программирования Rust 1.34

14.04.2019 11:07

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

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

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

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

    Для добавления внешних реестров в .cargo/config (расположенном в $HOME либо в директории с пакетом) предусмотрена секция "[registries]", а для использования внешнего реестра в описании каждой зависимости в Cargo.toml появилась опция "registry". Для подключения к дополнительному реестру достаточно поместить токен аутентификации в файл ~/.cargo/credentials и выполнить команду "cargo login --registry=my-registry", а для публикации пакета - "cargo publish --registry=my-registry";

  • Добавлена полноценная поддержка использования оператора "?" в тестах doctests, позволяющих использовать код примеров из документации в качестве тестов. Ранее оператор "?" можно было использовать для обработки ошибок в процессе выполнения тестов только при наличии функции "fn main()" или в функциях "#[test]";
  • В определяемых при помощи процедурных макросов собственных атрибутах (custom attribute) обеспечена возможность использования произвольных наборов токенов ("#[attr($tokens)]", "#[attr[$tokens]] и #[attr{$tokens}]"). Ранее элементы могли задаваться только в древовидном/рекурсивном виде c использованием строковых литералов, например "#[foo(bar, baz(quux, foo = "bar"))]", а теперь возможно использование перечислений ('#[range(0..10)]') и конструкций вида "#[bound(T: MyTrait)]";
  • Стабилизированы типажи (trait) TryFrom и TryInto, позволяющие выполнять преобразования типов с обработкой ошибок. Например, методы, подобные from_be_bytes, с целочисленными типами в качестве входных данных используют массивы, но данные часто поступают c типом Slice, а преобразование между массивами и слайсами проблематично делать вручную. При помощи новых типажей указанная операция может быть совершена на лету через вызов .try_into(), например, "let num = u32::from_be_bytes(slice.try_into()?)". Для преобразований, которые всегда завершаются успешно (например, из типа u8 в u32) добавлен тип ошибок Infallible, позволяющий прозрачно использовать TryFrom для всех существующих реализаций "From";
  • Объявлена устаревшей функция CommandExt::before_exec, позволявшая выполнить обработчик перед запуском exec, который выполнялся в контексте дочернего процесса, ответвлённого после вызова fork(). В подобных условиях некоторые ресурсы родительского процесса, такие как файловые дескрипторы и отражённые области памяти, могли быть дублированы, что могло привести к неопределённому поведению и неверной работе библиотек. Вместо before_exec рекомендуется использовать unsafe-функцию CommandExt::pre_exec.
  • Стабилизированы знаковые и беззнаковые атомарные целочисленные типы размером от 8 до 64 бит (например, AtomicU8), а также знаковые типы NonZeroI[8|16|32|64|128].
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub] и SystemTime::checked_[add|sub]. Стабилизированы функции iter::from_fn и iter::successors;
  • Для всех целочисленных типов реализованы методы checked_pow, saturating_pow, wrapping_pow и overflowing_pow;
  • Добавлена возможность включения оптимизаций на этапе связывания через указание сборочной опции "-C linker-plugin-lto".


  1. Главная ссылка к новости (https://blog.rust-lang.org/201...)
  2. OpenNews: Выпуск языка программирования Rust 1.33
  3. OpenNews: Cloudflare опубликовал реализацию VPN WireGuard на языке Rust
  4. OpenNews: Выпуск операционной системы Redox OS 0.5, написанной на языке Rust
  5. OpenNews: Проект RustPython развивает реализацию интерпретатора Python на языке Rust
  6. OpenNews: Компания Cloudflare открыла код реализации протокола QUIC на языке Rust
Лицензия: CC-BY
Тип: Программы
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (159) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
 
  • 1.1, Аноним (1), 11:26, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Троекратное "урра!"
     
     
  • 2.8, Аноним (8), 12:21, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Расти, расти, сынок, кушай Растишку :)
     
     
  • 3.51, Аноним (51), 16:34, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "М-м-м-м Данон"
     
  • 3.139, x (?), 13:35, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "Растишишку" же ну
     
  • 1.2, Аноним (2), 11:59, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Давайте только серьезно: на сколько нормальный этот язык?
     
     
  • 2.3, Аноним (3), 12:06, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Если почистить от ржавчины, то будет норм.
     
     
  • 3.5, microcoder (ok), 12:07, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ржавчину от ржавчины? Что будет в остатке?
     
     
  • 4.6, Аноним (3), 12:15, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А останется Си.
     
     
  • 5.17, Аноним84701 (ok), 13:00, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > А останется Си.

    Не останется. Для этого нужно не только чистить (т.е. удалить пространство имен, заменить нормальный, интегрированный непосредственно с ЯП движок макросов на "левый", отдельный препроцессор, умеющий лишь чуть больше, чем search&replace, удалить излишне строгую и гибкую типизацию, эти ваши новомодные трейты и дженерики), а еще и добавлять -- например, кучу исторически обусловленных UB.


     
     
  • 6.33, Аноним (33), 14:06, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Не беспокойтесь, над этим уже работают.
     
  • 2.4, анонас (?), 12:06, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Самый лучший язык in the world!
     
     
  • 3.77, Злюка (?), 21:16, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +33 +/
    in the hello world!
     
  • 2.15, anono (?), 12:59, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    критерий нормальности языка?!
     
     
  • 3.22, Аноним (22), 13:19, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > критерий нормальности языка?!

    90 градусов к мейнстриму

     
     
  • 4.92, НяшМяш (ok), 23:43, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    и по-моему, он отлично справляется
     
  • 2.31, Fracta1L (ok), 13:54, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На 8
     
  • 2.62, Аноня (?), 18:17, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Из плюсов
    1. Интересная асинхронная модель
    2. Отсутствие Null, очень мощный патерн-мачинг, Энамы со значениями
    2. Абстракция от любых небезопасных взаимодействий с указателями
    3. Возможность любых небезопасныйх действий с указателями в unsafe
    3. FFI C, можно любую библиотеку в пару кликов завернуть
    2. Единый стиль форматирования заложен в язык Rustfmt
    3. Rustup как менеджер установленных версий раста, очень удобно
    4. Cargo, очень удобно


    Из минусов (имхо)
    6. Куча больных фанатиков, которые после месячного опыта в JS лезут куда не надо

     
     
  • 3.90, Аноним (90), 23:22, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –6 +/
    > Интересная асинхронная модель

    Ничего интересного, шлём мессаджи в чаннелах.
    > Отсутствие Null, очень мощный патерн-мачинг, Энамы со значениями

    Option, pattern-matching слизан со Scala, он не дотягивает всё равно, Энамы со значениями - ололо, ну никто такого не умеет.
    > Абстракция от любых небезопасных взаимодействий с указателями

    В любых managed языках
    > FFI C, можно любую библиотеку в пару кликов завернуть

    Ok
    > Единый стиль форматирования заложен в язык Rustfmt

    Зачем это в языке. Решается сторонними тулами
    > Rustup как менеджер установленных версий раста, очень удобно

    Ok
    > Cargo, очень удобно

    Решается автоматическими системами сборки

     
     
  • 4.97, Аноним (97), 00:27, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Option, pattern-matching слизан со Scala,

    Scala-утёнок

     
     
  • 5.127, Аноним (90), 11:10, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    По существу есть что, кроме ad hominem?
     
  • 4.113, Аноним (113), 07:24, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +14 +/
    Тут весь прикол в том, что антинулл абстракции и паттерн-мэтчинг поставили на низкровневый язык. Так что все эти ваши "слизано со Скала" и "в 100500 языках есть" не аргумент - есть-то есть, но обычно это языки с ГЦ, а то и интерпретируемые.
     
  • 2.73, Аноним (113), 20:42, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    В нем же безопасная память без GC, это разве не киллер-фича?
     
  • 2.75, Аноним (75), 20:50, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    У тебя даже с русским нелады, какая тебе разница
     
  • 2.91, Аноним (91), 23:35, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Давайте только серьезно: на сколько нормальный этот язык?

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

     
     
  • 3.161, burjui (ok), 11:14, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Наглое враньё. Разработчики отвечают: пишите RFC, мы почитаем и подумаем. Иногда в язык что-то из RFC попадаёт. Иногда даже в изначальном виде.
     
  • 1.7, Анонимс (?), 12:16, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Что говорят бенчмарки Rust vs. C++, какой язык более производительный и удобный в разработке? Или ещё пока рано делать какие-то выводы?
     
     
  • 2.16, zo0M (ok), 13:00, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    вас в гугле забанили?
    Первый же результат поисковой выдачи:
    https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/rust-gpp.ht
     
     
  • 3.24, rustshlak (?), 13:28, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    выборка не репрезентативная
    в отличии от раста
    на С и С++ можно написать код по разному
    и в примере как раз не самые лучшие реализации
     
     
  • 4.26, Аноним84701 (ok), 13:40, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > и в примере как раз не самые лучшие реализации

    Ну да, все так - проект "The Great Computer Language Shootout" слишком молод, за чуть менее чем 20 лет не успели вылизать реализации:
    https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/revcom
    всего 6 штук плюсовых.
    И фильтр там хитрый стоит -- так-то туда код может любой желающий запостить (при мне ЛОРовец закоммитил более быструю реализацию чего-то для своего любимого ЯП), но вот анонимы с опеннета фильтруются только так, иначе бы они давно показали, как надо правильно реализовать! :)

     
     
  • 5.35, rustshlak (?), 14:18, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    у меня достаточно знаний что бы увидеть почему реализация на расте опередила на чуть чуть реализацию на СИ
    и как сольет раст если из реализации на СИ это устранить

    а вам слабо назвать это причину ?

     
     
  • 6.37, Аноним84701 (ok), 14:23, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > у меня достаточно знаний что бы увидеть почему реализация на расте опередила
    > и как сольет раст если

    "Talk is cheap. Show me the code!" (c)
    https://salsa.debian.org/benchmarksgame-team/benchmarksgame/blob/master/CONTRI
    > Upload a complete tested source-code file
    > Open a new [Contribute Source Code](https://salsa.debian.org/benchmarksgame-team/benchmarksgame/issues/new?issuabl Source Code) issue.
    > Attach your complete tested source-code file.

    .

     
  • 6.42, Ordu (ok), 14:55, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > у меня достаточно знаний что бы увидеть почему реализация на расте опередила на чуть чуть реализацию на СИ
    > и как сольет раст если из реализации на СИ это устранить

    Почему же?

    У меня нет желания копаться в коде и профайлить его, тем более что у меня есть generic объяснение: это работа оптимизатора. Меньше десяти процентов производительности, на фоне нескольких вариантов C'шной реализации -- это стопудов работа оптимизатора, C просто упёрся в невозможность оптимизировать некоторые вещи, в силу того что он позволяет слишком много свобод программисту. Искусственный интеллект оптимизатора недостаточно интеллект, чтобы сообразить некоторые вещи, а программист недостаточно искусно владеет C, для того, чтобы эти вещи выразить в коде в виде понятном для оптимизатора.

    Строгость rust'а позволяет иногда оптимизатору оптимизировать лучше. Или программисту меньше парится о возможных ошибках, потому как они невозможны. Тут ярким примером может служить utf8 строка: rust валидирует эти строки на входе, что с одной стороны замедляет, например, работу BufReader::read_line, но с другой стороны позволяет затем работать со строкой исходя из предположения, что мы имеем дело с валидным utf8, не добавляя в код условных переходов на случай невалидного utf8, и таким образом делая быстрее любой код итерирующий по символам. То есть вместо того, чтобы при каждом проходе по строке производить валидацию параллельно, мы делаем её один раз. И это может проявлятся не только в случае utf8 строк, но и в случае, например, указателей, потому что компилятор rust'а И программист, полагаются на то, что эти указатели ненулевые, в то время как C'шный код вынужден постоянно держать в уме возможность для любого указателя быть нулевым.

    Это, кстати, создаёт impedance mismatch на границе между rust'овым кодом и C'шным, потому что получая, например, строку из C'шного кода (то есть char*), мы должны проверить не NULL ли он, проверить валидность этой строки (потому что C запросто может жонглировать невалидными utf8 строками), и только после этого начинать какую-то осмысленную работу с этой строкой (это ещё если не придётся упереться в вопросы lifetime'ов, и не придётся рубить эти проблемы как гордиев узел посредством растового аналога strdup, хотя подобные проблемы, наверное, и в грамотном C'шном коде будет решаться так же, в rust'е они просто ярче проявляются и их сложнее не заметить). Но это я отвлёкся от темы.

    Помимо этого может сказываться большая выразительность языка. Например, rust для итерации позволяет использовать не только циклы, но и итераторы с их функционалами, типа map и reduce, которые гораздо удобнее оптимизатору для понимания происходящего, и более того ограничивают программиста загоняя его в узкие рамки, и вынуждая писать код, который легко векторизовать.

    Но это всё теоретические сопли, рассуждения из общих соображений. И я бы с радостью посмотрел бы на подробное сравнение C'шного кода и Rust'ового, чтобы с профайлером, ассемблерными дампами и прочими атрибутами, которое бы либо подтвердило мои общие соображения, либо опровергло бы их, дав альтернативное объяснение, которое лучше отражает реальность. Но сам я не готов лезть и тратить час, два или полдня на это.

     
     
  • 7.69, Forth (ok), 19:09, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если говорить про область системного ПО, то там часто с UTF-8 дела иметь не приходится.
    Что касается null, то многие функции пишутся с расчетом, что null туда не прилетит и никаких проверок не делается в релизном коде. В дебажном компилится макросами assert. Где тут потери производительности?
    Итераторы в С всегда делались на макросах или на структурах, если нужно.
    Возвращаешь вместо указателя на коллекцию итератор и функцию next.
    P.S. Сам перехожу на Rust с C, там где он был мне C был нужен. Если буду писать на Rust быстрее, чем на C, уже стоило того.
     
     
  • 8.74, Ordu (ok), 20:45, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Да Ты читаешь файл конфигурации, в нём может быть много чего, в том числе и utf... текст скрыт, показать
     
     
  • 9.78, JustCurious (?), 21:26, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Круто Редко на опеннете натыкаешься на такие качественные комментарии Спасибо ... текст скрыт, показать
     
  • 9.86, Forth (ok), 22:40, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я про то, что большой вопрос сколько данных на самом деле содержат utf-8 В Java... текст скрыт, показать
     
     
  • 10.96, Ordu (ok), 00:22, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Some None будет возникать, если мы передаём в функцию или извлекаем из какой-ни... текст скрыт, показать
     
     
  • 11.122, Forth (ok), 10:27, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В C можно не передавать null и делать assert и ничего не проверять Статический ... текст скрыт, показать
     
  • 8.80, Аноним84701 (ok), 21:38, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https github com systemd systemd issues 4234 code Ubuntu, 16 04 systemd v22... текст скрыт, показать
     
     
  • 9.88, Forth (ok), 22:42, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так тут assert не при чем Assert для отлова ошибок в своем коде, а не для прове... текст скрыт, показать
     
  • 7.149, Аноним (149), 19:47, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    http://dtrace.org/blogs/bmc/2018/09/28/the-relative-performance-of-c-and-rust
     
  • 6.104, Аноним (104), 01:52, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > у меня достаточно знаний что бы увидеть почему реализация на расте опередила
    > на чуть чуть реализацию на СИ
    > и как сольет раст если из реализации на СИ это устранить
    > а вам слабо назвать это причину ?

    Не говоришь потому, что боишся быть опозореным.

     
  • 4.28, zo0M (ok), 13:44, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    давайте факты в студию, или вы так, заради "потрындеть"? мне ваша полемика до одного места
    я вам бенчмарк, а теперь вы мне свой, вот тогда и поговорим серьезно.
     
     
  • 5.36, rustshlak (?), 14:23, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –8 +/
    это не ваш бенчмарк
    а я достаточно уверен в себе что бы никому ничего не доказывать

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

    какой то чудо растоман видимо только закончил школу
    и применил свои знания на бенчмарке
    получив чуть выиграша против "тупой реализации на СИ"

    и стадо растоманов уже подумало что их раст впереди ЛОЛ))))

    сравните лучше одинаковые алгоритмические сложности на СИ и расте
    и поймете в какой попе ваш раст

     
     
  • 6.64, Аноня (?), 18:37, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Rust и c/с++ не настолько отличаются в производительности, чтобы серьёзно их сравнивать. Ну получите вы отличие в 7% И что?

    Перепишите всё с сей на раст или наоборот?

    Дело не в производительности, и производительность не первоочередная задача у раста.

     
     
  • 7.101, Аноним (101), 00:55, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У раста вообще не понятно какая задача. Так замусорить синтаксис только ради введения семантики владения памятью - это надо было додуматься. А если кто-то придумает как дедлокобезопасность реализовать - опять новый язык с кучей мусора в синтаксисе будет?
     
     
  • 8.116, Аноня (?), 08:07, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, некоторые проблемы нереально решить средствами языка Круг задач, решаемый ... текст скрыт, показать
     
     
  • 9.124, Аноним (124), 11:00, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а ещё собственным определением понятия ООП, которое тоже ограничено и не включае... текст скрыт, показать
     
     
  • 10.136, анонн (?), 12:19, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А на самом деле правильное определение ООП будет Но полемика и передерг почему-... текст скрыт, показать
     
  • 10.148, Аноня (?), 19:19, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Понятное дело, объектов-то нет В расте никто не обещал ООП ... текст скрыт, показать
     
  • 6.93, НяшМяш (ok), 23:50, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вас в детстве языком без указателей и UB били? Что за ненависть к просто ещё одному языку? Почему вы считаете, что лучше опозориться прилюдно, чем пройти мимо новости?
     
  • 6.123, Аноним (123), 10:56, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так ты и не доказывай, просто объясни как по-твоему можно быстрее написать код. А ходить и без дела поливать говном людей, которые меньше тебя разбираются в языке, выставляет тебя самого как недавно школу окончившего.
     
  • 2.19, GentooBoy (ok), 13:04, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Два небольших примера что делают на расте при помощи макросов.
    http://diesel.rs https://usehelix.com
    Если нужно живое приложение то https://github.com/dani-garcia/bitwarden_rs
    отлично показывает что раст может сильно потеснить другие яп, в том числе и го, ну а  для С++ раст прямой конкурент.
    Бенчи вам тут мало помогут, https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/rust-gpp.ht
     
     
  • 3.41, Аноним (41), 14:50, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Главное верить.
     
  • 3.57, Аноним (57), 17:07, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Трындец, вот это фанбойство в терминальной стадии: макросы, рубины и непревзойденная ржавчина в одной куче с солнцеликой восторженностью.
     
     
  • 4.70, GentooBoy (ok), 19:27, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Даже приятно что у вас так пригорело.
    Держи еще прикольных проектов
    https://rocket.rs
    https://github.com/jwilm/alacritty
    https://github.com/sharkdp/bat
    https://github.com/tikv/tikv
     
     
  • 5.76, Аноним (76), 21:02, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, пет-проектов у меня и своих хватает.
     
     
  • 6.99, GentooBoy (ok), 00:38, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Приоткройте завесу тайны на каком ЯП?
     
  • 2.34, Ordu (ok), 14:10, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Что говорят бенчмарки Rust vs. C++, какой язык более производительный и удобный в разработке?

    Бенчмарки тебе ничего не скажут. rust работает на том же уровне, что и C++, и абстракции использует схожие, а это значит, что в бенчмарках отличия будут в обе стороны и ничего не скажут осмысленного. Про удобство в разработке они тоже ничего не скажут тебе. Если вопрос интересен, то у тебя есть два способа исследовать его:
    1. читать в интернете посты в блогах вида "я писал на C++ 20 лет, и решил попробовать rust"
    2. писать на C++ 20 лет, а потом попробовать rust.

     
     
  • 3.46, хотел спросить (?), 16:11, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    почему вы сравнивате с плюсами, а не с С, если в расте нет классов?
    или я что-то пропустил?
     
     
  • 4.55, Ordu (ok), 16:50, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Во-первых, потому что выше вопрос был про C , а не про C Во-вторых, потому что... текст скрыт, показать
     
  • 4.65, Аноня (?), 18:42, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну потому что классов нет намеренно. Есть трейты и обобщения.
     
     ....нить скрыта, показать (36)

  • 1.9, developer (??), 12:25, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –17 +/
    Какая разница производительный он или удобный? читаем "развиваемого проектом Mozilla" - то есть с учетом падения доли лисо-браузера под удар ставиться и само развитие и поддержка ражавчины.
    Следовательно энтузиастам поковыряться вечером дома - зеленый свет, но как-то ассоциировать это перспективой и ставить на это уже перебор.
     
     
  • 2.10, username (??), 12:29, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да ладно, вон уже амазон ставку сделал на длительную поддержу. А вы все не стоит да ни к чему.
     
  • 2.18, zo0M (ok), 13:01, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ох уж эта диванная аналитка от местных икспердов... /facepalm
     
  • 2.23, Аноним (23), 13:20, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > ставиться

    http://tsya.ru/

     
  • 2.52, мурзилла (?), 16:36, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    не переживайте, мы зарабатываем не на браузере, а на пилежке инвесторских бабок.

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

     
     
  • 3.128, Аноним (124), 11:13, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > инвесторы как раз одобряют их выкидывание в бездонные ямы типа хруста

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

     
  • 1.11, scor (ok), 12:30, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А там уже можно хоть в каком-то виде делать вот такие штуки https://www.opennet.ru/openforum/vsluhforumID3/112498.html#37 или пока так и не осилили?
     
     
  • 2.32, Ordu (ok), 14:03, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, по-моему, ещё не осилили. Трейты для [T; N], реализуются макросами для всяких разных N от 1 до 32 (или типа того). То есть, я не заглядывал в этот библиотечный код уже год или два, но это видно в доках, плюс я думаю, я бы заметил в release notes, если бы что-то изменилось.
     
  • 1.12, Аноним (12), 12:52, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    "Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик" - оно что, GUIвое?
     
     
  • 2.14, zo0M (ok), 12:58, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    нет
     
  • 2.20, Аноним (20), 13:08, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    коммент, когда хочешь обгадить новость, но не знаешь как
     
  • 1.21, Аноним (21), 13:14, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Эталонное ненужно, никакой совместимости с C/C++ или чем нибудь другим, даже в 1.0 не было union, только сейчас добавили атомики (в С11/C++11 были уже, а с расширениями еще раньше). Уже мертвый язык.
     
     
  • 2.27, YetAnotherOnanym (ok), 13:44, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > никакой совместимости с C/C++

    У них что, нули и единицы разные?

     
     
  • 3.48, Аноним (21), 16:24, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    #include <stdlib.h> не сделаешь.
     
     
  • 4.66, Аноня (?), 18:47, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    https://doc.rust-lang.org/book/ffi.html
     
     
  • 5.82, Аноним (21), 22:08, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С помощью этого нельзя сделать #include <stdlib.h>
     
     
  • 6.89, Аноня (?), 22:49, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > С помощью этого нельзя сделать #include <stdlib.h>

    Назавите причину, по которой компилятор раста должен работать с препроцессором СИ?
    Как вы вообще себе это представляете? Я в недоумении

     
     
  • 7.126, Аноним (126), 11:05, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> С помощью этого нельзя сделать #include <stdlib.h>
    > Назавите причину, по которой компилятор раста должен работать с препроцессором СИ?

    Повторное использование кода.

    > Как вы вообще себе это представляете?

    https://ru.wikipedia.org/wiki/MLton#NLFFI
    http://people.cs.uchicago.edu/~blume/papers/nlffi-entcs.pdf

    > Я в недоумении

    Сочувствую.

     
     
  • 8.150, Аноня (?), 19:53, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Берёте библиотеку на сях, заворачиваете её в rust обёртку и используете из своег... текст скрыт, показать
     
  • 6.158, KonstantinB (ok), 10:51, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А еще с помощью этого нельзя сделать const leftPad = require('left-pad'). Беда, огорчение!
     
  • 2.30, zo0M (ok), 13:48, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    проходя проходите
     
  • 2.39, Аноним84701 (ok), 14:36, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >  даже в 1.0 не было union,

    Вообще-то, растовый enum - это вполне себе "tagged union". Только вот проверку тэга там частенько можно сделать в компайлтайме, в отличие от …

     
     
  • 3.49, Аноним (21), 16:25, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А простой union они добавили просто так? Напоминаю что язык для системщины.
     
     
  • 4.60, Аноним84701 (ok), 17:33, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Напоминаю что язык для системщины.

    И что вас так шокирует?
    В асме нет никаких union, да и в си без них можно вполне обойтись.
    Unon -  всего лишь "сборник" возможных типов, для удобства (в довольно специфичных случаях) чтобы не пихать все в глобальное пространство имен.

    Напоминаю, что в ржавчине есть дженерики, dynamic-dispatch  и привод куска памяти к определенному типу (хоть и в ансейфе).
    И вообще, когда начинается пляска "я точно знаю, что в этом куске памяти вооот этот вот тип будет" -- это все в unsafe.

    ЗЫ: посмотрел -- оно действительно в ансейфе :)
    https://doc.rust-lang.org/reference/items/unions.html

     
  • 2.61, Junior frontend developer (?), 17:53, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Простой union небезопасен и потому был исключен из дизайна. Вроде позже добавили как часть небезопасного надмножества языка.
    Аналогично и с ООП. Это набор ~15 различных фич разной нужности и безопасности. В rust добавили/добавляют только те, что безопасны и не зарекомендовали себя как плохие практики.
     
  • 2.72, Аноним (113), 20:00, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А безопасность памяти тебе тоже не нужна?
     
     
  • 3.83, Аноним (21), 22:09, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А для этого нужно было городить новый язычек?
     
     
  • 4.85, Анонн (?), 22:40, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > А для этого нужно было городить новый язычек?

    А как ещё можно встроить нужную для этого семантику?
    Нет безусловно можно было взять за основу си,вот только на выходе все равно получился бы ЯП, лишь местами и неудачным синтаксисом напоминающий си, но с другими парадигмами и иным подходом к разработке.
    Т.е. по сути тот же "новый язычок". И толку тогда, тянуть все костыли и подпорки?

     
     
  • 5.100, Аноним (101), 00:40, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В Си++ семантика владения вроде растовской реализуется простым введением библиотечных типов-меток и обучением компилятора как их понимать. Только оказалось, что 80% таких проверок можно реализовать даже без меток, а растовская семантика переусложнена до невозможности.
     
     
  • 6.109, Аноним (113), 05:49, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    C++ ужасно сложен, и учетки в нём все равно по полной программе
     
  • 4.110, Аноним (113), 05:49, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А как ты в старо сделаешь, чтобы компилятор строго все проверял? Сделать-то можно, да только это уже все равно будет другой язык
     
  • 1.40, Аноним (40), 14:40, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Эталонное не нужно нет нормального ООП, ведь в new age программерских сект... текст скрыт, показать
     
     
  • 2.44, Ordu (ok), 15:26, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Что ты называешь нормальным ООП Как в java Как в C Как в Haskell Как в g... текст скрыт, показать
     
     
  • 3.47, хотел спросить (?), 16:18, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > тебе не может запретить писать ООП код на C или на ассемблере

    Можно пожайлуста реализацию полиморфизама на C? Или инкапсуляции?

     
     
  • 4.53, Ordu (ok), 16:44, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В качестве примера инкапсуляции в C, ты можешь взять любую функцию любого C шног... текст скрыт, показать
     
     
  • 5.107, хотел спросить (?), 03:33, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    gt оверквотинг удален Что-то я не вижу тут инкапсуляции Обрисуйте ход ваших м... текст скрыт, показать
     
     
  • 6.138, Ordu (ok), 13:34, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Там сокрыты все поля структуры MyObject Ты даже не знаешь как они называются Т... текст скрыт, показать
     
     
  • 7.165, хотел спросить (?), 12:11, 18/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты любишь динамическую типизацию?

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

    --

    По какой причине у нас нет доступа к филдам MyObject?

     
     
  • 8.166, Ordu (ok), 12:32, 18/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Но динамический диспатч -- это и есть динамическая типизация У тебя есть Parent... текст скрыт, показать
     
     
  • 9.167, Junior frontend developer (?), 19:03, 18/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Dynamic dispatch 8212 это средство для более обобщенного интерфейс-ориентиров... текст скрыт, показать
     
  • 9.168, хотел спросить (?), 22:30, 18/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    не-не-не и я не говорил, что я за динамический диспатч или за динамические языки... текст скрыт, показать
     
     
  • 10.169, Ordu (ok), 22:52, 18/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А, простите Ну дык тогда rust самое то, что нужно вам Там динамический диспатч... текст скрыт, показать
     
     
  • 11.170, хотел спросить (?), 10:52, 19/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Чем это проще лучше, чем то что мы имеем в C , C , Java Для меня этот подоход ... текст скрыт, показать
     
     
  • 12.171, Ordu (ok), 12:55, 19/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Почему это должно быть проще или лучше ... текст скрыт, показать
     
  • 11.173, Junior frontend developer (?), 19:20, 21/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Rust позволяет куда более гибко организовывать горизонтальную композицию, вместо... текст скрыт, показать
     
  • 4.58, Аноним (57), 17:13, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Или инкапсуляции?

    Вот в этом месте растофанатикам лучше бы молчать в тряпочку.

     
     
  • 5.67, Аноня (?), 19:00, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    https://doc.rust-lang.org/stable/book/ch17-01-what-is-oo.html
     
  • 4.125, Челодой моловек (?), 11:03, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы посмотрел в сторону GObject, например вот здесь https developer gnome or... текст скрыт, показать
     
  • 3.54, Аноним (40), 16:47, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ООП с наследованием, где методы и свойства наследуются автоматически Нет ООП ... текст скрыт, показать
     
     
  • 4.59, Ordu (ok), 17:19, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Deref DerefMut тебе в помощь Дайте мне определение синтаксического сахара Всё ... текст скрыт, показать
     
     
  • 5.63, Аноним (40), 18:31, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И где тут автоматическое наследование Всё же руками приходится делать, не Да ... текст скрыт, показать
     
     
  • 6.71, Ordu (ok), 19:42, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Написать метод deref self - ParentType Да надо И что Интерпретатор -- это... текст скрыт, показать
     
     
  • 7.81, Аноним (40), 21:55, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Спасибо за наводку, но я её правда не до конца ещё осознал Не могли бы вы приве... текст скрыт, показать
     
     
  • 8.95, Ordu (ok), 00:14, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    https doc rust-lang org book ch15-02-deref html Там правда примеры с умными ук... текст скрыт, показать
     
     
  • 9.106, Аноним (40), 02:53, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    gt оверквотинг удален На мой же взгляд компиляцию не всегда имеет смысл делать... текст скрыт, показать
     
  • 5.68, Аноня (?), 19:03, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Deref антипаттерн
     
     
  • 6.117, Банда Четырёх (?), 09:40, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Так и наследование антипаттерн.
     
     
  • 7.159, KonstantinB (ok), 18:49, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Наследование наследованию рознь.

    Наследование от абстрактного класса при четко выраженном отношении "is-a" - абсолютно ок. В Расте трейты с дженериками - вполне себе полноценная замена (при этом намного мощнее).

     
  • 4.157, KonstantinB (ok), 05:55, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    "ООП с наследованием" - это и есть "как в C++ и Java". К ООП концепция наследования прямого отношения не имеет (см. Smalltalk).
     
  • 2.45, Вы забыли заполнить поле Name (?), 16:07, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > предлагается ставить язык с какого-то говносайта путём curl | bash вместо использования
    > пакетов дистрибутива

    патамушта разработчики сидять под Б-жественной Десяточкой, у них все так ставится.

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

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

    > пакет для Qt какая-то недоделанная альфа

    ну это-то как раз единственное, что нормально. И может даже со временем альфа превратится в бету.

    "зато у них разработчики дешовенькие!"

     
  • 2.56, Аноним (20), 16:56, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >в коде по-видимому захардкожено, что некоторые фичи языка можно использовать только на найтли, а большинство пакетов как раз зависит от пакетов, зависящих от ночных фич  

    найтли чаще всего требуется для низкоуровневых вещей вроде ассемблерных вставок, конпеляния чего-то специфического с no_std, работы с аллокаторами и т.п. Про "большинство пакетов" конечно чушь. Большинство пакетов, которыми ты интересовался.

     
     
  • 3.129, Ретроград (?), 11:24, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот это, кстати, вообще ядерная пушка. Язык системного программирования, в котором нельзя делать ассемблерные вставки и собрать бинарник без стандартной библиотеки. Особенно веселила ситуация с no_std, который спустя несколько лет слезных просьб эмбеддед-разработчиков таки попал в stable, а необходимый для него panic_handler еще +много лет висел за feature gate и в итоге в стабильном компиляторе была фича, которую невозможно использовать. Кажется, буквально в декабре 2018 года это дело наконец-то пофиксили и теперь можно собирать standalone бинарники. Спустя 8 лет!
     
  • 2.103, FHD (?), 01:44, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> Нет предсобраных пакетов

    Ты совсем кретин, раз не понимаешь, что на выходе нужен нативный код под конкретную платформу!
    В текущем виде ты можешь компилировать под платформы, который могут выйти позже

     
     ....нить скрыта, показать (31)

  • 1.79, Аноним (-), 21:30, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > а теперь возможно использование перечислений ('#[range(0..10)]') и конструкций вида "#[bound(T: MyTrait)]";

    О да! Вот увидит какой-нибудь непосвященный шпион такой код и нихрена поймёт! Круто!

     
     
  • 2.84, Аноним (84), 22:34, 14/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это да.
    Вообще, из того, что в расте цикл
    for x in 0..L
    означает, что x принимает значения от 0 до L-1 (хотя 0..L как раз выглядит СИММЕТРИЧНЫМ диапазоном, в отличие от 0..=L) уже говорит о том, что язык был мучительно придуман во время сидения на унитазе.
    Или, например, я могу создать range целых чисел и проитерировать по нему. При этом range char'ов я создать тоже могу, но проитерировать по нему - нет. Сюрпрайз!
    Спасибо, жрите сами.
     
     
  • 3.105, kiwinix (?), 02:12, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не встречал надобности итерировать буквы ни в расте ни в других языках.

    А значит претензия не засчитана.

    П.С. Скорее всего не так уж и хотелось итерировать буквы

     
     
  • 4.115, Аноним (115), 07:33, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Отличительная черта фанатиков чего бы то ни было (будь то смартфон, DE/тайловый менеджер или язык программирования) - кричать НИНУЖНА, если в их объекте фанатизма нет того, что оказалось нужным обычным людям, не фанатикам.

    Зачастую после крика НИНУЖНА следуют далеко идущие выводы о собеседнике.

     
  • 3.111, Аноним (20), 06:44, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >При этом range char'ов я создать тоже могу, но проитерировать по нему - нет  

    for c in b'a'..=b'z' {}

     
     
  • 4.114, Аноним (115), 07:29, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не-не, дружок. Интересует юникод.
     
     
  • 5.118, Аноним (20), 09:51, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ясно. Ты не нашел в доках rust функцию char::from_u32 и правильные диапазоны в стандарте utf-8, и побежал жаловаться на форумы, какой плохой этот rust. Дай угадаю - ты веб-макака, да?
     
     
  • 6.119, Аноним (115), 09:58, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не-не, дружок. Я её нашёл и мне ПРИШЛОСЬ её использовать - преобразовывать range char'ов в range int'ов, и итерировать уже по нему. Что в C я мог, кстати, сделать без всяких преобразований.
    Но ты не отвлекайся. Скажи, пожалуйста, зачем в прекрасном расте есть возможность создать range символов, если по нему нельзя итерировать?
     
  • 5.121, scor (ok), 10:22, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не-не, дружок. Интересует юникод.

    Вообще, да, странная ситуация.
    С одной стороны есть вполне вменяемое объяснение почему нет итератора для чаров https://internals.rust-lang.org/t/iterating-over-range-char/8965/9
    С другой стороны Ord таки задефайнен для чаров и ничто не мешало приделать итератор, раз уж определён порядок.
    Но с третей стороны, например, в том же хаскеле такое делать можно, но совершенно не очевидно, чего хотел программист делая какой-нибудь
    '''
    map f ['а' ..'я']
    '''
    Это в рамках какого алфавита должно происходить? Или вот это что значит?
    '''
    λ> 'е' < 'ё'
    True
    λ> 'ё' < 'ж'
    False
    '''
    Понятно, что это из-за:
    '''
    λ> 'е'
    '\1077'
    λ> 'ё'
    '\1105'
    λ> 'ж'
    '\1078'
    '''
    Но если принять, что это нормальное поведение и так и должно быть, то получается, что мы хотим работать тупо с интами и чары тут ни при чём, а если хотим работать с каким-то конкретным алфавитом, то придётся его задавать руками (или брать из готовых библиотек) и работать уже не с Char, а явно с RusAbc, EngAbc или IcelandicAbc.
    Возможно, что в расте хотели избежать этой неопределённости и намеренно не реализовали итераторы для чаров. Но зачем тогда там можно делать range для них, тоже не ясно. Выглядит как логическая дырка.:)

    ЗЫ. Я вообще не специалист по расту. А выше мысли по мотивам нагугленного за десять минут материала.:)

     
     
  • 6.131, Ретроград (?), 11:50, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Раст целиком и состоит из таких "логических дырок". Этот "язык системного программирования" спустя почти десятилетие своего развития до сих пор не определился со своей моделью памяти, что уж говорить о таких мелочах.
     
     
  • 7.162, burjui (ok), 11:42, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Будьте добры пояснить, что вы имеете ввиду. Выглядит так, будто вы высосали это из пальца/бутылки.
     
  • 1.87, Аноним (-), 22:42, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В одной плюсовой библиотеке изменений больше, чем во всём вашем расте: https://www.boost.org/users/history/version_1_70_0.html
     
  • 1.94, Аноним (94), 23:54, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А всё же, есть ли альтернативы Расту? С более адекватным синтаксисом, с нулевой абстракцией, +- такой же скоростью, и не unsafe? И да, более-менее популярный.
     
     
  • 2.98, Аноним (101), 00:31, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чувак, если ты считаешь, что раст безопасен, то ты просто ничего не понимаешь в Computer Science.
     
     
  • 3.151, Аноня (?), 20:19, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Computer Science.

    Computer Science - это наука о компьютере, если кто не знал. Продолжайте, пожалуйста

     
  • 2.102, Аноним (101), 01:05, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот тебе простой пример: переполнение стека. Чем в этом плане Раст лучше современных реализаций Си/Си++? Да ничем! А растоманы продолжают думать, что Раст гарантирует им безопасность. Не гарантирует он её на самом деле даже про память. А кроме памяти есть ещё куча разных опасностей.
     
     
  • 3.112, Аноним (20), 06:56, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    раст гарантирует отсутствие неопределенного поведения за пределами блоков unsafe. Падения после переполнений стека, деления на ноль и т.п. не приводят к порче памяти. В общем, иди учи уроки и никогда не кидайся терминами, значение которых не понимаешь. (не говоря уже про "C/C++" - одно это выдает в тебе человека, который никогда ничего не писал ни на том, ни на другом)
     
     
  • 4.120, Аноним (-), 10:20, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ха-ха, типичный растофан не слышал про устройство ржавчины и обход stack guard-page. Вот тебе один примерчик, хоть и старый, но актуальный в контексте данного спича: https://ldpreload.com/blog/stack-smashes-you Можешь продолжать проецировать свои комплексы на меня.
     
     
  • 5.130, анонн (?), 11:34, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ха-ха, типичный растофан не слышал про устройство ржавчины и обход stack guard-page.

    А сказать нерастофан хотел что?
    https://internals.rust-lang.org/t/getting-rid-of-stack-guard-handling-an-alter
    > We currently detect the address of the stack guard page and even try to create one if it’s not created by the operating system.

     
     
  • 6.133, Аноним (-), 11:57, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Читай пост №102 по буквам. Лупу возьми. Потом ещё раз читай по моей ссылке до понимания что такое обход stack guard page.
     
     
  • 7.134, анонн (?), 12:12, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Читай пост №102 по буквам. Лупу возьми. Потом ещё раз читай по
    > моей ссылке до понимания что такое обход stack guard page.

    Т.е. ничего внятного? Понятно.


     
     
     
    Часть нити удалена модератором

  • 9.140, анонн (?), 13:44, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Т е вы не знаете как объяснить то аморфное нечто, что вы, возможно, имели в вид... текст скрыт, показать
     
  • 5.164, Аноним (164), 19:25, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Где там код на Расте упырь?
     
  • 1.108, Аноним (108), 05:43, 15/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Мужики, этот язык можно использовать без использования сети aka dependence hell?
    Тупо поставил, и пишешь как в devc++, без всякой прочей хрени.  
     
     
  • 2.132, Ретроград (?), 11:53, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Внезапно можно, просто придется писать для каждой С-функции extern-обертку.
     
  • 2.146, JustCurious (?), 16:45, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Очень странно слышать аргумент про dependency hell в пользу С++, да еще и против Rust.

    Но на всякий случай, если не троллите, для использования стандартной библиотеки интернет не нужен, и она тут побогаче чем в С++ (как минимум есть модули fs и net для работы с файловой системой и сетью соответственно, в С++ std::filesystem появился только в С++17, а сетевых примитивов до сих пор нет). Так что можете тупо поставить и писать, как в С++.

    А для загрузки зависимостей - так и в С++ мы же их все с интернета загружаем, просто в линуксе мы привыкли это делять системным пакетным менеджером, а на других платформах свои велосипеды. Если уж нужно указать зависимость с локального хранилища, конечно же Cargo это умеет: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specify

     
  • 1.135, Аноним (135), 12:15, 15/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    От синтаксиса блевать тянет, даже книжку дочитать не смог...
     
     
  • 2.154, Аноним3 (?), 22:58, 15/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    у меня схожие ощущения были когда читал по D. там тоже все странно.
     
  • 2.160, Junior frontend developer (?), 22:13, 16/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > От синтаксиса блевать тянет, даже книжку дочитать не смог...

    Никак не могу понять чем людям синтаксис не угодил? Типичный сиподобный язык с современными влияниями из ML.
    Самый же что ни на есть дружелюбный и современный синтаксис, как тот же TypeScript или Kotlin

     
     
  • 3.163, burjui (ok), 11:51, 17/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Понимаете, есть такая категория людей - приплюснутые. У них в череп только один вид синтаксиса влазит. Вот этот товарищ даже книжку дочитать не смог - так мозг от напряжения раздуло. Таких от Lisp нужно держать подальше во избежание порчи имущества разлетающейся мозговой тканью.
     
  • 1.172, Аноним (-), 19:45, 20/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я Раст "ниасилил", что мне делать? Синтаксис очень сложный.

    Зачем нужны 2 вида переменных: которые можно изменять и, которые нельзя изменять. Это что за наркота? Разве не достаточно на все случаи жизни иметь всего 2 квалификатора типа: пременная (потенциально изменяемая) и константа (совершенно не изменяемая).

     
     
  • 2.174, Аноним (149), 16:41, 22/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    пиши на питоне, там вообще констант нет
     
  • 2.175, Junior frontend developer (?), 00:36, 23/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Зачем нужны 2 вида переменных: которые можно изменять и, которые нельзя изменять.
    > Это что за наркота? Разве не достаточно на все случаи жизни
    > иметь всего 2 квалификатора типа: пременная (потенциально изменяемая) и константа (совершенно
    > не изменяемая).

    В расте так и есть. Неизменяемая по умолчанию, так как она проще и хорошая практика, поэтому изменяемая использует 2 слова, вместо const.

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

     
     
  • 3.176, Аноним (-), 04:29, 24/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >В расте так и есть...

    Стоп! Погоди, а для чего нужен модификатор по имени "const", который имеется в в языке? По моему он должен быть на месте "неизменяемой по умолчанию" переменной. Растаманы плодят сущности?

     

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


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