LINUX.ORG.RU

Rust-for-Linux: Custom alloc, using stable Rust compilers, and more

 ,


0

4

Тут увидел симпатичный PR в Rust-for-Linux: https://github.com/Rust-for-Linux/linux/pull/402

Общий смысл: переписали alloc, что бы он не паниковал на каждый чих. Переходят на стабильный компилятор.

Немного примеров:

        for _ in 0..page_count {
            let page = Pages::<0>::new()?;
            page.insert_page(vma, address)?;
-            pages.push(page);
+            pages.try_push(page)?;
            address += 1 << bindings::PAGE_SHIFT;
        }

-        // TODO: This allocates memory.
-        let arc = Arc::from(pages);
+        let arc = Arc::try_from_vec(pages)?;

        // Save pages for later.
        let mut inner = self.inner.lock();
    fn read_all(&mut self) -> Result<Vec<u8>> {
        let mut data = Vec::<u8>::new();
-        data.try_reserve_exact(self.len())?;
-        data.resize(self.len(), 0);
+        data.try_resize(self.len(), 0)?;

        // SAFETY: The output buffer is valid as we just allocated it.
        unsafe { self.read_raw(data.as_mut_ptr(), data.len())? };

Надеются на слияние в 5.14

★★★★★
Ответ на: комментарий от anonymous

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

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Кстати, как интересно. Ранее сектанты кукарекали про «в си нет разделения, а у нас явный unsafe на уровне языка, а не сторонней приблуды». И что же мы видим теперь? Правильно - дошколята как всегда обгадился и вот уже пошли рассказы про «проблемы с головой разработчика».

Та же история была с безопасностью(фэйковой), исключениями(которые дошколята пытаются бездарно эмулировать через unwrap/?), системностью(с биндингами к си) и всем остальным, о чём заявлял пропаганда недоязычка.

anonymous
()
Ответ на: комментарий от vertexua

По-хорошему для этого нужен какой-то модификатор типа nopanic и поддержка в языке этих гарантий.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.