Wpis z mikrobloga

Skompiluje sobie kernela z rustem, co może pójść nie tak... Poza gcc potrzebuję oczywiście rustowy toolchain, makes sense... ale nie mogę użyć gcc, tylko muszę skorzystać z LLVM... okay, let's give it a try... a few hours later... no działa, pora sprawdzić ten kod rustowy... pierwsze co znalazłem, to keywork "unsafe"... czyli co, rust jest memory safe pod warunkiem, że nie użyje tego keyworda?

#programowanie #programista15k #programista25k #pasjonat15k #pracait #rust #rustlang
groman43 - Skompiluje sobie kernela z rustem, co może pójść nie tak... Poza gcc potrz...

źródło: Screenshot 2025-12-02 at 21.03.26

Pobierz
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@groman43: Nie da się wrzucić rusta do dużego codebase w C i nie mieć unsafe bez rozwalania API. Z czasem jak coraz więcej rzeczy będzie w ruście to te unsafe będą znikać. Wszystkich się raczej nie pozbędą bo to jednak kernel, czasem po prostu inaczej się nie da
  • Odpowiedz
@groman43: z tego co rozumiem to unsafe się daje jak piszesz choćby C ABI w libce,i innych miejscach strategicznych, a w takiej zwykłej logice programu już tego unsafe nie używasz, nie jest to idealne rozwiązanie, ale jakieś jest
  • Odpowiedz
@BreathDeath: dla mnie trochę nie do przeżycia jest ten syntax, który jest po prostu obrzydliwy, ale może kolejnym razem uda mi się do niego przekonać i coś poważniejszego w nim napiszę. drugą rzeczą którą mnie trochę odpycha, to jednak mimo wszystko pociąga mnie trochę ta natura undefined behavior C i C++ - tutaj nie ma nudy, natomiast w Rust, skoro bezpiecznie, to i nudno.
  • Odpowiedz
  • 0
@polskie-k0rpo: tutaj niekoniecznie chodzi o ABI. ABI to między innymi sposób w jaki funkcję przekazują sobie parametry (przez rejestry, stos, etc.) i zwykle jest zależne od HW, a nie od języka programowania.

Ale zgodzę się z tym, że to unsafe ma związek z tym, że kawałek kod w Ruscie dostaje parametry od kawałku kodu w C.
  • Odpowiedz
@groman43: oj ale gadasz głupoty. jasne, że ABI jest zależne też od software, choćby od systemu operacyjnego. Linux ma inne ABI niż Windows. tak samo runtime języka wpływa na ABI. C++ dodaje choćby name mangling. Inaczej mógłbyś sobie wywoływać w C biblioteki C++ bez tworzenia warstwy C ABI w takiej bibliotece C++, a jak wiemy to nie jest prawdą
  • Odpowiedz
czyli co, rust jest memory safe pod warunkiem, że nie użyje tego keyworda?


@groman43: nie, jest memory safe nawet jak używasz tego keyworda. unsafe jedyne co robi to *pozwala na dodatkowe rzeczy*, on nie "wyłącza" istniejących mechanizmów w języku. Oczywiście, można zrobić rzeczy, z unsafe, które spowodują, że kod nie będzie bezpieczny, ale dzięki unsafe możesz ograniczyć te miejsca do określonych fragmentów, a nie, że całość kodu jest potencjalnie
  • Odpowiedz
i zwykle jest zależne od HW, a nie od języka programowania.


@groman43: ABI to po prostu protokół komunikacji. To, że np. większość osób w kraju używa języka polskiego do komunikacji nie oznacza, że np. w domu nie możesz rozmawiać po chińsku

Z drugiej strony dominacja C/C++ i skopany system zależności (nie budujemy wszystkiego od zera tylko dołączamy biblioteki skompilowane u kogoś innego) sprawia, że wszyscy muszą używać tego samego ABI
  • Odpowiedz