பைதான் 3.11 நிரலாக்க மொழியின் வெளியீடு

ஒரு வருட வளர்ச்சிக்குப் பிறகு, பைதான் 3.11 நிரலாக்க மொழியின் குறிப்பிடத்தக்க வெளியீடு வெளியிடப்பட்டது. புதிய கிளை ஒன்றரை ஆண்டுகளுக்கு ஆதரிக்கப்படும், அதன் பிறகு இன்னும் மூன்றரை ஆண்டுகளுக்கு, பாதிப்புகளை நீக்குவதற்கான திருத்தங்கள் உருவாக்கப்படும்.

அதே நேரத்தில், பைதான் 3.12 கிளையின் ஆல்பா சோதனை தொடங்கியது (புதிய மேம்பாட்டு அட்டவணையின்படி, புதிய கிளையின் பணிகள் முந்தைய கிளை வெளியிடப்படுவதற்கு ஐந்து மாதங்களுக்கு முன்பே தொடங்கி அடுத்த வெளியீட்டின் நேரத்தில் ஆல்பா சோதனை நிலையை அடைகிறது. ) பைதான் 3.12 கிளை ஏழு மாதங்களுக்கு ஆல்பா வெளியீட்டில் இருக்கும், அதன் போது புதிய அம்சங்கள் சேர்க்கப்பட்டு பிழைகள் சரி செய்யப்படும். இதற்குப் பிறகு, பீட்டா பதிப்புகள் மூன்று மாதங்களுக்கு சோதிக்கப்படும், இதன் போது புதிய அம்சங்களைச் சேர்ப்பது தடைசெய்யப்படும் மற்றும் பிழைகளை சரிசெய்வதில் அனைத்து கவனமும் செலுத்தப்படும். வெளியீட்டிற்கு முன் கடந்த இரண்டு மாதங்களுக்கு, கிளை வெளியீட்டு வேட்பாளர் கட்டத்தில் இருக்கும், அதில் இறுதி நிலைப்படுத்தல் செய்யப்படும்.

