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

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

Тебя обманули. Это не библиотека и сделано это не уровне данной скриптухи. Оно срёт мусором в рантайм причём с ансейвом, отваливается при линковке. Даёт функции неадекватные имена.

И к тому же ничего не проверяет. Всё, что там написано в описании - полная чушь.

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