The OpenNET Project / Index page

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

Выпуск Rust 1.88. Операционная система Munal и утилита rsched на Rust

27.06.2025 19:12

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

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

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

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

  • Добавлена возможность указания нескольких выражений "let" внутри условных блоков "if" и "while" с использованием для их объединения оператора "&&" (логическое И). Выражения "let" могут комбинироваться с булевыми условными выражениями. Переменные, объявленные в let-выражениях, можно использовать в последующих условных выражениях, а также внутри блоков "if" и "while". Возможность оступна только в редакции Rust 2024.
    
       if let Channel::Stable(v) = release_info()
           && let Semver { major, minor, .. } = v
           && major == 1
           && minor == 88
       {
    
  • Добавлена поддержка написания "голых" функций, помечаемых атрибутом "#[unsafe(naked)]" и содержащих внутри один вызов "naked_asm!". У созданных подобным образом функций отсутствует эпилог и пролог, сгенерированный компилятором, что позволяет разработчику полностью контролировать служебный ассемблерный код, прикрепляемый к функции ("голая" функция содержит только ассемблерные инструкции, указанные разработчиком и не включает специальные обработчики аргументов и возвращаемых значений, добавляемые компилятором). "Голые" функции рассматриваются как более удобная альтернатива функциям, определяемым в блоке "global_asm!".
    
       #[unsafe(naked)]
       pub unsafe extern "sysv64" fn wrapping_add(a: u64, b: u64) -> u64 {
           core::arch::naked_asm!(
              "add rax, rdi, rsi",
              "ret"
           ); 
       }
    
  • В язык предикатов, применяемый в атрибутах условной компиляции "cfg" и "cfg_attr" (позволяют включать или отключать части кода в зависимости от заданных условий), добавлена поддержка булевых литералов "true" и "false", которые отождествлены с конфигурациями, которые всегда включены или всегда отключены. Данные литералы также можно использовать в макросе "cfg!" и таблицах "[target]" в манифестах и конфигурациях для Cargo. Выражения cfg(true) и cfg(false) могут применяться вместо cfg(all()) и cfg(any()) для более явного выражения своих намерений.
  • В пакетном менеджере Cargo включён автоматический запуск сборщика мусора для очистки кэша в домашнем каталоге пользователя. Ранее сохраняемые в кэше пакеты с загружаемыми зависимостями не очищались, что приводило к постоянному росту потребления дискового пространства. Включённый механизм сборки мусора будет автоматически удалять загруженные извне crate-файлы, к которым не было обращений более 3 месяцев, и локально установленные crate-файлы, к которым не обращались более месяца. Очиска кэша не запускается при использовании в crage опций "--offline" или "--frozen".
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
  • Признак "const" применён в функциях:
  • С первого уровня на второй переведена поддержка целевой платформы i686-pc-windows-gnu. Первый уровень поддержки подразумевает формирование бинарных сборок, проведение досконального тестирования и предоставление наивысшей гарантии поддержки платформы - каждое изменение в компиляторе проверяется выполнением полного тестового набора. Второй уровень поддержки подразумевает гарантию сборки.



Дополнительно можно отметить связанные с Rust события:

  • Проект Munal OS развивает экспериментальную операционную систему, написанную на Rust и основанную на концепции unikernel. В Munal OS не применяется вытесняющая многозадачность, маппинг страниц памяти и виртуальное адресное пространство (используется раскладка памяти от UEFI). Ядро и приложения выполняются в одном адресном пространстве с применением модели безопасности на базе sandbox-изоляции WASM (в состав входит движок wasmi для запуска приложений в форме байткода WebAssembly).

    Операционная система оснащена графическим интерфейсом и поддерживает управление через клавиатуру и мышь. Для разработки графических приложений используется собственный тулкит с библиотекой виджетов. Для сетевого взаимодействия предлагаются TCP-стек и драйвер сетевого устройства. Среди доступных для Munal OS приложений: web-браузер с базовой поддержкой HTML и HTTPS, текстовый редактор и терминал для выполнения кода на Python. Код открыт под лицензией MIT.

  • Состоялся выпуск ядра Asterinas 0.15.2, написанного на Rust и предоставляющего ABI, совместимый с ядром Linux. Ядро поддерживает архитектуры x86-64 и RISC-V, и реализует 206 из 368 системных вызовов Linux. В развитии ядра принимают участи 45 разработчиков, в основном из различных китайских университетов. Ядро построено с использованием архитектуры "framekernel", в которой компоненты ядра размещаются в общем адресном пространстве, а безопасность достигается на уровне логического разделения безопасного кода и кода, в котором не исключено возникновение проблем с безопасностью. Все системные вызовы, файловые системы и драйверы реализуются на уровне OS Services и не могут включать unsafe-блоки. Код распространяется под лицензией MPL 2.0.
  • Для ядра Linux подготовлена утилита rsched, позволяющая анализировать статистику о работе планировщика задач. На практике утилита позволяет оценивать решения планировщика, связанные с предоставлением ресурсов процессам, а также отслеживать возникающие при планировании задержки. Для сбора данных в ядре используется подсистема BPF, а работающий в пространстве пользователя инструментарий написан на Rust. Автором утилиты является Крис Мейсон (Chris Mason), создатель и главный архитектор файловой системы Btrfs.
  • Компания Collabora сообщила о разработке варианта инструментария Coccinelle для языка Rust. Coccinelle изначально предназначен для автоматизации поиска и преобразования кода на языке Си в ядре Linux. Преобразования задаются в форме правил, напоминающих абстрагированные патчи, не привязанные к конкретной позиции в коде.
  • Разработчики GNOME представили библиотеку для загрузки изображений glycin, написанную на языке Rust и обеспечивающую декодирование изображений с применением sandbox-изоляции. Поддерживается отдача декодированного контента через gdk::Textures и извлечение метаданных. Предоставляются обвязки для использования glycin в GTK4, а также бэкенд для задействования glycin в библиотеке GdkPixbuf, применяемой в GNOME для загрузки изображений. Glycin уже задействован в просмотрщике изображений Loupe, предлагаемом в GNOME по умолчанию. При этом бэкенд для GdkPixbuf даёт возможность использовать glycin в GNOME Shell, генераторах миниатюр и произвольных приложениях GNOME, без внесения изменений в эти программы.


  1. Главная ссылка к новости (https://blog.rust-lang.org/202...)
  2. OpenNews: Выпуск Rust 1.87
  3. OpenNews: GCC-бэкенд достиг возможности полной раскрутки компилятора rustc. Выпуск Rust Coreutils 0.1.0
  4. OpenNews: Для FreeBSD развивают опциональную поддержку компонентов базовой системы на Rust
  5. OpenNews: Прогресс в разработке транслятора из Rust в код на Cи и .NET IR
  6. OpenNews: Проект Asterinas развивает ядро на языке Rust, совместимое с Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63485-rust
Ключевые слова: rust, munal, kernel, gnome, gtk, glycin
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (73) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.5, Аноним (5), 19:56, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Они старую ос не дописали, а уже новую начинают.
     
     
  • 2.12, Аноним (12), 20:16, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +17 +/
    > Они старую ос не дописали, а уже новую начинают.

    Расскажи поподробней, кто эти "они"? А заодно, почему другие "они" не дописали Hurd/Syllable/React/Phantom/HelenOS/<куча других хоббиосей> и каким образом "этодругоепониматьнадо!"?

     
     
  • 3.68, Аноним (68), 03:50, 28/06/2025 Скрыто ботом-модератором     [к модератору]
  • –5 +/
     
  • 3.78, Аноним (78), 08:35, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Расскажи поподробней, кто эти "они"

    Я не он, но предполагаю он имел ввиду - лучше бы дописали первую ось на расте (редокс емнп) общими усилиями, а не распылялись на разные проекты. И "они" это авторы муналос, по моему это очевидно, как ты это не понимаешь, ума не приложу.

    > Hurd/Syllable/React/Phantom/HelenOS/<куча других хоббиосей> и каким образом "этодругое

    Таким, что новость не о них, а о муналос. О перечисленных тобой осях вообще речи не было, зачем ты их притащил? Не понятно.

     
     
  • 4.91, Карлос Сношайтилис (ok), 11:13, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > О перечисленных тобой осях вообще речи не было, зачем ты их притащил?

    Авторы Hurd/Syllable/React/Phantom/... имеют плавно такое же отношение к редокс у, как и авторы муналос.
    Почему бы им тоже не подключиться к разработке "общими усилиями"?

    Теперь тебе отсылка стала понятна?

     
     
  • 5.92, Аноним (92), 11:44, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Почему бы тоже не подключиться к разработке "общими усилиями"?

    Так об этом здесь каждый второй кричит, когда выходит новость о каком-нибудь маргинальном/полумаргинальном/совсем-не-маргинальном проекте, особенно связанным с экосистемой linux - "Лучше бы *** пилили...") И чем, в этом смысле, отличаются эти поделия на расте не ведомо. Но (судя по тому, как забомбило) почему-то это оказалось другим.

     
  • 2.13, Аноним (13), 20:17, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Кто они? Они сейчас с тобой в одной комнате?

    Или это абсолютно разные люди пишут разные ОС?

     
     
  • 3.54, Аноним (54), 00:07, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Кто они?

    Jeremy Soller, Ribbon, bjorn3, Ron Williams, 4lDO2, Ian Douglas Scott, Anhad Singh, somewhat inactive, Emanuele Antonio Faraone, Nagy Tibor, jD91mZM2, Xavier L'Heureux, Noelle Levy, François Laignel

     
     
  • 4.58, Аноним (12), 00:31, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>Кто они?
    > Jeremy Soller, Ribbon, bjorn3, Ron Williams, 4lDO2, Ian Douglas Scott, Anhad Singh,
    > somewhat inactive, Emanuele Antonio Faraone, Nagy Tibor, jD91mZM2, Xavier L'Heureux, Noelle Levy, François Laignel

    Честно попытался найти тройку (все проверять мне лень) имен в списке авторов
    https://github.com/asterinas/asterinas/graphs/contributors
    https://github.com/Askannz/munal-os/graphs/contributors
    но - ни одного совпадения.

    Очередной пу̵с̵к̵ ̵м̵е̵т̵а̵н̵а̵ ̵В̵о̵е̵н̵а̵м̵и̵ ̵С̵у̵п̵р̵о̵т̵и̵в̵ ̵Р̵а̵с̵т̵а̵ коварный заговор Подлых Растаманов?


     
  • 4.117, morphe (?), 15:20, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > jD91mZM2

    Человек умер 4 года назад, тебе он и мёртвый мешает?

     
     
  • 5.118, Аноним (13), 15:28, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Он должен был воскреснуть и подключиться к разработке «общими усилиями»
     
  • 2.116, Аноним (116), 15:12, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    у Redox лицензия MIT, у этой - другая
     

  • 1.7, Версия (?), 19:58, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Зачем суперминорные версии так часто?
     
     
  • 2.17, Аноним (-), 20:19, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Зачем суперминорные версии так часто?

    Почему суперминорные? Нормальная минорная версия.
    И не часто, а ровно раз в 6 недель.

     
  • 2.26, Аноним (12), 20:30, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Зачем суперминорные версии так часто?

    С 2015 так - назло хейтеркам, они так забавно реагируют на упоминания Раста. Ну и чтобы не накапливать "тех-долги" (но в основном, все же - назло) ;)

    И оно вышло вообще-то вчера.
    Но! Вчера был четверг!
    А расто-сра^W э-э-э, конструктивная-критика-раста-опеннетовцами в четверг и конструктивная-критика-раста-опеннетовцами в пятницу-субботу-воскресенье -- это две совсем разные конструктивные-критики-раста-опеннетовцами!
    В общем, летс те срач бегин (хотя вон, выше - уже)!

     
  • 2.57, laindono (ok), 00:20, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А как надо? Раз в восемь недель, а не раз в шесть недель? Раз в полгода? Раз в несколько лет?

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

    Не уверен, что ты имеешь ввиду под суперминорными версиями. В стандарте Semantic Versioning про них ни слова. Там есть мажорная, минорная и патч. Ещё есть пререлизные версии и всякая мета. Но никаких суперминорных версий. Вот полный формат: https://semver.org/#backusnaur-form-grammar-for-valid-semver-versions

     
     
  • 3.64, Аноним (64), 02:08, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А редакции, те что раз в три года, тогда зачем? Ведь получается, что на расте имеет смысл писать только на самом свежем, и для сборки нужен всегда самый свежий, полная привязка к онлайну и к карго.
     
     
  • 4.119, laindono (ok), 15:33, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А редакции, те что раз в три года, тогда зачем?

    На твой вопрос есть весьма подробный ответ: https://doc.rust-lang.org/edition-guide/

    Вообще в отличии от подавляющего большинства технологий, для всей экосистемы Rust есть документация. Подробная и качественная. Для того, чтоб найти что-то недокументированное, надо целенаправлено искать. Долго и упорно.

    > имеет смысл писать только на самом свежем

    Без дополнительного контекста это верно для любой технологии. Обычно нет смысла использовать старьё.

    Однако это не значит, что ты обязан использовать самое свежее. Вполне можешь использовать ту версию компилятора и сборочной инфраструктуры, какую тебе хочется. cargo это в первую очередь сборочная инфраструктура. Аналог cmake или ninja или ещё чего-то. Но со встроенным менеджером зависимостей. Почти всегда, делая что-то реальное, ты будешь использовать пакеты, взятые из cargo.io. Но никто не заставляет. Можешь сделать себе офлайн зеркало, либо вручную зависимости подключать даже. Подробности в документации https://doc.rust-lang.org/cargo/

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

     

  • 1.8, Аноним (8), 20:02, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Не применяется mmu. Это так надо писать. Как дал uefi direct mapping так и живём. Так ёбта. Я написал свою ось на c++ в которой есть mmap. Там даже acpica прикручена.

    Знаете в чем проблема с mmap? У вас есть гарантия атомарного выставления флага A но нет D. То есть когда ты обновляешь pte ты должен быть готов к тому что тебе с соседнего ядра прилетит некорректная запись. Чтоб этого не было используется ipi с блокировкой ядер на время этой операции. Спасибо сраный Интел. За то что протокол обновления pte не подразумевает compare-and-exchange.

    Растаманы разумеется даже в это не смогли. Но сделано ядро! Воу! Раст вперде! Они ведь даже не понимают что это нахер ненужно

     
     
  • 2.36, НяшМяш (ok), 21:50, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это точно. Всего-лишь версии 1. Надо как у хромов с файрфоксами - по 169 версий, тогда норм будет.
     

  • 1.16, ckotinko (ok), 20:19, 27/06/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.18, Аноним (18), 20:20, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Там аноним со своей осью на крестах слишком умный. Такой умный, что чирбот его схомячил под кат. Потому что нельзя быть таким умным во здесь. А по факту, что тот аноним с крестной ОС, что эти растовики - ну, норм студенческая движуха. Пусть учатся, а не в пакет в подвале дышать. Я - за.
     
     
  • 2.24, ckotinko (ok), 20:25, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не аноним во первых а я

    Во вторых это не взлетит почему не взлетела моя ось. Дрова. Но допустим что дрова подарят инопланетяне.

    Полно других проблем которые вот прямо так не решаются. MMU. Acpi не всегда работает по стандарту. Иногда оно специально сделано так что пытается сломать Линукс. Примеры есть. Drm задолбаешься портировать. Плюс его ещё и переколбашивают постоянно

     
     
  • 3.25, 12yoexpert (ok), 20:28, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ну то есть ты не осилил
     
     
  • 4.28, ckotinko (ok), 20:38, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так растаманы осилят. Их много а я один. Хотя нет, не осилят
     
  • 3.65, Аноним (64), 02:12, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Acpi не всегда работает по стандарту. Иногда оно специально сделано так что пытается сломать Линукс.

    А винду не ломает? Может стоит её поведение копировать, а не линукса?

     
     
  • 4.108, Аноним (-), 13:56, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А винду не ломает? Может стоит её поведение копировать, а не линукса?

    Жила была девочка^W Рекатос, 20+ лет, сама виновата...

     

  • 1.30, Аноним (30), 20:51, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    Всяко лучше чем всё сишное. Вон Торвальдс прогнулся под натиском солидных корпораций - разработчиков Раста, значит Раст - это будущее человечества! УРА!
     
     
  • 2.33, Аноним (18), 21:17, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Будущее человечества - TWW. Future. No future.
     

  • 1.35, Аноним (35), 21:29, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > Ядро и приложения выполняются в одном адресном пространстве

    Здравствуй, ms-dos!

    > с применением модели безопасности на базе sandbox-изоляции WASM (в состав входит движок wasmi для запуска приложений в форме байткода WebAssembly).

    Ладно, не совсем ms-dos, но все равно криво.

     
     
  • 2.50, Бармаглот (?), 23:09, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Почему DOS, а не, скажем, vxWorks?

    А! этодругоепониматьнадо, марсоходам можно, а растаманам низя

     
     
  • 3.51, Аноним (35), 23:12, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Почему DOS, а не, скажем, vxWorks?
    > А! этодругоепониматьнадо, марсоходам можно, а растаманам низя

    Потому что на марсоходе не выполняется произвольный хер пойми от кого код.

     

  • 1.43, Аноним (43), 22:16, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > а безопасность достигается на уровне логического разделения безопасного кода и кода, в котором не исключено возникновение проблем с безопасностью

    А опять эта система, которая имела бы смысл, если бы без унсейфа нельзя было поломать. Но rust дает защиту, он дает защиту от дураков.

    Для такой архитектуры нужен другой язык.

     
     
  • 2.47, Аноним (5), 22:39, 27/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты как всегда прав, друг мой.
     

  • 1.49, Аноним (49), 23:08, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    crates.io с мобильной связи у всех открывается?
     
     
  • 2.113, Котик Биба (?), 14:48, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Т2, без того-что-нельзя-называть совсем лежит. При попытке оживить, оживляется, но не полностью. Вот уже неделю пытаюсь найти рабочий конфиг, чтобы исправить.
     

  • 1.53, Аноним (-), 23:42, 27/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Добавлена возможность указания нескольких выражений "let" внутри условных блоков "if" и "while"

    Это полезно. Реально напрягает местами писать вложенные if-let.

    > В пакетном менеджере Cargo включён автоматический запуск сборщика мусора для очистки кэша в домашнем каталоге

    Ну наконец-то! Столько места жрёт, что прям никаких терабайтов не напасёшься.

    > Признак "const" применён в функциях:

    Прикиньте, я тут споткнулся о то, что f64::log2 не const.

     
  • 1.55, Аноним (54), 00:09, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Код распространяется под лицензией MPL 2.0.

    Ну хоть лицензия более-менее, хоть это хорошо.

     
  • 1.63, Пользователь (?), 01:00, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мне абсолютно понятно, какую цель преследовали авторы языка: хотелось и скорости, и безопасности. Но получилось что-то сильно замысловатое, увы. Порог вхождения очень высокий. Может не такой высокий, как у Плюсов, но всё же намного выше, чем у Си или, прости господи, Go. Про LLM модели знаю. Они, конечно, существенно упрощают понимание кода, но хотелось бы обходиться без их помощи. А без постоянной практики с этим языком это, мне кажется, невозможно, постоянно вылетают из головы те или иные концепции языка или особенности инфраструктуры. Сам язык мне нравится, но полноценно освоить как-то не получается.

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

     
     
  • 2.66, Аноним (66), 02:14, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Не знаю, в чем причина этой сложности.

    В том, что до них еще не дошло, что нельзя написать "умный" компилятор не расширяя синтаксис.

     
  • 2.67, Аноним (64), 02:28, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Про Zig знаю. Но его нельзя назвать полноценной заменой Rust.

    Он замена си. Раст ближе к плюсам, чем к си.

     
     
  • 3.75, Аноним (-), 07:35, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Он замена си.

    Zig не замена Си. Zig по душе тем кому, по тем или иным причинам, не подошёл чистый Си.

    >Раст ближе к плюсам, чем к си.

    Да это так. Язык Си очень простой. Те кто раньше освоил высокоуровневые языки, попробовав Си говорят, что в Си ничего нет, и что всё делать приходится самому.

    По философии и концепции Раст ближе к C++. Потому-что та терминология, которая присутствует в Расте, в чистом Си отсутствует как класс, в  С++ присутствует.

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

     
     
  • 4.95, Карлос Сношайтилис (ok), 12:02, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Линус Торвальдс пустил Раст в ядро из-за того, что у Раста нет ООП

    А можно пруф, что однозначно из-за этого?
    Так-то в расте есть динамические трейты,  работают через vtable как и плюсовые классы. В чем разница?

     
     
  • 5.97, Аноним (-), 12:45, 28/06/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.115, Аноним (115), 15:04, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В раст vtable хранится отдельно от самого объекта Объект идентичен СИшной струк... большой текст свёрнут, показать
     
  • 2.70, Витюшка (?), 04:09, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это совершенно не так. Там вообще нечего учить, по-сути.

    Не знаю кто пишет что "нужно бороться с borrow checker", наверное какие-нибудь говнокодеры , которых тыкают в их код.

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

    У меня в коде нет ни одного lifetime явного - всё "просто работает". Да и там всё просто на самом деле.

    И нужно учитывать что там где бы ты это использовал + unsafe уже есть какие-то библиотеки готовые (которые сделали эту работу).

    Например лично я работаю напрямую с битами и смещениями - куда уж более низкоуровневые операции (пишу свой тип bignum).

    Так берёшь библиотеку bitvec и ни одного явного unsafe в коде.

    Но чтобы это понять НУЖНО ПРОСТО ПИСАТЬ КОД.

    И да, он лучше Zig - безопаснее, надёжнее, больше библиотек и т.п. На Zig ничего сложного не напишешь просто ввиду отсутствия библиотек.

    Не будешь же ты свой http реализовывать с нуля по стандарту.

     
     
  • 3.84, Аноним (84), 09:40, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    дай ссылку на свой гитхаб
     
  • 3.90, Аноним (90), 11:03, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > На Zig ничего сложного не напишешь просто ввиду отсутствия библиотек

    Реалии современных кодеров

     
     
  • 4.94, Аноним (-), 11:57, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> На Zig ничего сложного не напишешь просто ввиду отсутствия библиотек
    > Реалии современных кодеров

    Реалии современного мира. "На плечах гигантов" (с)
    Время, когда было достаточно утилитки на 10к строк прошло.
    Пока ты будешь велосипедить свои реализации для всего нужного, другой воспользуется уже готовым и выйдет в релиз.

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

     
     
  • 5.99, Аноним (-), 12:47, 28/06/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 6.101, Аноним (-), 13:17, 28/06/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.110, олег (?), 14:22, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Время, когда было достаточно утилитки на 10к строк прошло.

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

    >  другой воспользуется уже готовым и выйдет в релиз.

    Смотря что и в какой области. Что этот другой накодит? Никому ненужное очередное похожее на всех других приложение? Нах с такими вообще соревноваться? Пусть пишут свои быдлоподелия и конкурируют между собой за 1.5 пользователя. Если ты делаешь приложухи однодневки, что бы туда рекламы напихать и бегом в магазин приложений выложить, то тебе нужно всё это безоб бесспорно.

     
     
  • 6.114, Аноним (-), 14:53, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Сказки венского леса. Никуда это время не ушло. Смотря что и смотря где писать.

    Да что угодно писать.
    Пока ты будешь с нуля реализовывать серриализацию или httpRequest, сосед уже предоставит готовую софитину.

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

    Ты вообще кажется не вдупляешь о чем речь.
    На реализацию ненужного тратится время, а время - деньги. И это не только зп разработчиков.
    Сколько было хороших проектов, которые провалились потому что вышли поздно. Если ты не застолбил пользователей, то потом фиг отобъешь часть рынка. Это будет в разы дороже.


     
     
  • 7.124, Аноним (90), 15:58, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Пока ты будешь с нуля реализовывать

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

    > На реализацию ненужного тратится время, а время - деньги.

    А тебе за что платят?

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

    пример

     
  • 5.121, Аноним (90), 15:52, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Пока ты будешь велосипедить свои реализации для всего нужного, другой воспользуется уже готовым и выйдет в релиз.

    ну я могу также подождать того другого и сцап-царапаю у него, в чем проблема? Дармоед и в Африке дармоед.

    > Раст смог сделать "достаточное" кол-во либ переписыванием их с других языков.

    Для вас достаточно для меня нет. Я подожду пока на нем будут созданы все средства необходимые допустим для кодирования ОС :)

     
  • 4.120, Аноним (13), 15:38, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В Zig нет нормального аллокатора (проверенного, надежного, быстрого).

    И нет реализации протокола http.

     
     
  • 5.125, Аноним (90), 15:59, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну на программируй, в чем дело?
     
  • 3.122, Пользователь (?), 15:52, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Это совершенно не так. Там вообще нечего учить, по-сути.

    Мне-то рассказывать не надо. Там МНОГО чего надо осваивать и осмысливать:
    - странно-замысловатая модель ООП (я привык к ООП в стиле того же Python, которая намного проще, чем в Rust. Разумеется, субъективно);
    - ассоциативные типы (в том числе GAT);
    - жёсткие области видимости переменных - понимаю, зачем они нужны, объяснять не надо, но простоты это не добавляет;
    - lifetimes;
    - borrow checking;
    - типы из стандартной библиотеки, которые, по сути, являются чуть ли не частью языка, например, в таких областях, как обработка ошибок;
    - асинхронное программирование - просто кладезь сложности - пересмотрел несколько статей и несколько роликов, которые пытаются её объяснить, но получилось только у одного автора, который показал, как можно писать асинхронный код не прибегая к ключевому слову async. И то пришлось "курить" его код с помощью LLM, потому что все аспекты, до самых азов (до уровня ОС и железа), автор решил не раскрывать почему-то, хотя это было бы и крайне полезно для понимания;
    - многопоточное программирование;
    - все навороты cargo;
    - все опции компилятора;
    - возможные варианты структуры проекта (см., например, исходные код ripgrep, чтобы убедиться, что файлика lib.rs для библиотек может быть недостаточно для организации библиотек).

    Может ещё что пропустил. Но это не такой уж простой язык, как может показаться после первого с ним ознакомления.

    > Но чтобы это понять НУЖНО ПРОСТО ПИСАТЬ КОД.

    Зачем вы повторяете то, что я уже и так сказал в своём первом сообщении?


    Если вы до сих пор не поняли. Мой первый пост - это сугубо моё индивидуальное мнение, МОЯ оценка языка и его инфраструктуры. Поэтому спорить со мной в данном конкретном случае - абсолютно бесполезная затея. Я не охаиваю этот ЯП, уже сказал, он мне нравится. Но от того, что он мне нравится, он не становится простым для изучения.

     
  • 2.72, Аноним (72), 05:12, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как насчёт Nim?
     
     
  • 3.73, Аноним (72), 05:14, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https://nimble.directory/
     
  • 2.88, олег (?), 10:22, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Есть такое. Синтаксис раста и так не подарок, а они ещё завозят в него новые фишки. Посмотрим, что будет через пару лет, но уже понятно что это и отпугивает людей.
     
  • 2.93, Карлос Сношайтилис (ok), 11:54, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > получилось что-то сильно замысловатое, увы

    Rust это С++, который почистили от легаси, добавили обязательные строгие проверки по памяти и присыпали пачку современных концепций и подходов, типа работы с модулями (крейтами).
    Если знаешь С++, разобраться в расте – изи.

    > Не знаю, в чем причина этой сложности.

    Потому что все современные системы сложные!
    И Раст эту сложность не скрывает от разработчика, заставляя обрабатывать все возможные краевые случаи и ошибки. В отличии от других языков, которые пытаются сложность скрыть, что повышает удобство и снижает порог вхождения, но бьёт по надёжности. Го как пример.

     
     
  • 3.112, Аноним (112), 14:30, 28/06/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.123, Пользователь (?), 15:57, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Если знаешь С++, разобраться в расте – изи.

    Когда-то меня сильно отпугнула сложность C++. И я тогда бросил разбираться с ним. В принципе, не жалею ни разу об этом.

    > Потому что все современные системы сложные!

    Думаю, не только в этом дело. А ещё в кривой архитектуре железа, которую в итоге вынуждены "выпрямлять" автора разных языков программирования.

     

  • 1.71, Lamerok (?), 05:07, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > используется собственный тулкит с библиотекой виджетов

    рамки на виджетах надо потолще! а то многим экран 4К нечем заполнить!

     
  • 1.79, Аноним (79), 08:35, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А классный язык. Сначала придумали ограничения и теперь всю жизнь посвятят созданию способов их обхода. Отличная стратегия чтобы никогда не лишиться работы
     
     
  • 2.96, Карлос Сношайтилис (ok), 12:04, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Поделись с нами своей мудростью, аноним.
    Какие способы обхода уже придумали в расте?
     

  • 1.81, Анатолька (?), 08:52, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Rust хороший ЯП, но я перешёл на V
     
     
  • 2.89, Аноним (-), 11:01, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Ещё язык не стабилизировали, а уже удаления платформ пошли...

    Ну так i686-pc-windows-gnu же!
    Сам i686 нинужон, а windows-gnu и подавно.

     

  • 1.85, Аноним (85), 09:52, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    когда появится rust# и let safe в unsafe блоках
     
  • 1.100, Аноним (115), 13:07, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тут много комментаторов опять начинают то же самое, из темы в тему.
    Ответьте сначала (тогда так и не ответили), что такое "дописать ОС" ?
     
  • 1.102, Аноним (-), 13:26, 28/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    [cpde]
       if let Channel::Stable(v) = release_info()
           && let Semver { major, minor, .. } = v
           && major == 1
           && minor == 88
       {



    Очень читаемо! Кажется понял! (на манер классный днепр, при клевой погоде)

    if let Rust::Syntax(wtf) = crap()
    && let = Devs {noobs, dumbass, hipsters, ...} = wtf
    && noobs = fuckoff
    && hipsters = fuckoff
    && dumbass = fuckoff

     
     
  • 2.109, Аноним (12), 14:00, 28/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >


    >    if let Channel::Stable(v) = release_info()
    >        && let Semver { major,
    > minor, .. } = v
    >        && major == 1
    >        && minor == 88
    >    {
    >


    > Очень читаемо! Кажется понял!

    Вобще-то, это обыкновенное сопоставление с образцом/деструктуризация из ЯП семейства ML/Prolog/Haskell.
    Поэтому таки да, вполне читаемо для тех, кто не только в школе Турбопаскаль изучал или курсы "войти в ойти за 14 дней" просмотрел.
    Вот тем да, не повезло - но их, походу не только Злобные Растоманы угнетают, но даже питонисты с жабоскриптозниками (где это тоже, пусть и более "легкой" форме, завезли). Бедолаги.

     

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



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

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