The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.57, opennews (??), 02-Дек-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


15. "Выпуск языка программирования Rust 1.57"  +5 +/
Сообщение от Аноним (-), 02-Дек-21, 22:44 
> А что системного написано на этом "языке системного программирования"?

https://firecracker-microvm.github.io/
>Firecracker is an open source virtualization technology that is purpose-built for creating and managing secure, multi-tenant container and function-based services.

https://github.com/0x59616e/SteinsOS
> SteinsOS is an operating system featuring non-preemptive kernel targeting on single-core armv8 architecture.

https://github.com/smoltcp-rs/smoltcp
> smoltcp is a standalone, event-driven TCP/IP stack that is designed for bare-metal, real-time systems.

https://www.opennet.me/opennews/art.shtml?num=56056
> Релиз RustZX 0.15.0, кросплатформенного эмулятора ZX Spectrum

https://www.opennet.me/opennews/art.shtml?num=56193
> Выпуск Stratis 3.0, инструментария для управления локальными хранилищами

Ждем-с привычного "Это и вот это не считается, потому что не считается! И это тоже не считается! Вот!"

Ответить | Правка | Наверх | Cообщить модератору

19. "Выпуск языка программирования Rust 1.57"  –1 +/
Сообщение от Аноним (19), 02-Дек-21, 22:49 
Посоветуйте антивирус на Расте
Ответить | Правка | Наверх | Cообщить модератору

32. "Выпуск языка программирования Rust 1.57"  –1 +/
Сообщение от Аноним (32), 03-Дек-21, 00:07 
В касперском его вроде использовали, но по-моему в их безопасной ОСОБО, а не в самом антивирусе
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск языка программирования Rust 1.57"  +6 +/
Сообщение от Led (ok), 03-Дек-21, 00:29 
новичо^Wспутник5
Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

50. "Выпуск языка программирования Rust 1.57"  –4 +/
Сообщение от Аноним (348), 03-Дек-21, 01:11 
Раст признан технологией двойного назначения и запрещён к экспорту в недемократические страны?
Ответить | Правка | Наверх | Cообщить модератору

121. "Драйвер на Rust "  +/
Сообщение от n00by (ok), 03-Дек-21, 09:23 
Для современного антивируса обязателен драйвер. В Венде для использования произвольного языка не надо преодолевать формальности в виде пальца Линуса.

Нашёл достаточно простой пример драйвера. devrandom driver sample which has been ported to Rust.
https://github.com/pravic/winapi-kmd-rs/blob/master/examples...

Оригинал на Си++ https://github.com/pravic/ontl/blob/master/samples/devrandom...
несколько больше по размеру, за счёт дополнительного функционала. Но интересно не это, а безопасная работа с памятью.

Вариант на небезопасном Си++ использует механизм структурной обработки исключений, если указатель Buffer адресует навалидный адрес, функция завершится корректно со статусом status::data_error.


ntstatus RandomData(void* Buffer, uint32_t Length)
{
  int64_t seed;
  KeQueryTickCount(seed);
  __try{
    uint32_t* data = reinterpret_cast<uint32_t*>(Buffer);
    for(uint32_t i = 0; i < Length / 4; i++)
      data[i] = RtlRandom((uint32_t*)&seed);
    if(Length % 4){
      uint32_t r = RtlRandom((uint32_t*)&seed);
      std::memcpy(&data[Length/4], &r, Length % 4);
    }
  }__except(efilter(exception_info(), __FUNCTION__)){
    return status::data_error;
  }
  return status::success;
}

Вопрос к знатокам: упадёт ли аналог в синьку, или Rust неявно использует SEH, или как-то иначе гарантируется валидность адреса?

// RtlRandom: Random number generator based on MacLaren and Marsaglia.
// RtlRandomEx is twice as fast and produces better random numbers
// since the period of the random numbers generated is comparatively higher.
fn GenerateRandom(buffer: PVOID, size: usize) -> Result<usize> {
    let mut seed = km::time::QueryTickCount() as u32;
    let data = buffer as *mut u32;
    let dwords = size / 4;
    let tail = size % 4;
    KdPrint!("[rs] generate random for %d bytes as %d words and %d padding\n", size as u32, dwords as u32, tail as u32);
    unsafe {
        let mut i = 0;
        while i < dwords {
            let word = km::rtl::RtlRandomEx(&mut seed);
            *data.offset(i as isize) = word;
            i += 1;
        }
        if tail != 0 {
            let word = km::rtl::RtlRandomEx(&mut seed);
            km::crt::memcpy(data.offset(dwords as isize) as *mut u8, &word as *const u32 as *const u8, tail);
        }
    }
    KdPrint!("[rs] generate complete\n");
    return Ok(size);
}

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

