ΠΠΈΠΊ ΠΠ΅Π·Π°Π½ΠΈΠ΅ (
ΠΠ΅ΠΊΠ° ΡΠΈ ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ Π² ΡΠΊΠΎΡΠΎΡΠ½Π° Π΄ΠΈΡΠΊΡΡΠΈΡ Π½Π° Open Source Summit ΠΈ Embedded Linux ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»Π΄Ρ
- Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° βΠ ΠΈΠ±Π° Π² Π±ΡΡΠ²Π°β
ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΈ ΡΠ»ΠΎΠ΅Π²Π΅ Π²ΡΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°. Π‘Π»ΠΎΠ΅Π²Π΅ΡΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°bindgen . Clang ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡΠ΅ ΡΠ»ΠΎΠ΅Π²Π΅, ΡΠ³Π»ΠΎΠ±Π΅Π½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° staticlib. - ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² Π₯ΠΎΠ½ΠΊΠΎΠ½Π³
ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ Π½Π° Π½Π΅ΡΠ°ΡΠ° Π² Rust, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° bindgen Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ. Π Π°ΠΌΠΊΠ°ΡΠ° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈΡΠ΅, Π±Π΅Π· Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ΄ΡΠΎΡΠΎ - Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π·Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈΡΠ΅ Π² ΡΠ΄ΡΠΎΡΠΎ, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΎ-ΡΠΈΠ³ΡΡΠ½ΠΈΡ Π΅Π·ΠΈΠΊ Rust. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅, ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΡΡΠ΅Π½ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π°Π±ΡΡΠ·ΠΎ, Π±Π΅Π· Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΎΠ΄ΠΈΡ. - Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΡΠ°ΠΌΠΊΠ°
C2Rust Π·Π° ΠΈΠ·Π»ΡΡΠ²Π°Π½Π΅ Π½Π° C ΠΊΠΎΠ΄ ΠΊΡΠΌ Rust,ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΡΡΡΠ½ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° GCC ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π² C2Rust. ΠΠ° Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, C2Rust ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° GCC Π°ΡΡΠΈΠ±ΡΡΠΈ inline, cold, alias, used ΠΈ section, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ Π°ΡΠ΅ΠΌΠ±Π»Π΅Ρ ΠΈ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΡΠ°Π²Π½Π΅Π½ΠΈ ΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ xregs_state) . ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΡΡΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°, Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΈ C ΠΌΠ°ΠΊΡΠΎΡΠΈ Π² Rust ΠΌΠ°ΠΊΡΠΎΡΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΏΡΠ΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ C2Rust ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π° C ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠ° libc, Π½ΠΎ ΡΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru