Bir il yarım inkişafdan sonra əsas proqramlaşdırma dili buraxılışı . Python 3.8 filialı üçün düzəldici yeniləmələr 18 ay ərzində sərbəst buraxılır. Kritik zəifliklər 5-cü ilin oktyabr ayına qədər 2024 il müddətinə düzəldiləcək. 3.8 filialı üçün düzəldici yeniləmələr hər iki aydan bir buraxılacaq, Python 3.8.1-in ilk düzəldici buraxılışı dekabr ayına planlaşdırılır.
Əlavə edilənlər arasında :
- mürəkkəb ifadələr daxilində tapşırıq əməliyyatları. Yeni “:=” operatoru ilə digər ifadələr daxilində dəyər təyin etmə əməliyyatlarını yerinə yetirmək mümkündür, məsələn, şərti ifadələrdə və döngələri təyin edərkən ikiqat funksiya çağırışlarından qaçınmaq üçün:
əgər (n := len(a)) > 10:
...while (blok := f.read(256)) != ":
... - funksiya arqumentlərini təyin etmək üçün yeni sintaksis. Funksiya tərifi zamanı arqumentləri sadalayarkən, indi təyin edilə bilən arqumentlərdən funksiya çağırışı zamanı dəyərlərin sıralanma sırasına əsasən təyin edilə bilən arqumentləri ayırmaq üçün indi "/" işarəsi təyin edə bilərsiniz. istənilən qaydada (dəyişən=dəyər sintaksisi) ). Praktik tərəfdən, yeni funksiya Python-da funksiyalara C-də mövcud funksiyaların davranışını tamamilə təqlid etməyə və həmçinin, məsələn, parametr adının gələcəkdə dəyişdirilməsi planlaşdırılırsa, konkret adlara bağlanmadan qaçmağa imkan verir.
“/” bayrağı əvvəllər əlavə edilmiş “*” bayrağını tamamlayır və yalnız “dəyişən=dəyər” şəklində təyinatın tətbiq oluna biləcəyi dəyişənləri ayırır. Məsələn, "def f(a, b, /, c, d, *, e, f):" funksiyasında "a" və "b" dəyişənləri yalnız dəyərlərin sadalandığı ardıcıllıqla təyin edilə bilər. ,
“e” və “f” dəyişənləri, yalnız “dəyişən=dəyər” təyinatı ilə və “c” və “d” dəyişənləri aşağıdakı yollardan hər hansı biri ilə:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, s=30, d=40, e=50, f=60) - yeni C API
hamıya tam nəzarət etməyə imkan verən Python başlatma parametrlərini konfiqurasiya etmək və qabaqcıl səhvlərin idarə edilməsi vasitələrinin təmin edilməsi. Təklif olunan API Python tərcüməçi funksionallığını digər C proqramlarına yerləşdirməyi asanlaşdırır; - C dilində yazılmış obyektlərə daha sürətli daxil olmaq üçün yeni Vectorcall protokolu. CPython 3.8-də Vectorcall-a giriş hələ də daxili istifadə ilə məhdudlaşır, CPython 3.9-da ictimaiyyət üçün açıq olan API-lər kateqoriyasına keçid planlaşdırılır;
- Python-da tətbiqləri və çərçivələri yerinə yetirilən hərəkətləri yoxlamaq üçün skriptin gedişatı haqqında aşağı səviyyəli məlumatlara çıxışı təmin edən Runtime Audit Hooks-a zənglər (məsələn, modulların idxalını, faylların açılmasını, izdən istifadə edərək, şəbəkə rozetkalarına daxil olmaq, kodu exec, eval və run_mod vasitəsilə işlətmək);
- Modulda obyektlərin seriallaşdırılması və sıradan çıxarılması üçün istifadə edilən Pickle 5 protokolu üçün dəstək. Pickle, yaddaşın surətinin çıxarılması əməliyyatlarının sayını azaltmaqla və verilənlərə xüsusi sıxılma alqoritmlərindən istifadə kimi əlavə optimallaşdırma üsullarını tətbiq etməklə çoxnüvəli və çox qovşaqlı konfiqurasiyalarda Python prosesləri arasında böyük həcmdə məlumat ötürülməsini optimallaşdırmağa imkan verir. Protokolun beşinci versiyası məlumatların əsas turşu axınından ayrıca ötürülə biləcəyi diapazondan kənar ötürmə rejiminin əlavə edilməsi ilə diqqət çəkir.
- Varsayılan olaraq, Turşu protokolunun dördüncü versiyası aktivləşdirilir, bu, əvvəllər defolt olaraq təklif olunan üçüncü versiya ilə müqayisədə daha yüksək performansa və ötürülən məlumatların ölçüsünü azaltmağa imkan verir;
- Modulda Bir neçə yeni xüsusiyyət təqdim olunur:
- Sinif tipli məlumatların açarlarla əlaqəli verilənlər üçün açıq şəkildə göstərildiyi assosiativ massivlər üçün (“TypedDict('Point2D', x=int, y=int, label=str)”).
- Növü , bu, parametri məhdudlaşdırmağa və ya dəyəri əvvəlcədən təyin edilmiş bir neçə dəyərə qaytarmağa imkan verir ("Hərfi ['bağlandı', 'əlaqə kəsildi']").
- Tikinti "Dəyişən və ya yenidən təyin edilə bilməyən dəyişənlərin, funksiyaların, metodların və siniflərin dəyərlərini müəyyən etməyə imkan verir ("pi: Final[float] = 3.1415926536").
- Ayrı bir FS ağacında saxlanılan və kodu olan qovluqlardan ayrılan bayt kodu ilə tərtib edilmiş fayllar üçün keş təyin etmək imkanı əlavə edildi. Bayt kodu ilə faylların saxlanması yolu dəyişən vasitəsilə təyin olunur və ya "-X pycache_prefix" seçimi;
- buraxılışla eyni olan ABI istifadə edən Python-un debug konstruksiyalarını yaratmaq imkanı, bu, SI dilində yazılmış, sabit buraxılışlar üçün tərtib edilmiş genişləndirmələri sazlama qurğularında yükləməyə imkan verir;
- f-sətirləri ("f" ilə prefiksli formatlaşdırılmış literallar) daha asan sazlama üçün ifadəni mətnə çevirməyə imkan verən = operatoruna dəstək verir (məsələn, "f'{expr=}'"). Misal üçün:
››› istifadəçi = 'eric_idle'
››› üzv_beri = tarix (1975, 7, 31)
››› f'{user=} {member_since=}'
"user='eric_idle' member_since=datetime.date(1975, 7, 31)" - İfadə "» blok daxilində istifadə etməyə icazə verilir ;
- Yeni modul əlavə edildi , çoxprosesli konfiqurasiyalarda paylaşılan yaddaş seqmentlərinin istifadəsinə icazə vermək;
- Platformada Windows asyncio tətbiqi bir sinif istifadəsinə keçirildi ;
- LOAD_GLOBAL təlimatının performansı yeni obyekt kodu keşləmə mexanizminin istifadəsi sayəsində təxminən 40% artırıldı.
Mənbə: opennet.ru
