ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° ΠΠ΅ΠΉΠΌΠ±ΡΠΈΠ΄ΠΆ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π·Π° Π½Π΅Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄ Π² ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅. ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π°ΡΠ°ΠΊΠ° (CVE-2021-42574) Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΡΠΎ Trojan Source ΠΈ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΠΊΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°/ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈ Π·Π° ΡΠΎΠ²Π΅ΠΊΠ°, ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΊΠΎΠ΄Π°. ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ Π·Π° Π΅Π·ΠΈΡΠΈΡΠ΅ C, C++ (gcc ΠΈ clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go ΠΈ Python.
ΠΠ΅ΡΠΎΠ΄ΡΡ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ Unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΠ΅Π΄Π° Π½Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄Π²ΡΠΏΠΎΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΠΊΡΡ. Π§ΡΠ΅Π· ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, Π΅Π΄Π½ΠΈ ΡΠ°ΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΠΎΡΠ»ΡΠ²ΠΎ Π½Π°Π΄ΡΡΠ½ΠΎ, Π° Π΄ΡΡΠ³ΠΈ β ΠΎΡΠ΄ΡΡΠ½ΠΎ Π½Π°Π»ΡΠ²ΠΎ. Π Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π²ΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ Π½Π° ΠΈΠ²ΡΠΈΡ ΠΈΠ»ΠΈ Π°ΡΠ°Π±ΡΠΊΠΈ Π΅Π·ΠΈΠΊ Π² ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ΄. ΠΠΎ Π°ΠΊΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΡΠ΅ΠΊΡΡΠ° Π² Π΅Π΄ΠΈΠ½ ΡΠ΅Π΄, ΡΡΠ΅Π· ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΎΡΠΊΡΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠΊΠ°Π·Π²Π°Π½ΠΈ ΠΎΡΠ΄ΡΡΠ½ΠΎ Π½Π°Π»ΡΠ²ΠΎ, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΠΎΠΊΡΠΈΡΡ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ Π½ΠΎΡΠΌΠ°Π»Π΅Π½ ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠΊΠ°Π·Π²Π°Π½ ΠΎΡΠ»ΡΠ²ΠΎ Π½Π°Π΄ΡΡΠ½ΠΎ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄, Π² ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, Π½ΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠ° Ρ ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π½Π΅Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌ ΠΏΡΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄Π° Π½Π° ΠΊΠΎΠ΄Π°, ΡΡΠ΅Π· Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ ΠΈΠ»ΠΈ Π²ΡΡΡΠ΅ Π² Π»ΠΈΡΠ΅ΡΠ°Π» Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΏΠΎΠΊΠ°Π·Π²Π°Π½ΠΈ ΠΎΡΠ΄ΡΡΠ½ΠΎ Π½Π°Π»ΡΠ²ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π°ΡΠ° Π²ΠΌΡΠΊΠ²Π°Π½Π΅ Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ. ΠΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΊΠΎΠ΄ ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ½ΠΎ ΠΊΠΎΡΠ΅ΠΊΡΠ΅Π½, Π½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½ ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½.

ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΠ΅ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ° Ρ Π²ΠΈΠ·ΡΠ°Π»Π½ΠΈΡ ΡΠ΅Π΄ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ ΠΈ ΡΠ΅ Π²ΠΈΠ΄ΠΈ Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ, ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΠ»ΠΈ IDE Π½Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π΄ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π°ΡΠ° Π²ΠΌΡΠΊΠ²Π°Π½Π΅ ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ Π΅, Π±Π΅Π· Π΄Π° ΠΎΠ±ΡΡΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²ΡΠΏΠΎΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΠΊΡΡ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠ°. ΠΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ° ΠΏΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ Π½Π° ΠΊΠΎΠ΄ (VS Code, Emacs, Atom), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ (GitHub, Gitlab, BitBucket ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Π½Π° Atlassian).

ΠΠ·ΡΡΠΊΠ²Π°Ρ ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠΊΡΠΈΡΠΎ ΠΈΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅ βreturnβ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΠΏΠΎ-ΡΠ°Π½ΠΎ; Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ, Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΊΠ°ΡΠΎ Π΄Π΅ΠΉΡΡΠ²Π°ΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π²Π°ΠΆΠ½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ); ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΡΡΠΈΠ½Π³ΠΎΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΡΠΈΠ½Π³ΠΎΠ²Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ ΠΏΡΠΎΠΌΡΠ½Π°, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ° ΡΠ΅Π΄: if access_level != Β«user{U+202E} {U+2066}// Check if admin{U+2069} {U+2066}Β» {
ΠΊΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΊΠ°ΡΠΎ if access_level != Β«userΒ» { // ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ Π΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° Π°ΡΠ°ΠΊΠ° (CVE-2021-42694), ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΌΠΎΠ³Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ°Ρ, Π½ΠΎ ΠΈΠΌΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Unicode ΠΊΠΎΠ΄ΠΎΠ²Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠΌΠ²ΠΎΠ»ΡΡ Β«ΙΒ» ΠΏΡΠΈΠ»ΠΈΡΠ° Π½Π° Β«aΒ», Β«Ι‘Β» β Π½Π° Β«gΒ», Β«Ι©Β» β Π½Π° Β«lΒ»). ΠΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² Π½ΡΠΊΠΎΠΈ Π΅Π·ΠΈΡΠΈ Π² ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π·Π° Π΄Π° ΡΠ΅ Π·Π°Π±Π»ΡΠ΄ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΅Π· Π΄Π΅ΡΠ°ΠΉΠ»Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Π²Π΅Π΄Π½Π°Π³Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΊΠΎΡ ΠΎΡ ΡΠ΅Π·ΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΌΡΡΡΠΎ.

ΠΠ°ΡΠΎ ΠΌΡΡΠΊΠ° Π·Π° Π·Π°ΡΠΈΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈΡΠ΅, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠΈ Unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° Π½Π΅ΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ (U+202A, U+202B, U+202C, U+202D, U+202E, U+2066, U+2067, U+2068, U+2069, U+061C, U+200E ΠΈ U+200F) Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ, ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡΠ΅ Π΅Π·ΠΈΡΠΈ ΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
ΠΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ 1: ΠΠΎΠΏΡΠ°Π²ΠΊΠΈΡΠ΅ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° GCC, LLVM/Clang, Rust, Go, Python ΠΈ binutils. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π±ΠΈΠ» ΠΎΡΡΡΡΠ°Π½Π΅Π½ ΠΎΡ GitHub, Bitbucket ΠΈ Jira. Π ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π΅ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠ° Π·Π° GitLab. ΠΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΈΡ ΠΊΠΎΠ΄ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°: grep -r $'[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069]' /path/to/source
ΠΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ 2: Π Π°Ρ ΠΠΎΠΊΡ (Russ Cox), Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΠ‘ Plan 9 ΠΈ Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Go, ΠΊΡΠΈΡΠΈΠΊΡΠ²Π° ΠΏΡΠ΅ΠΊΠΎΠΌΠ΅ΡΠ½ΠΎΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΎΡΠ΄Π°Π²Π½Π° (Go, Rust, C++, Ruby) ΠΈ Π½Π΅ Π΅ Π±ΠΈΠ» Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ°Π½ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΠΎΠΊΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΊΠ°ΡΠ°Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅, ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ Π½Π° ΠΊΠΎΠ΄ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠ°Π½Π΅. ΠΠ°ΡΠΎΠ²Π° Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ²Π»ΠΈΡΠ° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ½ΠΈ Π°ΡΠ°ΠΊΠΈ, Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠΎΡΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ ΠΊΡΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅.
Π Π°Ρ ΠΠΎΠΊΡ ΡΡΡΠΎ ΡΡΠΈΡΠ°Π²Π°, ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈΡΠ΅ Π½Π΅ ΡΠ° ΠΌΡΡΡΠΎΡΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΈ Π·Π°Π±ΡΠ°Π½Π°ΡΠ° Π½Π° ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΎΡΡΠ°Π²Π° ΠΎΠ³ΡΠΎΠΌΠ΅Π½ ΠΎΠ±Π΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΎΡΡΠ°Π²Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, ΠΊΠ°ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ±ΠΎΡΠΊΠ°, Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠΈ, ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠΈ ΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ΅ΠΊΡΡΡ Rust Π·Π°Π±ΡΠ°Π½ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠ΄ LTR/RTL Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Cargo, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° Π°ΡΠ°ΠΊΠ° ΡΡΠ΅Π· ΡΠ°ΠΉΠ»Π° Cargo.toml. ΠΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° Π°ΡΠ°ΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml ΠΈ requirements.txt.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