201. "Драйвер на Rust "  +1 +/
Сообщение от _hide_ (ok), 03-Дек-21, 12:34 
И в чем же его безопасность в этом примере? Просто до сих пор не понял, зачем себе яйца тисками зажимать?
Ответить | Правка | Наверх | Cообщить модератору

240. "Драйвер на Rust "  +1 +/
Сообщение от Аноним (53), 03-Дек-21, 15:47 
Редокс безопасно течёт, FF безопасно падает, драйвер на расте безопасно выводит "хеловорд!".
Ответить | Правка | Наверх | Cообщить модератору

343. "Драйвер на Rust "  +/
Сообщение от n00by (ok), 04-Дек-21, 08:26 
Сам по себе этот драйвер примечателен уже тем, что он есть. То есть без особого шума (как при попытке протащить Rust в Linux) автор создал библиотечку и написал к ней пример (угу, по традиции портировал пример аналогичной Си++ библиотеки). Но как раз по безопасности есть вопросы, на которые пока нет ответов.
Ответить | Правка | Наверх | Cообщить модератору

342. "Драйвер на Rust "  +1 +/
Сообщение от n00by (ok), 04-Дек-21, 08:19 
Если вопрос про безопасность Rust, то как раз это и интересно.

Обе функции получают в качестве параметра указатель, адресующий пространство пользователя. Если данному адресу не сопоставлена физическая страница ОЗУ, при обращения (запись результата) из ядра генерируется исключение. Если его не обработать должным образом, система покажет BSOD (синий экран смерти). Что делает возможным атаку вида "отказ в обслуживании". Вариант на Си++ использует SEH (конструкция __try __except) и обрабатывает такой случай, юзерленд получит код ошибки. Что в аналогичном сценарии произойдёт с драйвером на Rust, хотелось бы узнать.

Ответить | Правка | К родителю #201 | Наверх | Cообщить модератору

25. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Аноним (25), 02-Дек-21, 23:28 
>> Ждем-с привычного "Это и вот это не считается, потому что не считается! И это тоже не считается! Вот!"

Считается, зачёт, молодцы!
А зачем?

Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

30. "Выпуск языка программирования Rust 1.57"  –5 +/
Сообщение от Аноним (-), 02-Дек-21, 23:58 
по любой поделке раста огромный список недоделок, ещё один язык для писателей?
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

305. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Прохожий (??), 03-Дек-21, 20:41 
Список недоделок в студию, балабол!
Ответить | Правка | Наверх | Cообщить модератору

31. "Выпуск языка программирования Rust 1.57"  –1 +/
Сообщение от Аноним (-), 03-Дек-21, 00:02 
до чего все безопасное на раст, каждый вызов небезопасной функции libc помечен как небезопасный, что автоматом повышает безопасность на тысячи процентов. весь файл состоит из таких вызовов.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

35. "Выпуск языка программирования Rust 1.57"  +1 +/
Сообщение от Аноним (36), 03-Дек-21, 00:14 
> до чего все безопасное на раст, каждый вызов небезопасной функции libc помечен как небезопасный, что автоматом повышает безопасность на тысячи процентов. весь файл состоит из таких вызовов.

Это пример того, как на Rust писать неправильно. А правильно использовать unsafe по минимуму и какм можно раньше оборачивать небезопасный код в безопасные абстракции.

Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск языка программирования Rust 1.57"  –3 +/
Сообщение от Аноним (53), 03-Дек-21, 01:26 
> Это пример того, как на Rust писать неправильно.
> ... писать неправильно ...

А разве на расте есть другая возможность?

Ответить | Правка | Наверх | Cообщить модератору

62. "Выпуск языка программирования Rust 1.57"  +1 +/
Сообщение от Токсичный адепт Rust (?), 03-Дек-21, 01:50 
> А разве на расте есть другая возможность?

Написано же в комментарии выше, нет :)

> А правильно использовать unsafe по минимуму и какм можно раньше оборачивать небезопасный код в безопасные абстракции.

Вообще, unsafe - зло. Но часто это необходимое зло. И он помогает лучше локализовать причину проблемы в случае сегфолта - достаточно погрепать только по unsafe.

Ответить | Правка | Наверх | Cообщить модератору

63. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Токсичный адепт Rust (?), 03-Дек-21, 01:59 
> Написано же в комментарии выше, нет :)

Здесь пропущен ? в конце предложения. Конечно же, на Rust можно писать правильно :)

Ответить | Правка | Наверх | Cообщить модератору

51. "Выпуск языка программирования Rust 1.57"  –2 +/
Сообщение от Аноним (348), 03-Дек-21, 01:13 
>  до чего все безопасное на раст, каждый вызов небезопасной функции libc помечен как небезопасный, что автоматом повышает безопасность на тысячи процентов. весь файл состоит из таких вызовов.

В итоге получится обычная сишная программа. Такая же "безопасная", как и любая другая сишная программа.
Смысл так делать?

Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

