Выпуск языка программирования Python 3.12

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ выпуск языка программирования Python 3.12. Новая Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΡ€Π° Π»Π΅Ρ‚, послС Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ Ρ‚Ρ€ΠΈ с ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ Π³ΠΎΠ΄Π° для Π½Π΅Ρ‘ Π±ΡƒΠ΄ΡƒΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ исправлСния с устранСниСм уязвимостСй.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ Π°Π»ΡŒΡ„Π°-тСстированиС Π²Π΅Ρ‚ΠΊΠΈ Python 3.13, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появился Ρ€Π΅ΠΆΠΈΠΌ сборки CPython Π±Π΅Π· глобальной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (GIL, Global Interpreter Lock). Π’Π΅Ρ‚ΠΊΠ° Python 3.13 Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стадии Π°Π»ΡŒΡ„Π°-выпусков Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ сСми мСсяцСв, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ исправлСниС ошибок (Π² соотвСтствии с Π½ΠΎΠ²Ρ‹ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ начинаСтся Π·Π° ΠΏΡΡ‚ΡŒ мСсяцСв Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° достигаСт стадии Π°Π»ΡŒΡ„Π°-тСстирования). ПослС этого Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Ρ‘Ρ… мСсяцСв Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ тСстированиС Π±Π΅Ρ‚Π°-вСрсий, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΈ всё Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ошибок. ПослСдниС Π΄Π²Π° мСсяца ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стадии ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π° Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ стабилизация.

