Vlákno názorů k článku Programovací jazyk Rust: použití FFI pro volání funkcí z nativních knihoven (2. část) od dizzy - pokial by som mohol dat nejaku inspiraciu k...

  • Článek je starý, nové názory již nelze přidávat.
  • 9. 6. 2017 8:24

    dizzy (neregistrovaný)

    pokial by som mohol dat nejaku inspiraciu k dalsiemu pokracovaniu serialu - videl som nejaky pokus portovat Rust na microcontroler (konkretne AVR/Arduino). Chlapik to popisoval v nejakom blogu a dostal sa az tak daleko, ze rozbehal nejaky trivialny kod v Rust-e na Arduine a skoncil na tom, ze nemal/musel by portovat core lib (zakladne funkcie Rust-u) pre AVR, co by zrejme nebola uplne trivialna uloha.
    Zaujimal by ma nazor autora - je Rust vobec vhodny na taketo nasadenie? Lebo o Rust-e sa prave hovori ako o moznej nahrade C/C++ a mat takto silny jazyk na jednoduchom microcontrolleri by bol docela masaker...

  • 9. 6. 2017 22:13

    Pavel Tišnovský
    Zlatý podporovatel

    To by mě také docela zajímalo :-) Oficiálně je podporován (až v tier 3) 16bitový procesor MSP-430, který je ovšem docela výkonný (a trošku také inspirovaný klasickými RISCy - https://www.root.cz/clanky/sestnactibitove-mikroradice-ti-rady-msp430/).

    Co bych viděl jako potenciální problém je velikost zásobníku na některých architekturách, protože Rust implicitně vše ukládá na zásobník, pokud se nepoužije Box atd.

    Jinak jako backend je použito LLVM a generovaný kód se od céčka příliš neliší.

    Možným dalším problémem je velikost binárek, do kterých je staticky slinkována standardní knihovna, takže na x86-64 dostaneme nějakých skoro 700 kB kódu. Jde to snížit dynamickým linkováním rustc -C prefer-dynamic na cca 8 kB, ale to si nepomůžeme, protože ta knihovna tam stejně bude muset být. Takže na menších čipech dřív či později dojde k odstraňování některých částí std. knihovny, což je problém, protože to není nijak standardizováno (to je škoda). Mě by se asi líbilo mít std. knihovnu úplně maličkou a všechno další řešit přes "crates" (moduly Carga).

  • 9. 6. 2017 22:17

    Pavel Tišnovský
    Zlatý podporovatel

    Vlastně jsem neodpověděl na otázku :-) Takže pro Rust v dnešním stavu si myslím, že pro menší MCU (ATMega atd.) to _zatím_ není vhodná volba, ale na druhou stranu plně 32bitové Cortexy-M se dávají skoro všude (Arduino M0...) a tam to smysl má.

  • 12. 6. 2017 9:00

    dizzy (neregistrovaný)

    ...ono popravde je treba si asi uvedomit, ze uz aj C++ je na AVR platforme dost na hrane a tiez sa to riesi tak, ze sa orezava libstdc++, pripadne sa tam nedava vobec a vyuziva sa len samotny jazyk (prip. si nejake primitivne triedy pre string alebo ring buffer nabastli kazdy podla potreby), takze netreba mat asi prehnane ocakavania :-(
    Existuje dokonca projekt na gitlabe (https://github.com/avr-rust) ktory je prekvapivo zivy. Ale skor si myslim, ze casom nastupia nove mikroconrollery za rozumne ceny, na ktorych uz nebude treba riesit kazdy kilobyte kodu.
    Kazdopadne dakujem za odpoved a tesim sa na dalsi diel serialu :-)