பைதான் 3.11 க்கு புதிய சேர்த்தல்கள் பின்வருமாறு:

  • செயல்திறனை மேம்படுத்துவதற்கு குறிப்பிடத்தக்க வேலை செய்யப்பட்டுள்ளது. புதிய கிளையில் செயல்பாடு அழைப்புகளின் முடுக்கம் மற்றும் இன்லைன் வரிசைப்படுத்தல் தொடர்பான மாற்றங்கள், நிலையான செயல்பாடுகளின் வேகமான மொழிபெயர்ப்பாளர்களின் பயன்பாடு (x+x, x*x, xx, a[i], a[i] = z, f(arg) C(arg), o.method(), o.attr = z, *seq), அத்துடன் Cinder மற்றும் HotPy திட்டங்களால் தயாரிக்கப்பட்ட மேம்படுத்தல்கள். சுமை வகையைப் பொறுத்து, குறியீடு செயல்படுத்தும் வேகத்தில் 10-60% அதிகரிப்பு உள்ளது. சராசரியாக, pyperformance test தொகுப்பின் செயல்திறன் 25% அதிகரித்துள்ளது.

    பைட்கோட் கேச்சிங் மெக்கானிசம் மறுவடிவமைப்பு செய்யப்பட்டுள்ளது, இது மொழிபெயர்ப்பாளர் தொடக்க நேரத்தை 10-15% குறைத்துள்ளது. குறியீடு மற்றும் பைட்கோடு கொண்ட பொருள்கள் இப்போது மொழிபெயர்ப்பாளரால் நிலையான முறையில் ஒதுக்கப்படுகின்றன, இது தற்காலிக சேமிப்பிலிருந்து பிரித்தெடுக்கப்பட்ட பைட்கோடை அன்மார்ஷல் செய்யும் நிலைகளை அகற்றுவது மற்றும் டைனமிக் நினைவகத்தில் வைக்கப்படும் குறியீட்டுடன் பொருள்களை மாற்றுவது ஆகியவற்றை சாத்தியமாக்கியது.

  • கண்டறியும் செய்திகளில் அழைப்பு தடயங்களைக் காண்பிக்கும் போது, ​​இப்போது பிழையை ஏற்படுத்திய வெளிப்பாடு பற்றிய தகவலைக் காண்பிக்க முடியும் (முன்பு, வரியின் எந்தப் பகுதி பிழையை ஏற்படுத்தியது என்பதை விவரிக்காமல் வரி மட்டுமே முன்னிலைப்படுத்தப்பட்டது). விரிவாக்கப்பட்ட சுவடு தகவல் API மூலமாகவும் பெறப்படலாம் மற்றும் codeobject.co_positions() முறை அல்லது C API செயல்பாடு PyCode_Addr2Location() ஐப் பயன்படுத்தி மூலக் குறியீட்டில் ஒரு குறிப்பிட்ட நிலைக்கு தனிப்பட்ட பைட்கோடு வழிமுறைகளை வரைபடமாக்கப் பயன்படுத்தலாம். உள்ளமை அகராதி பொருள்கள், பல செயல்பாட்டு அழைப்புகள் மற்றும் சிக்கலான எண்கணித வெளிப்பாடுகள் ஆகியவற்றில் உள்ள சிக்கல்களை பிழைத்திருத்தத்தை இந்த மாற்றம் மிகவும் எளிதாக்குகிறது. ட்ரேஸ்பேக் (மிக சமீபத்திய அழைப்பு): கோப்பு "calculation.py", வரி 54, இதன் விளைவாக = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: பூஜ்ஜியத்தால் வகுத்தல்
  • விதிவிலக்கு குழுக்களுக்கான ஆதரவு சேர்க்கப்பட்டது, ஒரே நேரத்தில் பல்வேறு விதிவிலக்குகளை உருவாக்கி செயலாக்கும் திறனை நிரலுக்கு வழங்குகிறது. பல விதிவிலக்குகளை குழுவாக்க மற்றும் அவற்றை ஒன்றாக உயர்த்த, புதிய விதிவிலக்கு வகைகள் ExceptionGroup மற்றும் BaseExceptionGroup முன்மொழியப்பட்டுள்ளன, மேலும் ஒரு குழுவிலிருந்து தனிப்பட்ட விதிவிலக்குகளை முன்னிலைப்படுத்த "தவிர*" வெளிப்பாடு சேர்க்கப்பட்டுள்ளது.
  • add_note() முறை BaseException வகுப்பில் சேர்க்கப்பட்டுள்ளது, இது விதிவிலக்குடன் உரை குறிப்பை இணைக்க உங்களை அனுமதிக்கிறது, எடுத்துக்காட்டாக, விதிவிலக்கு எறியப்படும் போது கிடைக்காத சூழ்நிலை தகவலைச் சேர்ப்பது.
  • தற்போதைய தனியார் வகுப்பைப் பிரதிநிதித்துவப்படுத்த ஒரு சிறப்பு சுய வகை சேர்க்கப்பட்டது. TypeVar ஐப் பயன்படுத்துவதை விட எளிமையான முறையில் அதன் வகுப்பின் நிகழ்வை வழங்கும் முறைகளை சிறுகுறிப்பு செய்ய Self பயன்படுத்தப்படலாம். class MyLock: def __enter__(self) -> Self: self.lock() return self
  • LiteralString வகைக்கு இணங்கக்கூடிய (அதாவது, வெற்று மற்றும் LiteralString சரங்கள், ஆனால் தன்னிச்சையான அல்லது ஒருங்கிணைந்த strings அல்ல) சரங்களை மட்டுமே உள்ளடக்கக்கூடிய சிறப்பு LiteralString வகை சேர்க்கப்பட்டது. LiteralString வகையானது சரம் வாதங்களை செயல்பாடுகளுக்கு அனுப்புவதை கட்டுப்படுத்தவும், சரங்களின் பகுதிகளை தன்னிச்சையாக மாற்றவும், இதில் பாதிப்புகளுக்கு வழிவகுக்கும், எடுத்துக்காட்டாக, SQL வினவல்கள் அல்லது ஷெல் கட்டளைகளுக்கு சரங்களை உருவாக்கும் போது. def run_query(sql: LiteralString) -> ... ... டெஃப் அழைப்பாளர்( தன்னிச்சையான_ஸ்ட்ரிங்: str, வினவல்_சரம்: LiteralString, table_name: LiteralString, ) -> எதுவுமில்லை: run_query("மாணவர்களிடமிருந்து * தேர்ந்தெடுக்கவும்") # சரி run_query(literal_string) # ok run_query( "SELECT * FROM" + letteral_string) # ok run_query(arbitrary_string) # Error run_query( # Error f"SELECT * FROM மாணவர்களிடமிருந்து பெயர் = {தன்னிச்சையான_string}" )
  • TypeVarTuple வகை சேர்க்கப்பட்டது, இது TypeVar போலல்லாமல் மாறி ஜெனரிக்ஸைப் பயன்படுத்த அனுமதிக்கிறது, இது ஒரு வகை அல்ல, ஆனால் தன்னிச்சையான எண்ணிக்கையிலான வகைகளை உள்ளடக்கியது.
  • நிலையான நூலகத்தில் TOML வடிவமைப்பைப் பாகுபடுத்துவதற்கான செயல்பாடுகளுடன் டோம்லிப் தொகுதி உள்ளது.
  • தேவையான மற்றும் விருப்பமான புலங்களைத் தீர்மானிக்க, தேவையான மற்றும் தேவையற்ற லேபிள்களுடன் தட்டச்சு செய்யப்பட்ட அகராதிகளின் (TypedDict) தனிப்பட்ட கூறுகளைக் குறிக்க முடியும் (இயல்புநிலையாக, மொத்த அளவுரு தவறானதாக அமைக்கப்படாவிட்டால், அனைத்து அறிவிக்கப்பட்ட புலங்களும் தேவைப்படும்). class Movie(TypedDict): தலைப்பு: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # சரி (ஆண்டு புலம் விருப்பமானது) m3: திரைப்படம் = {“ஆண்டு”: 2022} # பிழை, தேவையான தலைப்பு புலம் நிரப்பப்படவில்லை)
  • ஒரு குழு பணிகள் முடிவடையும் வரை காத்திருக்கும் ஒத்திசைவற்ற சூழல் மேலாளரின் செயலாக்கத்துடன் TaskGroup வகுப்பு asyncio தொகுதியில் சேர்க்கப்பட்டது. ஒரு குழுவில் பணிகளைச் சேர்ப்பது create_task() முறையைப் பயன்படுத்தி செய்யப்படுகிறது. async def main(): asyncio.TaskGroup() உடன் tg ஆக ஒத்திசைத்தல்: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(மற்றொரு_coro(...)) பிரிண்ட்("இரண்டு பணிகளும் இப்போது முடிந்தது .")
  • வகுப்புகள், முறைகள் மற்றும் செயல்பாடுகளுக்கு @dataclass_transform அலங்கரிப்பான் சேர்க்கப்பட்டது, குறிப்பிடப்படும் போது, ​​நிலையான வகை சரிபார்ப்பு அமைப்பு @dataclasses.dataclass decorator ஐப் பயன்படுத்துவதைப் போலக் கருதுகிறது. கீழே உள்ள எடுத்துக்காட்டில், CustomerModel வகுப்பு, வகைகளைச் சரிபார்க்கும் போது, ​​@dataclasses.dataclass decorator கொண்ட வகுப்பைப் போலவே செயலாக்கப்படும், அதாவது. ஐடி மற்றும் பெயர் மாறிகளை ஏற்கும் __init__ முறையைக் கொண்டிருப்பது போல. @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int name: str
  • வழக்கமான வெளிப்பாடுகளில், அணுக் குழுவாக்கம் ((?>...)) மற்றும் உடைமை அளவீடுகள் (*+, ++, ?+, {m,n}+) ஆகியவற்றைப் பயன்படுத்தும் திறன் சேர்க்கப்பட்டுள்ளது.
  • sys.pathக்கு பாதுகாப்பற்ற கோப்பு பாதைகளின் தானியங்கி இணைப்பை முடக்க "-P" கட்டளை வரி விருப்பமும் PYTHONSAFEPATH சூழல் மாறியும் சேர்க்கப்பட்டது.
  • விண்டோஸ் இயங்குதளத்திற்கான py.exe பயன்பாடு கணிசமாக மேம்படுத்தப்பட்டுள்ளது, மேலும் “-V:” தொடரியல் ஆதரவைச் சேர்க்கிறது. / " கூடுதலாக "- . "
  • C API இல் உள்ள பல மேக்ரோக்கள் வழக்கமான அல்லது நிலையான இன்லைன் செயல்பாடுகளாக மாற்றப்படுகின்றன.
  • uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev மற்றும் sunau தொகுதிகள் நீக்கப்பட்டு, PY இல் நீக்கப்படும். 3.13 வெளியீடு. PyUnicode_Encode* செயல்பாடுகள் அகற்றப்பட்டன.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்