56. "Выпуск языка программирования Rust 1.57"  –2 +/
Сообщение от Аноним (53), 03-Дек-21, 01:28 
Если 100500 раз написать unsafe для самоуспокоения, что компилятор за тебя всё сделает, то прога получает +9000 к безопасности.
Ответить | Правка | Наверх | Cообщить модератору

59. "Выпуск языка программирования Rust 1.57"  +1 +/
Сообщение от Аноним (-), 03-Дек-21, 01:36 
> Если 100500 раз написать unsafe для самоуспокоения, что компилятор за тебя всё
> сделает, то прога получает +9000 к безопасности.

А вот и Опеннетные Знатоки Компиляторов и статического программного анализа подоспели ... уж они-то точно знают, как их любимый компилятор турбо-паскаля работает!


Ответить | Правка | Наверх | Cообщить модератору

64. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Аноним (53), 03-Дек-21, 02:15 
Ну как там редокс - уже не течёт безопасно?
Ответить | Правка | Наверх | Cообщить модератору

67. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Аноним (-), 03-Дек-21, 02:32 
> Ну как там редокс - уже не течёт безопасно?

Какой неуклюжий спрыг с темы, да еще и прямо в лужу:
https://gitlab.redox-os.org/redox-os/redox/-/issues/855
> The Redox kernel does not have the structures in place to allow freeing memory.

Ответить | Правка | Наверх | Cообщить модератору

143. "Выпуск языка программирования Rust 1.57"  +1 +/
Сообщение от Онаним (?), 03-Дек-21, 10:30 
То есть это ещё и не баг, это вообще фича такая. Язычкасто.
Ответить | Правка | Наверх | Cообщить модератору

207. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Аноним (-), 03-Дек-21, 12:54 
> То есть - это не лужа, это вообще грязевая ванна такая! Вот!

Яснопонятно.


Ответить | Правка | Наверх | Cообщить модератору

280. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от burjui (ok), 03-Дек-21, 18:56 
Нет, не такая же. В Rust небезопасный код локализован в unsafe блоках и функциях, а весь остальной код получает все преимущества статического анализа компилятора. В C этого нет, в нём весь код - unsafe. К тому же, даже unsafe код на Rust безопаснее кода на C, потому что большая часть статического анализа применима и к нему: unsafe в Rust не означает полное отсутствие проверок и сишную семантику.
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

54. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Аноним (53), 03-Дек-21, 01:24 
Толсто. А теперь перечисли, что из этого нормально работает и не является хеловордом.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

58. "Выпуск языка программирования Rust 1.57"  +2 +/
Сообщение от Аноним (-), 03-Дек-21, 01:32 
>> Firecracker was developed at Amazon Web Services to improve the customer experience of services like AWS Lambda and AWS Fargate .
>> Firecracker is used by/integrated with (in alphabetical order): appfleet , containerd via firecracker-containerd , Fly.io , Kata Containers , Koyeb , Northflank , OpenNebula , Qovery , UniK , and Weave FireKube (via Weave Ignite ). Firecracker can run Linux and OSv guests. Our latest roadmap can be found here .

...
>> Поддержка Stratis интегрирована в дистрибутивы Fedora и RHEL начиная с выпусков Fedora 28 и RHEL 8.2.

...
> Толсто. А теперь перечисли, что из этого нормально работает и не является хеловордом.

А вот и "Это и вот это не считается, потому что не считается! И это тоже не считается! Вот!", дождались!

Ответить | Правка | Наверх | Cообщить модератору
Часть нити удалена модератором

101. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Прохожий (??), 03-Дек-21, 07:59 
Луддитам и правда не нужно.

Поправил, не благодари.

Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

144. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Онаним (?), 03-Дек-21, 10:31 
Куча названий, которые скорее всего не пригодятся никогда, от слова "совсем".
Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

409. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Аноним (409), 14-Дек-21, 21:53 
Firecracker не взлетел ни хрена. Примерно год назад его собирались закрывать, а растаманов - увольнять.
Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

242. "Выпуск языка программирования Rust 1.57"  –1 +/
Сообщение от Аноним (53), 03-Дек-21, 15:53 
Что характерно, растаманы придумывают названия своим хеловордам с помощью генератора случайных букв. Наверное, чтобы показать "важность" продуктов.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

246. "Выпуск языка программирования Rust 1.57"  +/
Сообщение от Аноним (-), 03-Дек-21, 16:13 
>> firecracker - английский
>> Stein - немецкий (камень, распространенная фамилия)
>> smol - английский
>> stratis - латынь
> Что характерно, растаманы придумывают названия своим хеловордам с помощью генератора случайных
> букв. Наверное, чтобы показать "важность" продуктов.

Что характерно, Воены Антирастового Военства и в обычных языках ни бум-бум и проекты на 50к строк у них - "хелловорды".


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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