Издање програмског језика Питхон 3.11

После годину дана развоја, објављено је значајно издање програмског језика Питхон 3.11. Нова грана ће бити подржана годину и по, након чега ће се још три и по године генерисати поправке за њу како би се отклониле рањивости.

Истовремено је почело алфа тестирање гране Питхон 3.12 (у складу са новим распоредом развоја, рад на новој грани почиње пет месеци пре пуштања претходне гране и достиже фазу алфа тестирања до тренутка следећег издања ). Грана Питхон 3.12 ће бити у алфа издању седам месеци, током којих ће бити додане нове функције и исправљене грешке. Након тога, бета верзије ће бити тестиране три месеца, током којих ће додавање нових функција бити забрањено и сва пажња ће бити посвећена исправљању грешака. Последња два месеца пре пуштања на слободу, грана ће бити у фази кандидата за ослобађање, у којој ће бити извршена коначна стабилизација.

Нови додаци за Питхон 3.11 укључују:

  • Урађен је значајан посао на оптимизацији перформанси. Нова грана укључује промене везане за убрзање и инлине имплементацију позива функција, коришћење брзих интерпретатора стандардних операција (к+к, к*к, к-к, а[и], а[и] = з, ф(арг) Ц( арг), о.метход(), о.аттр = з, *сек), као и оптимизације које су припремили пројекти Циндер и ХотПи. У зависности од врсте оптерећења, долази до повећања брзине извршавања кода од 10-60%. У просеку, перформансе на пиперформанце тест пакету су порасле за 25%.

    Механизам за кеширање бајткода је редизајниран, што је смањило време покретања тумача за 10-15%. Објекти са кодом и бајт кодом сада се статички додељују од стране интерпретатора, што је омогућило да се елиминишу фазе демаршалирања бајткода екстрахованог из кеша и конвертовања објеката са кодом који се смештају у динамичку меморију.

  • Приликом приказивања трагова позива у дијагностичким порукама, сада је могуће приказати информацију о изразу који је изазвао грешку (раније је била истакнута само линија без детаља који део линије је изазвао грешку). Проширене информације о праћењу се такође могу добити преко АПИ-ја и користити за мапирање појединачних инструкција бајт кода на одређену позицију у изворном коду помоћу методе цодеобјецт.цо_поситионс() или Ц АПИ функције ПиЦоде_Аддр2Лоцатион(). Ова промена знатно олакшава отклањање грешака са угнежђеним објектима речника, вишеструким позивима функција и сложеним аритметичким изразима. Трацебацк (последњи позив): Фајл "цалцулатион.пи", ред 54, у резултату = (к / и / з) * (а / б / ц) ~~~~~~^~~ ЗероДивисионЕррор: дељење нулом
  • Додата подршка за групе изузетака, дајући програму могућност да генерише и обрађује неколико различитих изузетака одједном. За груписање више изузетака и њихово подизање заједно, предложени су нови типови изузетака ЕкцептионГроуп и БасеЕкцептионГроуп, а израз „екцепт*“ је додат да би се истакли појединачни изузеци из групе.
  • Метода адд_ноте() додата је класи БасеЕкцептион, омогућавајући вам да додате текстуалну белешку изузетку, на пример, додавањем контекстуалних информација које нису доступне када се избаци изузетак.
  • Додан је посебан тип Селф који представља тренутну приватну класу. Селф се може користити за означавање метода које враћају инстанцу своје класе на једноставнији начин него коришћење ТипеВар. цласс МиЛоцк: деф __ентер__(селф) -> Селф: селф.лоцк() ретурн селф
  • Додан је посебан тип ЛитералСтринг који може укључивати само стрингове литерале који су компатибилни са типом ЛитералСтринг (тј. голе и ЛитералСтринг стрингове, али не и произвољне или комбиноване стрингове). Тип ЛитералСтринг се може користити за ограничавање прослеђивања стринг аргумената функцијама, произвољне замене делова стрингова у којима може да доведе до рањивости, на пример, приликом генерисања стрингова за СКЛ упите или команде љуске. деф рун_куери(скл: ЛитералСтринг) -> ... ... деф цаллер( арбитрари_стринг: стр, куери_стринг: ЛитералСтринг, табле_наме: ЛитералСтринг, ) -> Ништа: рун_куери("СЕЛЕЦТ * ФРОМ студентс") # ок рун_куери(литерал_стринг) # ок рун_куери( "СЕЛЕЦТ * ФРОМ" + литерал_стринг) # ок рун_куери(арбитрари_стринг) # Грешка рун_куери( # Грешка ф"СЕЛЕЦТ * ФРОМ студент ВХЕРЕ наме = {арбитрари_стринг}" )
  • Додан је тип ТипеВарТупле, који омогућава употребу варијабилних генерика, за разлику од ТипеВар, који покривају не један тип, већ произвољан број типова.
  • Стандардна библиотека укључује модул томллиб са функцијама за рашчлањивање формата ТОМЛ.
  • Могуће је означити појединачне елементе откуцаних речника (ТипедДицт) ознакама Рекуиред и НотРекуиред да бисте одредили обавезна и опциона поља (подразумевано, сва декларисана поља су обавезна ако параметар тотал није подешен на Фалсе). цласс Мовие(ТипедДицт): наслов: стр година: НотРекуиред[инт] м1: Филм = {"титле": "Црни Пантер", "година": 2018} # ОК м2: Филм = {"титле": "Ратови звезда" } # ОК (поље година је опционо) м3: Филм = {“година”: 2022} # Грешка, обавезно поље за наслов није попуњено)
  • Класа ТаскГроуп је додата асинцио модулу са имплементацијом асинхроног менаџера контекста који чека да се група задатака заврши. Додавање задатака у групу врши се помоћу методе цреате_таск(). асинц деф маин(): асинц са асинцио.ТаскГроуп() као тг: таск1 = тг.цреате_таск(соме_цоро(...)) таск2 = тг.цреате_таск(анотхер_цоро(...)) принт("Оба задатка су сада завршена .")
  • Додан декоратор @датацласс_трансформ за класе, методе и функције, када је специфициран, систем за проверу статичког типа третира објекат као да користи декоратор @датацласс.датацласс. У примеру испод, класа ЦустомерМодел, приликом провере типова, биће обрађена слично класи са декоратором @датацлассес.датацласс, тј. као да има __инит__ метод који прихвата променљиве ид и наме. @датацласс_трансформ() класа МоделБасе: ... класа ЦустомерМодел(МоделБасе): ид: инт име: стр
  • У регуларним изразима додата је могућност коришћења атомског груписања ((?>...)) и посесивних квантификатора (*+, ++, ?+, {м,н}+).
  • Додата је опција командне линије „-П“ и променљива окружења ПИТХОНСАФЕПАТХ да би се онемогућило аутоматско причвршћивање потенцијално небезбедних путања датотека у сис.патх.
  • Услужни програм пи.еке за Виндовс платформу је значајно побољшан како би подржао синтаксу „-В:/” поред синтаксе „-.”.
  • Многи макрои у Ц АПИ-ју се конвертују у регуларне или статичке инлине функције.
  • Уу, цги, пипес, црипт, аифц, цхунк, мсилиб, телнетлиб, аудиооп, нис, сндхдр, имгхдр, ннтплиб, спвд, кдрлиб, цгитб, маилцап, оссаудиодев и сунау модули су застарели и биће уклоњени у П 3.13 издање. Уклоњене функције ПиУницоде_Енцоде*.

Извор: опеннет.ру

Додај коментар