ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° CppCon 2019 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Microsoft ΠΎΠ±ΡΠ²ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ²ΠΎΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘++ (STL, C++ Standard Library), ΠΊΠΎΡΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° Π½Π° MSVC ΠΈ ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Visual Studio. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² Π°ΠΊΡΡΠ°Π»Π½ΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈ C++14 ΠΈ C++17, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π² ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π±ΡΠ΄Π΅ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ C++20, ΡΠ»Π΅Π΄Π²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊ. ΠΠΎΠ΄ΡΡ Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Apache 2.0 Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ΅ΡΠ°Π²Π°ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° runtime-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΡΡΡΠ°Π²Π° Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΡΠ΅ Π²ΠΎΠ΄ΠΈ ΠΊΠ°ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π² GitHub, ΠΏΡΠΈΠ΅ΠΌΠ°ΠΉΠΊΠΈ pull-Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Ρ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π·Π° ΡΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° CLA-ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠ°Π²Π° Π²ΡΡΡ Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈΡ ΠΊΠΎΠ΄). ΠΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π° ΡΠ΅, ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° STL Π² GitHub ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π½Π° Microsoft Π΄Π° ΡΠ»Π΅Π΄ΡΡ Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΠ°, Π΄Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°Ρ Ρ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π° ΠΏΠΎΠΌΠ°Π³Π°Ρ Π² ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡΠ²Π°ΡΡΠ½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΡΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π³ΠΎΡΠΎΠ²ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ ΠΎΡ Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈ Π² Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΠΈΡΠ΅Π½Π·ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° Π΅ ΠΈΠ·Π±ΡΠ°Π½Π° ΡΠ°ΠΊΠ°, ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΊΠΎΠ΄ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° LLVM. STL ΠΈ libc++ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ ΠΏΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° libc++ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠ΅Π½Π΅ΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΎΡ STL (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ charconv) ΠΈΠ»ΠΈ Π΄Π²Π°ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π°Π΅Π΄Π½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ°Π·Π²ΠΈΠ²Π°Ρ Π½ΡΠΊΠ°ΠΊΠ²ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈΡΠ΅ Π² Π»ΠΈΡΠ΅Π½Π·ΠΈΡΡΠ° Apache ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠΌΠ΅Π½ΡΡ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΏΡΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ Ρ STL.
Π‘ΡΠ΅Π΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ»Π½ΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π½Π° ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ (ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°, ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ) ΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Π½Π° Π½ΠΈΠ²ΠΎ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ ΠΈ ABI Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Visual Studio 2015/2017. Π‘ΡΠ΅Π΄ ΠΎΠ±Π»Π°ΡΡΠΈΡΠ΅, Π² ΠΊΠΎΠΈΡΠΎ Microsoft Π½Π΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π΄Π° ΡΠ°Π·Π²ΠΈΠ²Π°, ΡΠ° ΠΏΡΠ΅Π½Π°ΡΡΠ½Π΅ΡΠΎ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
