Email or username:

Password:

Forgot your password?
Top-level
Moana Rijndael 🍍🍕

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

15 comments
Эволд

@mo вот о чем я и говорю. Мне кажется что это костыль.

Moana Rijndael 🍍🍕

@elwld но тогда раст бы не был системным языком :blobcatshrug:
Потому что для некоторых системных вещей *нужно* написать небезопасный код, который компилятор не сможет проверить. Поэтому придумали unsafe-подмножество. Оно должно быть специально огорожено (либо unsafe{} блоками либо вся функция unsafe), и позволяет строго определенный набор действий:
- разыменовать сырой указатель. Раст их не проверяет, на то они и сырые
- вызвать другую функцию, помеченную unsafe
- изменить static mut (глобальную переменную)
- реализовать unsafe-типаж. Обычно это типажи-метки Send (переменную этого типа можно переместить в другой поток) и Sync (переменную можно разделять между потоками). В обоих случаях компилятор не может проверить корректность, но и ставить такие метки от балды нельзя
- получить доступ к полям union (поля могут быть разного типа, а значение у них одно, и не факт что оно корректно ляжет). Юнионы в расте к слову используются только для FFI с Сишкой

Ну а имея на руках сырые указатели..

@elwld но тогда раст бы не был системным языком :blobcatshrug:
Потому что для некоторых системных вещей *нужно* написать небезопасный код, который компилятор не сможет проверить. Поэтому придумали unsafe-подмножество. Оно должно быть специально огорожено (либо unsafe{} блоками либо вся функция unsafe), и позволяет строго определенный набор действий:
- разыменовать сырой указатель. Раст их не проверяет, на то они и сырые
- вызвать другую функцию, помеченную unsafe
- изменить static mut (глобальную переменную)

Moana Rijndael 🍍🍕

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

@elwld

:umu: :umu:
@mo @elwld а на столько ли он системный?

Я надеюсь что если его примут в Linux Kernel соблюдая то, на что им указали остальные разработчики, то это действительно сделает его системным. Останется дождаться ещё альтернативы FreeRTOS на Rust, с реальным применением, точно можно будет говорить о том что язык системный.

А пока Rust может занимать нишу "ну мы эт переписали, собирать стало сложнее и бинари разжирели, зато безопасно!". Чем он и занимается.
@mo @elwld а на столько ли он системный?

Я надеюсь что если его примут в Linux Kernel соблюдая то, на что им указали остальные разработчики, то это действительно сделает его системным. Останется дождаться ещё альтернативы FreeRTOS на Rust, с реальным применением, точно можно будет говорить о том что язык системный.
Moana Rijndael 🍍🍕

@a1ba примут, куда они денутся. Язык разрабатывается как системный, а написана ли на нём <класс_софта_нейм> это вопрос времени
И вообще, про большие бинари это вам в голанг :blobcatgooglytrash:
Плюс раст упрощает распараллеливание, и тот же ripgrep оставляет своего дедушку далеко позади
А собирается раст проще (cargo build --release), просто медленнее (ну а что вы хотели, анализ программы не бесплатный). Но скорость постоянно по чуть-чуть улучшается

@elwld

@a1ba примут, куда они денутся. Язык разрабатывается как системный, а написана ли на нём <класс_софта_нейм> это вопрос времени
И вообще, про большие бинари это вам в голанг :blobcatgooglytrash:
Плюс раст упрощает распараллеливание, и тот же ripgrep оставляет своего дедушку далеко позади
А собирается раст проще (cargo build --release), просто медленнее (ну а что вы хотели, анализ программы не бесплатный). Но скорость постоянно по чуть-чуть улучшается

:umu: :umu:
@mo @elwld вы сначала сами определитесь. То он убийца Си, то конкурирует с плюсами, то вообще one ring to rule them all
Moana Rijndael 🍍🍕

@a1ba ну Си убить будет проблематично....................
ИМХО, я вижу раст как C++ done right, все таки уровни абстракции довольно высокие. Но если будет поддержка библиотеками и инструментарием, можно и кусок у сишки откусить :blobcatgoogly:

@elwld

Moana Rijndael 🍍🍕

@a1ba а если немного ебануться, можно и у джаваскрипта :blobcatgooglytrash:

@elwld

:umu: :umu:
@mo @elwld только ООП он с натяжкой.
Moana Rijndael 🍍🍕

@a1ba а он и не ООП.....и кто вообще сказал, что должен быть?

@elwld

Эволд

@mo @a1ba а разве он не мульти-парадигмовый?

Moana Rijndael 🍍🍕 replied to Эволд

@elwld ну, там нет классов, как в плюсах, нет их наследования
Есть структуры и перечисления, которые реализуют типажи (интерфейсы). Вот уже интерфейсы могут "наследоваться" (один интерфейс может требовать для своей реализации реализацию другого)

:umu: :umu:
@mo @elwld хотя ладно, забудь.

Не тот спор который я вывезу. Или хочу вывозить.
Moana Rijndael 🍍🍕

@a1ba разумное решение, всё равно вряд ли кто-то кого-то переубедит
Хорошего вечера кстати :з

@elwld

Go Up