ื˜ืจืึธื“ื–ืฉืึทืŸ ืžืงื•ืจ ื‘ืึทืคืึทืœืŸ ืฆื• ื‘ืึทืงืขื ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ื™ ืงืึธื“ ื•ื•ืึธืก ื–ืขื ืขืŸ ื•ืžื–ืขื™ืง ืฆื• ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ

ืจืขืกืขืึทืจื˜ืฉืขืจืก ืคื•ืŸ ืื•ื ื™ื•ื•ืขืจืกื™ื˜ืขื˜ ืคื•ืŸ ืงื™ื™ืžื‘ืจื™ื“ื–ืฉ ื”ืึธื‘ืŸ ืืจื•ื™ืก ืึท ื˜ืขื›ื ื™ืง ืคึฟืึทืจ ื‘ื™ืฉื˜ื™ืงืข ื™ื ืกืขืจื˜ื™ื ื’ ื‘ื™ื™ื–ืข ืงืึธื“ ืื™ืŸ ืคึผื™ื™ืจ-ืจื™ื•ื•ื™ื•ื“ ืžืงื•ืจ ืงืึธื“. ื“ืขืจ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืึทื˜ืึทืง ืื•ืคึฟืŸ (CVE-2021-42574) ืื™ื– ื“ืขืจืœืื ื’ื˜ ืื•ื ื˜ืขืจ ื“ื™ ื ืึธืžืขืŸ Trojan Source ืื•ืŸ ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืคืึธืจืžื™ืจื•ื ื’ ืคื•ืŸ ื˜ืขืงืกื˜ ื•ื•ืึธืก ืงื•ืงื˜ ืึทื ื“ืขืจืฉ ืคึฟืึทืจ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ / ื™ื ื˜ืขืจืคึผืจื™ื˜ืขืจ ืื•ืŸ ื“ืขืจ ืžืขื ื˜ืฉ ื•ื•ื™ื•ื™ื ื’ ื“ื™ ืงืึธื“. ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ื“ืขื ืื•ืคึฟืŸ ื–ืขื ืขืŸ ื“ืขืžืึทื ืกื˜ืจื™ื™ื˜ื™ื“ ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ืงืึทืžืคึผื™ื™ืœืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืคึผืจืึทื˜ืขืจื– ืกืึทืคึผืœื™ื™ื“ ืคึฟืึทืจ C, C ++ (ื’ืงืง ืื•ืŸ ืงืœืึทื ื’), C #, ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ (Node.js), Java (OpenJDK 16), Rust, Go ืื•ืŸ Python.

ื“ืขืจ ืื•ืคึฟืŸ ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืกืคึผืขืฆื™ืขืœ ืื•ื ื™ืงืึธื“ ืื•ืชื™ื•ืช ืื™ืŸ ืงืึธื“ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ื•ื•ืึธืก ื˜ื•ื™ืฉืŸ ื“ื™ ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ ืกื“ืจ ืคื•ืŸ ื‘ื™ื™ื“ื™ืจืขืงื˜ื™ืึธื ืึทืœ ื˜ืขืงืกื˜. ืžื™ื˜ ื“ื™ ื”ื™ืœืฃ ืคื•ืŸ ืึทื–ืึท ืงืึธื ื˜ืจืึธืœ ืื•ืชื™ื•ืช, ืขื˜ืœืขื›ืข ื˜ื™ื™ืœืŸ ืคื•ืŸ ื“ืขื ื˜ืขืงืกื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ ืคื•ืŸ ืœื™ื ืงืก ืฆื• ืจืขื›ื˜, ื‘ืฉืขืช ืื ื“ืขืจืข - ืคื•ืŸ ืจืขื›ื˜ ืฆื• ืœื™ื ืงืก. ืื™ืŸ ื•ื•ืึธื›ืขื“ื™ืง ืคื™ืจ, ืึทื–ืึท ืงืึธื ื˜ืจืึธืœ ืื•ืชื™ื•ืช ืงืขื ืขืŸ ื•ื•ืขืจืŸ ื’ืขื ื™ืฆื˜, ืœืžืฉืœ, ืฆื• ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืงืึธื“ ืฉื•ืจื•ืช ืื™ืŸ ื”ืขื‘ืจืขื™ืฉ ืึธื“ืขืจ ืึทืจืึทื‘ื™ืฉ ืื™ืŸ ืึท ื˜ืขืงืข. ืื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ืฉื•ืจื•ืช ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ื˜ืขืงืกื˜ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก ืื™ืŸ ืื™ื™ืŸ ืฉื•ืจื”, ื ื™ืฆืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ืื•ืชื™ื•ืช, ืคึผืึทืกื™ื“ื–ืฉื™ื– ืคื•ืŸ ื˜ืขืงืกื˜ ื’ืขื•ื•ื™ื–ืŸ ืคื•ืŸ ืจืขื›ื˜ ืฆื• ืœื™ื ืงืก ืงืขื ืขืŸ ืึธื•ื•ื•ืขืจืœืึทืคึผ ื™ื’ื–ื™ืกื˜ื™ื ื’ ืจืขื’ื•ืœืขืจ ื˜ืขืงืกื˜ ื’ืขื•ื•ื™ื–ืŸ ืคื•ืŸ ืœื™ื ืงืก ืฆื• ืจืขื›ื˜.

