Rust - Allgemeine Fragen (Binaries Größe und AVR)

OP #8085918
Lesenswert?

Hallo Community!

Vorweg: Da ich gerade an einem Projekt mitarbeite, ist ein Betriebssystem für den Raspberry Pi 3b+ inklusive user space Programme, das in Rust geschrieben ist und ich zugeben muss, dass ich vorher nie mehr als ein simples "Hello World!" in Rust bei mir aus zeitlichen Gründen damals raus kam, habe ich halt gedacht ich helfe bei dem Projekt um auch ein wenig Rust besser zu verstehen. Was meine Aufgabe derzeit ist, ist ein dementsprechendes Rust Modul bzw. Crate für die Cortex-A53 MMU (TLB, Caches, ...) zu schreiben.

Zu meinen Fragen:

Ist es normal das die erzeugten Binaries sehr groß sind?

Weil einfach nur ein Hello World Programm braucht schon mal ungefähr 2MiB. Verglichen mit einem C Programm mit ein paar Kilobytes ohne Optimierungstricks ist das schon sehr viel.

Dadurch dass das erzeugte Programm relativ groß ist, verwendet Rust hier wer für AVR? Wie sieht es hier mit der Größe aus?

#8086028
Lesenswert?

Frank K. schrieb:

Ja. Rust kennt keine Shared Objects/DLLs. Da muss immer alles statisch reincompiliert werden.

Fake News! Rust kann das durchaus.

Johannes schrieb:

Ist es normal das die erzeugten Binaries sehr groß sind?

Ja. Rust linkt als Standard alles statisch. Da ist immer die Standardbibliothek mit drin. Und alles wird mit debug Informationen compiliert/gelinkt. Es gibt möglichkeiten das kleiner zu bekommen.

Aber: Rust hat keine stabile ABI. Es muss immer die exakt mit dem gleichen kompiler Version und Einstellung compilierte Version der Bibliothek sein.

Auf Mikrocontrollern sieht es anders aus: es muss eh immer alles statisch gelinkt sein. Aber Rust braucht mehr Speicher als c/c++.

OP #8086327
Lesenswert?

Andreas D. schrieb:

Welches Projekt ist das? Kling spannend. Ist das Open Source?

Ja, ist Open Source. Hier das GitHub repo vom Maintainer:

https://github.com/ZackyGameDev/AtOS

Ich hab auch eine Fork für Pull Requests, der schon etwas weiter ist. zu mindestens läuft das Betriebssystem schon fast auf der echten Hardware mit meinen Repo, aber leider noch nicht ganz vollständig. Fehlt noch an ein paar Stellen im Kernel das bereinigen des Caches. Hier bin ich gerade am werken. Interessanterweise läuft es in QEMU reibungslos, auf echter Hardware leider noch nicht ganz. Ist hauptsächlich ein Problem mit den I-Cache und D-Cache.

: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren