The OpenNET Project / Index page

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



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

Оглавление

Выпуск операционной системы Redox OS 0.6, написанной на языке Rust , opennews (??), 26-Дек-20, (0) [смотреть все]

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


176. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  –2 +/
Сообщение от Аноним (176), 26-Дек-20, 20:43 
А почему при установке раст компилятора и его std либы месте аж больше 300 мегабайт занимает?
Скомпилил хелоу ворлд, охренел - экзешник 11 мегабайт. Ещё компилятор думол полторы секунды, а gcc и g++ компилят моментально.
Как так?
Ответить | Правка | Наверх | Cообщить модератору

179. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от анонн (ok), 26-Дек-20, 21:15 
> Скомпилил хелоу ворлд, охренел - экзешник 11 мегабайт.
> Ещё компилятор думол полторы секунды, а gcc и g++ компилят моментально.
> Глянул на руки - кривоваты.
> Как так?

Кто ж его знает?


$ cat hello_world.rs && time  rustc -O hello_world.rs &&  wc -c ./hello_world
fn main() {                                                                    
    println!("Hello Wrot!");
}
rustc -O hello_world.rs  0,26s user 0,11s system 140% cpu 0,262 total
  392000 ./hello_world

cat hello_world.rs && time rustc -C prefer-dynamic -O -C link-args=-s  hello_world.rs && wc -c ./hello_world
fn main() {
    println!("Hello Wrot!");
}

$ rustc -C prefer-dynamic -O -C link-args=-s hello_world.rs  0,19s user 0,11s system 137% cpu 0,213 total
    6592 ./hello_world

$ time gcc -O2 hello.c
gcc -O2 hello.c  0,09s user 0,03s system 87% cpu 0,138 total

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

186. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от Wilem82 (?), 26-Дек-20, 22:43 
Gcc меньше проверок делает, конечно он быстрее. Чем меньше программа делает, тем быстрее она работает.

Тоже самое и с размером - бинари раста толще потому, что там больше кода который даёт больше фич, чем hello world на сях. Разматывание стека на панике с выводом где в коде была ошибка (типа жавовских стек трейсов), и тд. Кроме того, он содердит растовский libstd, в то время как сишные программы по-умолчанию не содержат, а линкуются с libc.

Всё это можно отключить и сделать бинарь такого же размера, как на сях. Подробнее тут https://github.com/johnthagen/min-sized-rust

Но лучше всего почитать блог где чел пишет операционку с нуля на расте, где всё это как раз отключается и показывается чё к чему: https://os.phil-opp.com/

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

187. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +1 +/
Сообщение от анонн (ok), 26-Дек-20, 22:50 
> Gcc меньше проверок делает, конечно он быстрее. Чем меньше программа делает, тем
> быстрее она работает.
> Тоже самое и с размером - бинари раста толще потому, что

Комментарий не читай, сразу бодро отвечай?


>> 11 мегабайт.
>> полторы секунды,
> $ rustc -C prefer-dynamic -O -C link-args=-s hello_world.rs  0,19s user 0,11s system 137% cpu 0,213 total
>    6592 ./hello_world
> $ time gcc -O2 hello.c
> gcc -O2 hello.c  0,09s user 0,03s system 87% cpu 0,138 total

Выжимка:
___
> 6592 (6.5KB) ./hello_world (rust)
> rustc 0,19s user 0,11s system 137% cpu 0,213 total
> gcc 0,09s user 0,03s system 87% cpu 0,138 total

---

В общем, вышеотписавшийся в 176 анонимный "критик" выставил себя еще тем "знатоком" ;)

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

290. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от Аноним (290), 27-Дек-20, 19:16 
С этим понятно. Компилятору нужно правильные опции задавать. А как быть с перенесёнными с плюсов либами? Их в расте можно заметить по вызову типа С_function_name.unwrap(). Так напримёр все функции OpenGL на расте вызываются.
Как это вообще работает? Происходят ли какие-то потери в производительности?
Ответить | Правка | Наверх | Cообщить модератору

338. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +1 +/
Сообщение от Wilem82 (?), 28-Дек-20, 15:07 
> типа С_function_name.unwrap().

Скорее так:

    unsafe { C_function_name() };

unwrap() - это метод растовских типов std::result::Result и std::option::Option, сишные функции его не возвращают.

> Как это вообще работает? Происходят ли какие-то потери в производительности?

Никаких потерь. Просто вызов функции, как и в Си.

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

182. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от ю (?), 26-Дек-20, 22:20 
статическая линковка + отладочная сборка по-умолчанию
Ответить | Правка | К родителю #176 | Наверх | Cообщить модератору

191. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  –2 +/
Сообщение от Аноним (191), 26-Дек-20, 23:11 
ЗОтО безОпаснОсть!!!!11111
Ответить | Правка | К родителю #176 | Наверх | Cообщить модератору

274. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от ИмяХ (?), 27-Дек-20, 17:36 
Статическая линковка - это безопасно? А прикинь в стандартной библиотеке найдут критическую уязвимость. Вся их хваленная безопасность мигом накроется медным тазом.
Ответить | Правка | Наверх | Cообщить модератору

314. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от Аноним (176), 27-Дек-20, 23:08 
Ну тогда в эту категорию попадают все те, кто вовремя не обновляет софт.
Даже при динамической линковке у юзера может быть устаревшая система с кучей уязвимостей.
Ответить | Правка | Наверх | Cообщить модератору

336. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от Аноним (201), 28-Дек-20, 14:10 
При динамической линковке достаточно обновить одну разделяемую библиотеку. При статической надо пересобирать всё, что слинковано с библиотекой. Чувствуешь разницу?
Ответить | Правка | Наверх | Cообщить модератору

339. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +2 +/
Сообщение от Wilem82 (?), 28-Дек-20, 15:18 
> А прикинь в стандартной библиотеке найдут критическую уязвимость.

Так и обратное верно - прикинь, в новую версию библы занесут баг и все программы окажутся уязвимы.

Динамическая линковка это здорово и жаль, что Cargo по-умолчанию её не делает. Но клёвая не тем, что можно зависимости на лету поменять (и потенциально сломать программу), а тем, что не надо один и тот же код сто раз в память загружать. То есть идеальный подход - это как в Винде: вот бинарь, вот рядом с ним DLL-ки. Хочешь - заменяй, хочешь - шарь их на всю систему. А не хочешь - ничё не делай, бинарь будет их использовать из текущей директории только для себя, и ни с кем в системе не будет пересекаться, не будет проблем с несовместимостями версий и тд.

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

213. "Выпуск операционной системы Redox OS 0.6, написанной на язык..."  +/
Сообщение от Anonimowy cz322owiek (?), 27-Дек-20, 05:36 
Там надо для боевого компилинга включить оптимизации и выключить отладочные фигулины. И будет норм. По умолчанию там дебажно без оптов
Ответить | Правка | К родителю #176 | Наверх | Cообщить модератору

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

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




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

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