Π‘Ρ€Π΅Π΄ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² Python 3.12 Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²:

  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€Π° f-строк (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ с прСфиксом ‘f’), позволившая ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. НапримСр, Π²Π½ΡƒΡ‚Ρ€ΠΈ f-строк Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ допустимыС для Python выраТСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ многострочныС выраТСния, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ слэши ΠΈ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для Unicode. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ строкС Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ допускаСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠΈ f-строки (Ρ‚.Π΅. Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π΅ пСрСходя Π½Π° ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅). ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² f-строках, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ указываСтся Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто Π² строкС, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

    НапримСр Π² Python 3.12 Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ конструкции: print(f»This is the playlist: {«\n».join(songs)}») print(f»This is the playlist: {«\N{BLACK HEART SUIT}».join(songs)}») print(f»This is the playlist: {«, «.join([ … ‘Take me back to Eden’, # My, my, those eyes like fire … ‘Alkaline’, # Not acid nor alkaline … ‘Ascensionism’ # Take to the broken skies at last … ])}»)

  • Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности использования рСсурсов многоядСрных систСм Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… субинтСрпрСтаторов ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ (GIL, Global Interpreter Lock) для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ процСсса (CPython позволяСт Π² ΠΎΠ΄Π½ΠΎΠΌ процСссС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сразу нСсколько ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ²). Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΊΠ° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· C-API (Π² Python API ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° появится Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅).
  • Π’ Python-ΠΊΠΎΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° buffer. ΠšΠ»Π°ΡΡΡ‹, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ «__buffer__()», Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΡ‹, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² памяти.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ sys.monitoring для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ профилирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ расходами ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ события Π² CPython, ΠΊΠ°ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Ρ‹ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк ΠΊΠΎΠ΄Π°, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹.
  • Π’ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° подсистСмы ядра Linux perf, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Python-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ perf (Ρ€Π°Π½Π΅Π΅ Π² трассировках ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Π‘ΠΈ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ).
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ спСктр ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ. НапримСр, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выводятся Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρƒ Π·Π°Π±Ρ‹Ρ‚Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ подсказки ΠΏΠΎ добавлСнию прСфикса «self.» Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, опрСдСляСтся написаниС «import x from y» вмСсто «from y import x» ΠΈ Ρ‚.ΠΏ. sys.version_info NameError: name ‘sys’ is not defined. Did you forget to import ‘sys’? somethin = blech NameError: name ‘blech’ is not defined. Did you mean: ‘self.blech’? import a.y.z from b.y.z SyntaxError: Did you mean to use ‘from … import …’ instead? from collections import chainmap ImportError: cannot import name ‘chainmap’ from ‘collections’. Did you mean: ‘ChainMap’?
  • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ΡƒΠΌΠΌΠ°Ρ€Π½Ρ‹ΠΉ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ оцСниваСтся Π² 5%.
    • Π’ процСсс сборки Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° BOLT, ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° 1-5%.
    • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ inline-Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ списковых Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (comprehensions), Π΄ΠΎ Π΄Π²ΡƒΡ… Ρ€Π°Π· ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‰Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ со списковыми Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ (для ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ списковыС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, тСстированиС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° 11%).
    • На 8-16 Π±Π°ΠΉΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ Unicode-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
    • УскорСны ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с рСгулярными выраТСниями re.sub(), re.subn() ΠΈ re.Pattern.
    • ΠžΡ‚ 2 Π΄ΠΎ 20 Ρ€Π°Π· ускорСно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ isinstance() для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².
    • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° asyncio (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тСстах Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ускорСниС Π½Π° 75%).
    • УскорСно созданиС класса asyncio.Task.
    • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тСстах Π½Π° 64%) ускорСны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tokenize.tokenize() ΠΈ tokenize.generate_tokens().
    • УскорСна Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° super().
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ синтаксис аннотирования Ρ‚ΠΈΠΏΠΎΠ² для ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… классов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. def max[T](args: Iterable[T]) -> T: … class list[T]: def __getitem__(self, index: int, /) -> T: … def append(self, element: T) -> None: …
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ способ опрСдСлСния псСвдонимов Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ выраТСния «type» type Point = tuple[float, float] type Point[T] = tuple[T, T]
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ typing Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @override, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ систСмы ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² подклассС ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π² супСрклассС. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для выявлСния ошибок, связанных с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ выполняСт Π΄Π°Π½Π½ΠΎΠ΅ дСйствиС. class Base: def log_status(self) -> None: … class Sub(Base): @override def log_status(self) -> None: # Ok, пСрСопрСдСляСт Base.log_status … @override def done(self) -> None: # БистСма ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² выявит ΠΎΡˆΠΈΠ±ΠΊΡƒ …
  • Π‘ Ρ†Π΅Π»ΡŒΡŽ усилСния бСзопасности встроСнныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² SHA1, SHA3, SHA2-384, SHA2-512 ΠΈ MD5 Π² hashlib Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° HACL* (встроСнныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли отсутствуСт OpenSSL).
  • Π’ Π‘Python Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ пСрСполнСния стСка.
  • Π’ классС pathlib.Path Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° подклассов.
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ os Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Windows. НапримСр, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Windows Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² os.listdrives(), os.listvolumes() ΠΈ os.listmounts(), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ os.stat() ΠΈ os.lstat().
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ sqlite3 ΠΈ uuid Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ интСрфСйсы ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки («python -m sqlite3» ΠΈ «python -m uuid»).
  • Π’ C-API Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° «Π±Π΅ΡΡΠΌΠ΅Ρ€Ρ‚Π½Ρ‹Ρ…» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ примСняСтся подсчёт ссылок.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° концСпция Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ уровня C API, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для использования Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°Ρ…, JIT-компиляторах ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… инструмСнтах.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° чистка ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… возмоТностСй.
    • Π£Π΄Π°Π»Π΅Π½Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ asynchat, asyncore, smtpd, imp ΠΈ distutils (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ distutils ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° setuptools).
    • Из Π‘ΠΈ-Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ unicode-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ свойства wstr ΠΈ wstr_length.
    • Π£Π΄Π°Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ unittest.
    • Π£Π΄Π°Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΈΠ»ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ locale.format(), io.OpenWrapper, ssl.RAND_pseudo_bytes(), ElementTree.Element.copy(), hashlib.pbkdf2_hmac(), gzip.GzipFile ΠΈ Ρ‚.Π΄.
    • Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ webbrowser ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° старых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, Firebird, ΠΈ Firefox Π΄ΠΎ вСрсии 36.
    • Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ внСсСнию Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Ρ†Π΅Π»Ρ‹Ρ… чисСл.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