ืžื™ื˜ ื“ืขื ืื•ืคึฟืŸ, ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ื’ืŸ ืึท ื‘ื™ื™ื–ืข ืงืึทื ืกื˜ืจืึทืงื˜ ืฆื• ื“ื™ ืงืึธื“, ืึธื‘ืขืจ ืžืึทื›ืŸ ื“ืขื ื˜ืขืงืกื˜ ืžื™ื˜ ื“ืขื ืงืึทื ืกื˜ืจืึทืงื˜ ื•ืžื–ืขื™ืง ื•ื•ืขืŸ ืื™ืจ ื–ืขืŸ ื“ืขื ืงืึธื“, ื“ื•ืจืš ืึทื“ื™ื ื’ ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืžืขืจืงื•ื ื’ ืึธื“ืขืจ ืื™ืŸ ื“ื™ ืœื™ื˜ืขืจืึทืœ ืื•ืชื™ื•ืช ื’ืขื•ื•ื™ื–ืŸ ืคึฟื•ืŸ ืจืขื›ื˜ ืฆื• ืœื™ื ืงืก, ื•ื•ืึธืก ื•ื•ืขื˜ ืคื™ืจืŸ ืฆื• ื’ืึธืจ. ืคืึทืจืฉื™ื“ืขื ืข ืื•ืชื™ื•ืช ื–ืขื ืขืŸ ืกื•ืคึผืขืจืึทืžืคึผืึธื•ื–ื“ ืื•ื™ืฃ ื“ื™ ื‘ื™ื™ื–ืข ื™ื ืกืขืจืฉืึทืŸ. ืึทื–ืึท ืงืึธื“ ื•ื•ืขื˜ ื‘ืœื™ื™ึทื‘ืŸ ืกืขืžืึทื ื˜ื™ืงืึทืœืœื™ ืจื™ื›ื˜ื™ืง, ืึธื‘ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ื ื˜ืขืจืคึผืจืึทื˜ืึทื“ ืื•ืŸ ื’ืขื•ื•ื™ื–ืŸ ื“ื™ืคืขืจืขื ื˜ืœื™.

ื˜ืจืึธื“ื–ืฉืึทืŸ ืžืงื•ืจ ื‘ืึทืคืึทืœืŸ ืฆื• ื‘ืึทืงืขื ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ื™ ืงืึธื“ ื•ื•ืึธืก ื–ืขื ืขืŸ ื•ืžื–ืขื™ืง ืฆื• ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ

