ΠΠ° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π² ΡΡΡΡΠ°Π²Π° Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° GCC 15 Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠ°ΡΠΎΠ²Π΅ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust Π² front-end gccrs. ΠΠ°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ°ΡΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π°Π΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (borrow checker), ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Polonius, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Π΅ΠΊΠΈΠΏ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Rust ΠΊΠ°ΡΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ Π½Π° Borrow checker.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Borrow checker ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΈΡΠΎ Π² ΡΠ΅Π΄ΠΈΡΠ° ΡΠ»ΡΡΠ°ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠΈΡΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ (safe) ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ Π΄ΠΎΡΠ΅Π³Π° Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π» ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π°Π½Π΅ Ρ ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° Unsafe Π·Π°ΡΠ°Π΄ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π°ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Borrow checker.
ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° GCC ΠΈΠΌΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- ΠΠ° Polonius ΡΠ° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² ΡΠ΅Π°Π»Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΊΠΎΠ΄ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π΅ΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»Π΅Π½ ΡΠ°ΡΡΠ΅ΠΆ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°.
- Π ΡΠ»ΡΡΠ°Ρ Ρ GCC Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° Π½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ (bootstrapping) Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° gccrs Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Rust (Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΎ).
ΠΡΠ»Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π° 2-ΡΡΠ°Π΄ΠΈΠΉΠ½ΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅, ΠΏΡΠΈ ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΡΠ²ΠΎ GCC ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° gccrs Π±Π΅Π· Borrow checker, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Borrow checker, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΎΠ»Π΅ΠΊΠΎΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΠΈ ΡΡΠΈΡΠ°ΠΉΠΊΠΈ ΠΊΠΎΠ΄Π° ΡΡΠ»ΠΎΠ²Π½ΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ (Ρ.Π΅. Π±Π΅Π· Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π°Π΅ΠΌΠ°Π½Π΅ΡΠΎ). Π‘Π»Π΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Borrow checker ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΠΎΡΠ΅ Π΅Π΄Π½Π° ΠΏΡΠ΅ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°, Π½ΠΎ Π²Π΅ΡΠ΅ Ρ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π° Π·Π°Π΅ΠΌΠ°Π½Π΅ΡΠΎ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
