Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

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



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

"Компания Canonical представила проект по разработке транслятора с Си на Rust"  +/
Сообщение от opennews (?), 20-Авг-26, 08:34 
Компания Canonical анонсировала проект, развиваемый совместной с Бристольским университетом и нацеленный на разработку инструментария для автоматической трансляции кода с языка Си на Rust. Проект ориентирован на перевод больших репозиториев, содержащих сотни тысяч строк кода на Си, в безопасное (без unsafe-операций) и легко сопровождаемое представление на языке Rust. Canonical профинансирует работу исследователей над проектом в течение 3 лет. Развиваемая технология будет опробована для перевода на Rust пакетов AppArmor и snap-confine, чтобы проверить применимость метода к реальным системным компонентам...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=66099

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

Оглавление

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

1. Сообщение от я (?), 20-Авг-26, 08:34   +14 +/
а не логичнее наоборот сделать?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24, #28, #29, #31

2. Сообщение от Sm0ke85 (ok), 20-Авг-26, 08:40   +5 +/
>Компания Canonical анонсировала проект, развиваемый совместной с Бристольским университетом и нацеленный на разработку инструментария для автоматической трансляции кода с языка Си на Rust. Проект ориентирован на перевод больших репозиториев, содержащих сотни тысяч строк кода на Си, в безопасное (без unsafe-операций) и легко сопровождаемое представление на языке Rust.

Самое яркое подтверждение того, что посредством раста корпы решили наложить руку на весь гпл код...

#КорпыВорыМошенники

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

4. Сообщение от Аноним123 (?), 20-Авг-26, 08:42   +1 +/
Можно ссылку на github?
Ответить | Правка | Наверх | Cообщить модератору

5. Сообщение от bOOster (ok), 20-Авг-26, 08:46   +3 +/
Что за маразм вообще происходит? В С и С++ пилят анализаторы аналогичные rust и это даст лучшие результаты.
А все эти трансляторы - как были полным дер..ом, так ими и останутся, во всяком случае пока лжеИИ не обретет интеллект сравнимый с человеческим.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #7, #8, #13

7. Сообщение от Хру (?), 20-Авг-26, 08:57   +1 +/
Так уже обрёл - если верить АльтманОвичу ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #9

8. Сообщение от Пыщь (?), 20-Авг-26, 08:58   +/
> Что за маразм вообще происходит? В С и С++ пилят анализаторы аналогичные
> rust и это даст лучшие результаты.
> А все эти трансляторы - как были полным дер..ом, так ими и
> останутся, во всяком случае пока лжеИИ не обретет интеллект сравнимый с
> человеческим.

См. https://www.opennet.dev/openforum/vsluhforumID3/141055.html#2

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

9. Сообщение от bOOster (ok), 20-Авг-26, 09:04   +3 +/
> Так уже обрёл - если верить АльтманОвичу ;)

Этот кретин знает что жопа у него подгорает, вот и подвирает.

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

10. Сообщение от Смузихеб забывший пароль (?), 20-Авг-26, 09:12   +1 +/
> автоматической трансляции кода с языка Си на Rust
> в безопасное и легко сопровождаемое представление

с каких пор автоперевод кода с одного ЯП на другой вдруг стал означать упрощение сопровождения ?


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

12. Сообщение от Аноним (12), 20-Авг-26, 09:16   –1 +/
Почему не использовать сишные либы через ffi, а на расте просто новые вайбкодить? Токенозатраты в таком случае уменьшаются в бесконечное кол-во раз.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14

13. Сообщение от Colorado_House_of_Representatives (?), 20-Авг-26, 09:29   +/
> В С и С++ пилят анализаторы аналогичные rust

Нет, не аналогичные.

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

14. Сообщение от Colorado_House_of_Representatives (?), 20-Авг-26, 09:29   +/
Могут себе позволить.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

15. Сообщение от Аноним (15), 20-Авг-26, 09:30   +/
Наконец-то свободное ПО станет действительно свободным
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #22

16. Сообщение от Alexemail (??), 20-Авг-26, 09:50   +3 +/
Вовремя я с Убунты спрыгнул на арч. Похоже кононикал во все тяжкие пустился. Обосрал свой дистрибутив теперь другим житья не даст.
Ответить | Правка | Наверх | Cообщить модератору

17. Сообщение от _oleg_ (ok), 20-Авг-26, 09:51   +1 +/
Тссс... Не надо включать логику, это хорошо потому что модно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

18. Сообщение от онанист (?), 20-Авг-26, 09:58   +/
"пакетов AppArmor и snap-confine, чтобы проверить применимость метода к реальным системным компонентам. "

ыть как они про аппармор

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

19. Сообщение от Mik Foxi (ok), 20-Авг-26, 10:09   +1 +/
Не зря я с убунты ушел на винду. Не будет уже в убунте толка. Главное чтоб до дебиана не добрались и не засрали его также, а то и на серверах хз что ставить тогда.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #23, #25

20. Сообщение от опеншлёпивпродакшн (?), 20-Авг-26, 10:11   +1 +/
> традиционные трансляторы создают неидиоматичный и небезопасный Rust-код

В новом Rust уже традиции какие-то появились. Ещё и небезопасные!

> AI-модели плохо масштабируются на крупные репозитории и не гарантируют сохранение поведения программы

Это кто-то код на библиотеки и модули разбивать не умеет.

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

21. Сообщение от Нонон (?), 20-Авг-26, 10:12   +/
Они пытаются выше головы прыгнуть. Через чур амбициозно. Собственно, как обычно для Canonical

ИИ и так неплохо переводит код с си в раст. Но с блоками unsafe. А вот начиная с этого этапа лучше уже вмешиваться человеку И более пристально проверять как ИИ будет решать избавится от этого unsafe

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

22. Сообщение от _hide_ (ok), 20-Авг-26, 10:15   +/
Самая главная свобода -- это свобода от взятых обязательств.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

23. Сообщение от Аноним (24), 20-Авг-26, 10:21   –1 +/
> ушел на винду
> Главное чтоб до дебиана не добрались
> на серверах хз что ставить тогда

Винду, очевидно. Лучшая ОС.

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

24. Сообщение от Аноним (24), 20-Авг-26, 10:23    Скрыто ботом-модератором–2 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

25. Сообщение от Кроссдрессер (?), 20-Авг-26, 10:29   +1 +/
Слаку - самый стабильный и предсказуемый дистр.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

27. Сообщение от Аноним (27), 20-Авг-26, 10:39   +/
Зачем? ЫЫшка справляется с переписыванием.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #32

28. Сообщение от Аноним (28), 20-Авг-26, 10:39   –1 +/
Интересно посмотреть, как на расте будет выглядеть двусвязный список без unsafe.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #33, #34

29. Сообщение от Васян Айтишник (?), 20-Авг-26, 10:41   +/
Давайте ещё микроскопами камни обтёсывать :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

30. Сообщение от Аноним (28), 20-Авг-26, 10:42   +/
> небезопасный Rust-код

Вау! Значит, раст можно откинуть, как и "небезопасный Си-код"? И перейти на безопасный Паскаль.

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

31. Сообщение от Аноним (31), 20-Авг-26, 10:52   +/
По ходу никто не понял сарказма. Мозг нынче обмельчал, ТС :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

32. Сообщение от Аноним (31), 20-Авг-26, 10:56    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

33. Сообщение от Аноним (33), 20-Авг-26, 10:57   +/
Вот так. Ещё вопросы?

use std::cell::RefCell;
use std::rc::{Rc, Weak};

pub struct Node<T> {
    pub value: T,
    pub next: Option<Rc<RefCell<Node<T>>>>,
    pub prev: Option<Weak<RefCell<Node<T>>>>,
}

pub struct DoublyLinkedList<T> {
    head: Option<Rc<RefCell<Node<T>>>>,
    tail: Option<Rc<RefCell<Node<T>>>>,
    pub length: usize,
}

impl<T> DoublyLinkedList<T> {
    pub fn new() -> Self {
        DoublyLinkedList {
            head: None,
            tail: None,
            length: 0,
        }
    }

    pub fn is_empty(&self) -> bool {
        self.length == 0
    }

    pub fn push_front(&mut self, value: T) {
        let new_node = Rc::new(RefCell::new(Node {
            value,
            next: self.head.take(),
            prev: None,
        }));

        if let Some(old_head) = &new_node.borrow().next {
            old_head.borrow_mut().prev = Some(Rc::downgrade(&new_node));
        } else {
            self.tail = Some(Rc::clone(&new_node));
        }

        self.head = Some(new_node);
        self.length += 1;
    }

    pub fn push_back(&mut self, value: T) {
        let new_node = Rc::new(RefCell::new(Node {
            value,
            next: None,
            prev: self.tail.as_ref().map(|t| Rc::downgrade(t)),
        }));

        if let Some(old_tail) = self.tail.take() {
            old_tail.borrow_mut().next = Some(Rc::clone(&new_node));
        } else {
            self.head = Some(Rc::clone(&new_node));
        }

        self.tail = Some(new_node);
        self.length += 1;
    }

    pub fn pop_front(&mut self) -> Option<T> {
        self.head.take().map(|old_head| {
            self.length -= 1;
            if let Some(next_node) = old_head.borrow_mut().next.take() {
                next_node.borrow_mut().prev = None;
                self.head = Some(next_node);
            } else {
                self.tail.take();
            }
            Rc::try_unwrap(old_head)
                .ok()
                .expect("Failed to unwrap Rc")
                .into_inner()
                .value
        })
    }

    pub fn pop_back(&mut self) -> Option<T> {
        self.tail.take().map(|old_tail| {
            self.length -= 1;
            if let Some(prev_weak) = old_tail.borrow_mut().prev.take() {
                if let Some(prev_node) = prev_weak.upgrade() {
                    prev_node.borrow_mut().next = None;
                    self.tail = Some(prev_node);
                }
            } else {
                self.head.take();
            }
            Rc::try_unwrap(old_tail)
                .ok()
                .expect("Failed to unwrap Rc")
                .into_inner()
                .value
        })
    }
}

impl<T> Drop for DoublyLinkedList<T> {
    fn drop(&mut self) {
        while self.pop_front().is_some() {}
    }
}

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

34. Сообщение от linked list (?), 20-Авг-26, 11:01   +/
Интересно посмотреть на пример реальной задачи где двусвязный список лучше решение
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28


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

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




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

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