ื‘ืฉืขืช ืจื™ื•ื•ื™ื•ื™ื ื’ ืงืึธื“, ืึท ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงืึธื ืคืจืึธื ื˜ืขื“ ืžื™ื˜ ื“ื™ ื•ื•ื™ื–ืฉืึทื•ื•ืึทืœ ืกื“ืจ ืคื•ืŸ ื“ื™ ืื•ืชื™ื•ืช ืื•ืŸ ื•ื•ืขื˜ ื–ืขืŸ ืึท ื ื™ื˜-ืกืึทืกืคึผื™ืฉืึทืก ื‘ืึทืžืขืจืงื•ื ื’ ืื™ืŸ ืึท ืžืึธื“ืขืจืŸ ื˜ืขืงืกื˜ ืจืขื“ืึทืงื˜ืึธืจ, ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“ ืึธื“ืขืจ IDE, ืึธื‘ืขืจ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ ืื•ืŸ ื™ื‘ืขืจื–ืขืฆืขืจ ื•ื•ืขื˜ ื ื•ืฆืŸ ื“ื™ ืœืึทื“ื–ืฉื™ืงืึทืœ ืกื“ืจ ืคื•ืŸ ื“ื™ ืื•ืชื™ื•ืช ืื•ืŸ ื•ื•ืขื˜ ืคึผืจืึธืฆืขืก ื“ื™ ื‘ื™ื™ื–ืข ื™ื ืกืขืจืฉืึทืŸ ื•ื•ื™ ืื™ื–, ืึธืŸ ืคึผื™ื™ื™ื ื’ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• ื“ื™ ื‘ื™ื™ื“ื™ืจืขืงื˜ื™ืึธื ืึทืœ ื˜ืขืงืกื˜ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ. ื“ื™ ืคึผืจืึธื‘ืœืขื ืึทืคืขืงืฅ ืคืึทืจืฉื™ื“ืŸ ืคืึธืœืงืก ืงืึธื“ ืจืขื“ืืงืฆื™ืข (VS Code, Emacs, Atom), ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื™ื ื˜ืขืจืคื™ื™ืกื™ื– ืคึฟืึทืจ ื•ื•ื™ื•ื™ื ื’ ืงืึธื“ ืื™ืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– (GitHub, Gitlab, BitBucket ืื•ืŸ ืึทืœืข Atlassian ืคึผืจืึธื“ื•ืงื˜ืŸ).

