После годину дана развоја представљени значајно издање програмског језика питхон КСНУМКС. Питхон 3.9 је био прво издање после прелаз пројекат на нови циклус припрема и подршка издањима. Нова главна издања ће се сада генерисати једном годишње, а исправна ажурирања ће се објављивати свака два месеца. Свака значајна грана ће бити подржана годину и по, након чега ће бити развијене још три и по године да би поправила рањивости.
Радови на новој грани сада почињу пет месеци пре изласка следеће гране, тј. што се поклопило са издавањем Питхон-а 3.9 почео алфа тестирање гране Питхон 3.10. Грана Питхон 3.10 биће у алфа издању седам месеци, током којих ће бити додане нове функције и исправљене грешке. Након тога, бета верзије ће бити тестиране три месеца, током којих ће додавање нових функција бити забрањено и сва пажња ће бити посвећена исправљању грешака. Последња два месеца пре пуштања, грана ће бити у фази кандидата за ослобађање, у којој ће се извршити коначна стабилизација.
У речницима дефинисаним коришћењем уграђене класе дицт, појавио се подршка за операторе спајања "|" и "|=" ажурирања, која допуњују методе {**д1, **д2} и дицт.упдате које су претходно предложене за спајање речника.
Уграђена колекција типова укључује листу, дицт и тупле, који се могу користити као основни типови без увоза из модула за куцање. Оне. уместо куцања.Листа, куцања.Дикт и куцања.Тупле сада можете да наведете
само наведите, дицт и тупле:
деф греет_алл(намена: листа[стр]) -> Ништа:
за име у именима:
принт("Здраво", име)
Су дати флексибилни алати за означавање функција и променљивих. За причвршћивање напомена, нови Аннотирани тип је додат у модул за куцање, проширујући постојеће типове додатним метаподацима који се могу користити за статичку анализу или за оптимизацију времена извршавања. За приступ метаподацима из кода, параметар инцлуде_ектрас је додат методи типинг.гет_типе_хинтс().
Ублажена граматички захтеви за декоратере – сваки израз погодан за употребу у блоковима иф и вхиле сада се може користити као декоратер. Промена је значајно побољшала читљивост ПиКт5 кода и поједноставила одржавање овог модула:
Било је:
button_0 = buttons[0]
@button_0.clicked.connect
Сада можете написати:
@буттонс[0].цлицкед.цоннецт
У стандардну библиотеку додато модул зонеинфо, који укључује информације из ИАНА базе података о временским зонама.
>>> из зонеинфо импорт ЗонеИнфо
>>> из датетиме импорт датетиме, тимеделта
>>> # Летње време
>>> дт = датетиме(2020, 10, 31, 12, тзинфо=ЗонеИнфо("Америка/Лос_Ангелес"))
>>> принт(дт)
2020-10-31 12:00:00-07:00
Додат грапхлиб модул, у којем имплементиран подршка за тополошко сортирање графова.
Предложено нове методе за уклањање префикса и завршетака редова - стр.ремовепрефик(префик) и стр.ремовесуффик(суффик). Методе су додате стр, бајтовима, бајт низовима и цоллецтионс.УсерСтринг објектима.
>>> с = "ФооБар"
>>> с.ремовепрефик("Фоо")
'бар'
Укључено нови парсер пег (Парсинг Екпрессион Граммар), који је заменио парсер ЛЛ(1). Употреба новог парсера је омогућила да се отарасите неких од „хакова“ који су коришћени да се заобиђу ограничења у ЛЛ(1) и значајно смањила трошкове рада за одржавање парсера. У погледу перформанси, нови парсер је приближно на истом нивоу као претходни, али је знатно испред њега у погледу флексибилности, што вам омогућава да се осећате слободније када дизајнирате нове језичке карактеристике. Стари код парсера је за сада задржан и може се вратити помоћу ознаке „-Кс олдпарсер“ или променљиве окружења „ПИТХОНОЛДПАРСЕР=1“, али ће бити уклоњен у издању 3.10.
Под условом могућност Ц метода проширења да приступе стању модула у којем су дефинисани коришћењем директне дереференције показивача уместо тражења стања модула помоћу функције ПиСтате_ФиндМодуле. Промена вам омогућава да повећате перформансе Ц модула тако што ћете смањити или потпуно елиминисати трошкове провере стања модула. За повезивање модула са класом, предложена је Ц-функција ПиТипе_ФромМодулеАндСпец(), да би се добио модул и његово стање, предложене су Ц-функције ПиТипе_ГетМодуле() и ПиТипе_ГетМодулеСтате() и да би се обезбедио метод са приступом класи у коме је дефинисана, предложена је Ц-функција ПиЦМетход и ознака МЕТХ_МЕТХОД.
Ђубретар испоручена од закључавања колекција које садрже реанимиране објекте који остају екстерно доступни након покретања финализатора.
Додати метод ос.пидфд_опен, што омогућава да се подсистем Линук кернела „пидфд“ користи за решавање ситуације поновног коришћења ПИД-а (пидфд је повезан са одређеним процесом и не мења се, док се ПИД може повезати са другим процесом након што се тренутни процес повезан са тим ПИД-ом оконча ).
Подршка за Уницоде спецификацију је ажурирана на верзију 13.0.0.
Елиминисано цурење меморије приликом поновног покретања Питхон интерпретера у истом процесу.
Оптимизоване су перформансе уграђених типова ранге, тупле, сет, фрозенсет, лист и дицт. имплементиран кроз употребу протокола пречице Вецторцалл за бржи приступ објектима написаним у језику Ц.
Стандардни библиотечки модули аудиооп, аст, грп, _хасхлиб, пвд, _посиксубпроцесс, рандом, селецт, струцт, термиос и злиб су конвертовани да користе ограничено стабилан АБИ, који решава проблем оперативности склопова модула проширења за различите верзије Питхон-а (приликом ажурирања верзије, нема потребе за реконструисањем модула проширења, а модули компајлирани за 3.9 ће моћи да раде у грани 3.10).
Асинцио модул је застарео подршку за параметар реусе_аддресс због потенцијалних безбедносних проблема (коришћење СО_РЕУСЕАДДР за УДП на Линук-у омогућава различитим процесима да прикључе прислушне утичнице на УДП порт).
Додате су нове оптимизације, на пример, побољшане перформансе руковалаца сигналима у вишенитним апликацијама, повећана брзина модула подпроцеса у ФрееБСД окружењу и брже додељивање привремених променљивих (додељивање променљиве у изразу „за и у [екпр ]” је сада једнако ефикасан као израз „и = екпр” "). Генерално, већина тестова схов смањење перформанси у поређењу са граном 3.8 (убрзање се примећује само у тестовима врите_лоцал и врите_декуе):
Уклоњено многе функције и методе Питхон 2.7 које су претходно застареле и резултирале су ДепрецатионВарнинг у претходном издању, укључујући методу унесцапе() у хтмл.парсер.ХТМЛПарсер,
тостринг() и фромстринг() у арраи.арраи, исАливе() у тхреадинг.Тхреад, гетцхилдрен() и гетитератор() у ЕлементТрее, сис.гетцхецкинтервал(), сис.сетцхецкинтервал(), асинцио.Таск.цуррент_таск(), асинцио.Таск.алл_таскс(), басе64.енцодестринг() и басе64.децодестринг().