ื˜ืจืึธื“ื–ืฉืึทืŸ ืžืงื•ืจ ื‘ืึทืคืึทืœืŸ ืฆื• ื‘ืึทืงืขื ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ื™ ืงืึธื“ ื•ื•ืึธืก ื–ืขื ืขืŸ ื•ืžื–ืขื™ืง ืฆื• ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ

ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’ืŸ ืฆื• ื ื•ืฆืŸ ื“ืขื ืื•ืคึฟืŸ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื‘ื™ื™ื–ืข ืึทืงืฉืึทื ื–: ืึทื“ื™ื ื’ ืึท ืคืึทืจื‘ืึธืจื’ืŸ "ืฆื•ืจื™ืงืงื•ืžืขืŸ" ืื•ื™ืกื“ืจื•ืง, ื•ื•ืึธืก ืคื™ืจื˜ ืฆื• ื“ื™ ืงืึทืžืคึผืœื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืคื•ื ืงืฆื™ืข ืคืึธืจื•ื™ืก ืคื•ืŸ ืฆื™ื™ึทื˜; ืงืึทืžืขื ื˜ื™ื ื’ ืื•ื™ืก ืื•ื™ืกื“ืจื•ืงืŸ ื•ื•ืึธืก ื•ื•ืึธืœื˜ ื ืึธืจืžืึทืœื™ ื–ื™ื™ืŸ ืงืขื ื˜ื™ืง ื•ื•ื™ ื’ื™ืœื˜ื™ืง ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– (ืœืžืฉืœ, ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ ื•ื•ื™ื›ื˜ื™ืง ื˜ืฉืขืงืก); ืึทืกื™ื™ื ื™ื ื’ ืื ื“ืขืจืข ืฉื˜ืจื™ืงืœ ื•ื•ืึทืœื•ืขืก ื•ื•ืึธืก ืคื™ืจืŸ ืฆื• ืฉื˜ืจื™ืงืœ ื•ื•ืึทืœืึทื“ื™ื™ืฉืึทืŸ ืคื™ื™ืœื™ืขืจื–.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึท ืึทื˜ืึทืงืขืจ ืงืขืŸ ืคืึธืจืฉืœืึธื’ืŸ ืึท ืขื ื“ืขืจื•ื ื’ ื•ื•ืึธืก ื›ื•ืœืœ ื“ื™ ืฉื•ืจื”: ืื•ื™ื‘ ืึทืงืกืขืก_ืœืขื•ื•ืขืœ != "ื‘ืึทื ื™ืฆืขืจ{U+202E} {U+2066}// ืงื•ืง ืื•ื™ื‘ ืึทื“ืžื™ืŸ{U+2069} {U+2066}" {

ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ื“ื™ ืึธืคึผืฉืึทืฆื•ื ื’ ืฆื•ื‘ื™ื ื“ ื•ื•ื™ ืื•ื™ื‘ ืึทืงืกืขืก_ืœืขื•ื•ืขืœ != "ื‘ืึทื ื™ืฆืขืจ" { // ืงื•ืง ืื•ื™ื‘ ืึทื“ืžื™ืŸ

ืื™ืŸ ื“ืขืจืฆื•, ืืŸ ืื ื“ืขืจ ื‘ืึทืคืึทืœืŸ ื•ื•ืึทืจื™ืึทื ื˜ ืื™ื– ืคืืจื’ืขืœื™ื™ื’ื˜ (CVE-2021-42694), ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื”ืึธืžืึธื’ืœื™ืคืก, ืื•ืชื™ื•ืช ื•ื•ืึธืก ื–ืขื ืขืŸ ืขื ืœืขืš ืื™ืŸ ืื•ื™ืกื–ืขืŸ, ืึธื‘ืขืจ ืึทื ื“ืขืจืฉ ืื™ืŸ ื˜ื™ื™ึทื˜ืฉ ืื•ืŸ ื”ืึธื‘ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืื•ื ื™ืงืึธื“ ืงืึธื•ื“ื– (ืœืžืฉืœ, ื“ืขืจ ื›ืึทืจืึทืงื˜ืขืจ "ษ‘" ืจื™ื–ืขืžื‘ืึทืœื– " ืึท, "ษก" - "ื’", "ษฉ" - "ืœ"). ืขื ืœืขื›ืข ืื•ืชื™ื•ืช ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ืขื˜ืœืขื›ืข ืฉืคึผืจืึทื›ืŸ ืื™ืŸ ื“ื™ ื ืขืžืขืŸ ืคื•ืŸ ืคืึทื ื’ืงืฉืึทื ื– ืื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืฆื• ืคืึทืจืคื™ืจืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฆื•ื•ื™ื™ ืคืึทื ื’ืงืฉืึทื ื– ืžื™ื˜ ื™ื ื“ื™ืกื˜ื™ื ื’ื’ื•ื•ื™ืฉืึทื‘ืึทืœ ื ืขืžืขืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ืคื™ื™ื ื“ ื•ื•ืึธืก ื“ื•ืจื›ืคื™ืจืŸ ืคืึทืจืฉื™ื“ืขื ืข ืึทืงืฉืึทื ื–. ืึธืŸ ืึท ื“ื™ื˜ื™ื™ืœื“ ืึทื ืึทืœื™ืกื™ืก, ืขืก ืื™ื– ื ื™ืฉื˜ ืžื™ื“ ืงืœืึธืจ ื•ื•ืึธืก ืคื•ืŸ ื“ื™ ืฆื•ื•ื™ื™ ืคืึทื ื’ืงืฉืึทื ื– ืื™ื– ื’ืขืจื•ืคืŸ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืึธืจื˜.

ื˜ืจืึธื“ื–ืฉืึทืŸ ืžืงื•ืจ ื‘ืึทืคืึทืœืŸ ืฆื• ื‘ืึทืงืขื ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ื™ ืงืึธื“ ื•ื•ืึธืก ื–ืขื ืขืŸ ื•ืžื–ืขื™ืง ืฆื• ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ

ื•ื•ื™ ืึท ื–ื™ื›ืขืจื”ื™ื™ื˜ ืžืึธืก, ืขืก ืื™ื– ืจืขืงืึทืžืขื ื“ื™ื“ ืึทื– ืงืึธืžืคึผื™ืœืขืจืก, ื™ื ื˜ืขืจืคึผืจืึทื˜ืขืจื– ืื•ืŸ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืžื›ืฉื™ืจื™ื ื•ื•ืึธืก ืฉื˜ื™ืฆืŸ ืื•ื ื™ืงืึธื“ ืื•ืชื™ื•ืช ื•ื•ื™ื™ึทื–ืŸ ืึท ื˜ืขื•ืช ืึธื“ืขืจ ื•ื•ืืจืขื ื•ื ื’ ืื•ื™ื‘ ืขืก ื–ืขื ืขืŸ ืึทื ืคึผืขืจื“ ืงืึธื ื˜ืจืึธืœ ืื•ืชื™ื•ืช ืื™ืŸ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ, ืœื™ื˜ืขืจืึทืœ ืœื™ื˜ืขืจืึทืœื– ืึธื“ืขืจ ื™ื“ืขื ื˜ื™ืคื™ืขืจืก ื•ื•ืึธืก ื˜ื•ื™ืฉืŸ ื“ื™ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ืจืขื–ื•ืœื˜ืึทื˜ (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 ืื•ืŸ ื‘ื™ื ื•ื˜ื™ืœืก. GitHub, Bitbucket ืื•ืŸ Jira ืื•ื™ืš ืคืึทืจืคืขืกื˜ื™ืงื˜ ื“ืขื ืึทืจื•ื™ืกื’ืขื‘ืŸ. ื ืคืึทืจืจื™ื›ื˜ืŸ ืคึฟืึทืจ GitLab ืื™ื– ืื™ืŸ ืคึผืจืึธื’ืจืขืก. ืฆื• ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืคึผืจืึธื‘ืœืขืžืึทื˜ื™ืง ืงืึธื“, ืขืก ืื™ื– ืกืึทื’ื“ื–ืฉืขืกื˜ื™ื“ ืฆื• ื ื•ืฆืŸ ื“ื™ ื‘ืึทืคึฟืขืœ: grep -r $'[\u061C\u200E\u200A\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069\uXNUMX/' ืžืงื•ืจ

Addendum 2: Russ Cox, ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคื•ืŸ ื“ื™ Plan 9 OS ืื•ืŸ ื“ื™ Go ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš, ืงืจื™ื˜ื™ืงื™ืจื˜ ื“ื™ ื™ื‘ืขืจื™ืง ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื“ื™ ื“ื™ืกืงืจื™ื™ื‘ื“ ืึทื˜ืึทืง ืžืขื˜ืึธื“, ื•ื•ืึธืก ืื™ื– ืœืึทื ื’ ื‘ืึทื•ื•ื•ืกื˜ (Go, Rust, C ++, Ruby) ืื•ืŸ ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ืžืขืŸ ืขืžืขืก. . ืœื•ื™ื˜ Cox, ื“ื™ ืคึผืจืึธื‘ืœืขื ื“ืขืจ ื”ื•ื™ืคึผื˜ ืงืึทื ืกืขืจื ื– ื“ื™ ืจื™ื›ื˜ื™ืง ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ ืคื•ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ืŸ ืงืึธื“ ืจืขื“ืืงืฆื™ืข ืื•ืŸ ื•ื•ืขื‘ ื™ื ื˜ืขืจืคื™ื™ืกื™ื–, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ื“ื•ืจืš ื ื™ืฆืŸ ื“ื™ ืจื™ื›ื˜ื™ืง ืžื›ืฉื™ืจื™ื ืื•ืŸ ืงืึธื“ ืึทื ืึทืœื™ื–ืขืจื– ื‘ืขืฉืึทืก ืึธืคึผืฉืึทืฆื•ื ื’. ื“ืขืจื™ื‘ืขืจ, ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ืกืคึผืขืงื•ืœืึทื˜ื™ื•ื•ืข ืื ืคืืœืŸ, ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืžืขืจ ืฆื•ื ืขืžืขืŸ ืฆื• ืคืึธืงื•ืก ืื•ื™ืฃ ื™ืžืคึผืจื•ื•ื•ื™ื ื’ ืงืึธื“ ืื•ืŸ ื“ืขืคึผืขื ื“ืขื ืกื™ ืจืขืฆืขื ื–ื™ืข ืคึผืจืึทืกืขืกืึทื–.

Ras Cox ื’ืœื•ื™ื‘ื˜ ืื•ื™ืš ืึทื– ืงืึทืžืคึผื™ื™ืœืขืจื– ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ื™ ืจืขื›ื˜ ืึธืจื˜ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื, ื•ื•ื™ื™ึทืœ ื“ื•ืจืš ืคืึทืจื‘ืึธื˜ ื’ืขืคืขืจืœืขืš ืกื™ืžื‘ืึธืœืก ืื•ื™ืฃ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ ืžื“ืจื’ื”, ืขืก ื‘ืœื™ื™ื‘ื˜ ืึท ืจื™ื–ื™ืง ืคึผืœืึทืกื˜ ืคื•ืŸ ืžื›ืฉื™ืจื™ื ืื™ืŸ ื•ื•ืึธืก ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ ืกื™ืžื‘ืึธืœืก ืื™ื– ืคึผืึทืกื™ืง, ืึทื–ืึท ื•ื•ื™ ื‘ื•ื™ืขืŸ ืกื™ืกื˜ืขืžืขืŸ, ืึทืกืขืžื‘ืึทืœืขืจื–, ืคึผืขืงืœ ืžืึทื ืึทื“ื–ืฉืขืจื– ืื•ืŸ ืคืึทืจืฉื™ื“ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึผืึทืจืกืขืจื– ืื•ืŸ ื“ืึทื˜ืŸ. ื•ื•ื™ ืึท ื‘ื™ื™ืฉืคึผื™ืœ, ื“ื™ ืจื•ืกื˜ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื’ืขื’ืขื‘ืŸ, ื•ื•ืึธืก ืคึผืจืึธื•ื›ื™ื‘ืึทื˜ืึทื“ ื“ื™ ืคึผืจืึทืกืขืกื™ื ื’ ืคื•ืŸ LTR / RTL ืงืึธื“ ืื™ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ, ืึธื‘ืขืจ ื”ืื˜ ื ื™ืฉื˜ ืœื™ื™ื’ืŸ ืึท ืคืึทืจืจื™ื›ื˜ืŸ ืฆื• ื“ื™ ืงืึทืจื’ืึธ ืคึผืขืงืœ ืคืึทืจื•ื•ืึทืœื˜ืขืจ, ื•ื•ืึธืก ืึทืœืึทื•ื– ืึท ืขื ืœืขืš ื‘ืึทืคืึทืœืŸ ื“ื•ืจืš ื“ื™ Cargo.toml ื˜ืขืงืข. ืกื™ืžื™ืœืึทืจืœื™, ื˜ืขืงืขืก ืึทื–ืึท ื•ื•ื™ BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml ืื•ืŸ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ.ื˜ืงืกื˜ ืงืขื ืขืŸ ื•ื•ืขืจืŸ ืงื•ื•ืืœืŸ ืคื•ืŸ ืื ืคืืœืŸ.

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’