ఒక సంవత్సరం అభివృద్ధి తర్వాత, పైథాన్ 3.12 ప్రోగ్రామింగ్ భాష యొక్క ముఖ్యమైన విడుదల ప్రచురించబడింది. కొత్త బ్రాంచ్కు ఒకటిన్నర సంవత్సరాలు మద్దతు ఇవ్వబడుతుంది, ఆ తర్వాత మరో మూడున్నరేళ్ల పాటు, బలహీనతలను తొలగించడానికి పరిష్కారాలు రూపొందించబడతాయి.
గ్లోబల్ ఇంటర్ప్రెటర్ లాక్ (GIL) లేని CPython బిల్డ్ మోడ్ను పరిచయం చేసే పైథాన్ 3.13 యొక్క ఆల్ఫా టెస్టింగ్ ఏకకాలంలో ప్రారంభమైంది. పైథాన్ 3.13 ఏడు నెలల పాటు ఆల్ఫా విడుదల మోడ్లో ఉంటుంది, ఈ సమయంలో కొత్త ఫీచర్లు జోడించబడతాయి మరియు బగ్ పరిష్కారాలు అమలు చేయబడతాయి (కొత్త అభివృద్ధి షెడ్యూల్ ప్రకారం, మునుపటి బ్రాంచ్ విడుదలకు ఐదు నెలల ముందు కొత్త బ్రాంచ్పై పని ప్రారంభమవుతుంది మరియు తదుపరి విడుదల సమయానికి ఆల్ఫా టెస్టింగ్కు చేరుకుంటుంది). దీని తరువాత, మూడు నెలల పాటు బీటా టెస్టింగ్ కొనసాగుతుంది, ఈ సమయంలో కొత్త ఫీచర్లు ఏవీ జోడించబడవు మరియు మొత్తం దృష్టి బగ్ పరిష్కారాలపైనే కేంద్రీకరించబడుతుంది. విడుదలకు ముందు చివరి రెండు నెలలు విడుదల అభ్యర్థి దశలో ఉంటాయి, ఈ సమయంలో తుది స్థిరీకరణ నిర్వహించబడుతుంది.
పైథాన్ 3.12కి కొత్త చేర్పులు:
- f-స్ట్రింగ్ల ('f' ప్రిఫిక్స్తో ఫార్మాట్ చేయబడిన లిటరల్స్) పార్సింగ్ మెరుగుపరచబడింది, దీనివల్ల అనేక పరిమితులు తొలగించబడ్డాయి. ఉదాహరణకు, బహుళ-పంక్తుల ఎక్స్ప్రెషన్లు, కామెంట్లు, బ్యాక్స్లాష్లు మరియు యూనికోడ్ ఎస్కేప్ సీక్వెన్స్లతో సహా, ఏదైనా చెల్లుబాటు అయ్యే పైథాన్ ఎక్స్ప్రెషన్ను ఇప్పుడు f-స్ట్రింగ్లలో పేర్కొనవచ్చు. అంతేకాకుండా, f-స్ట్రింగ్లో ఉపయోగించిన అవే కోట్లను ఇప్పుడు లోపలి స్ట్రింగ్లో తిరిగి ఉపయోగించుకోవచ్చు (అంటే, డబుల్ కోట్లను సింగిల్ కోట్లకు మార్చకుండానే f-స్ట్రింగ్లో తిరిగి ఉపయోగించుకోవచ్చు). f-స్ట్రింగ్ల కోసం ఎర్రర్ మెసేజ్లు మెరుగుపరచబడ్డాయి, ఇప్పుడు అవి స్ట్రింగ్లో ఎర్రర్కు కారణమైన కచ్చితమైన స్థానాన్ని సూచిస్తాయి.
ఉదాహరణకు, పైథాన్ 3.12లో కింది నిర్మాణాలు అనుమతించబడ్డాయి: print(f"ఇది ప్లేలిస్ట్: {"\n".join(songs)}") print(f"ఇది ప్లేలిస్ట్: {"\N{బ్లాక్ హార్ట్ సూట్}".join(songs)}") print(f"ఇది ప్లేలిస్ట్: {", ".join([ … 'టేక్ మి బ్యాక్ టు ఈడెన్', # అబ్బా, ఆ కళ్ళు నిప్పులా ఉన్నాయి … 'ఆల్కలైన్', # యాసిడ్ కాదు, ఆల్కలైన్ కాదు … 'అసెన్షనిజం' # చివరికి విరిగిన ఆకాశాలకు తీసుకెళ్ళు … ])}")
- మల్టీ-కోర్ సిస్టమ్లలో వనరుల సామర్థ్యాన్ని మెరుగుపరచడానికి, ఒక ప్రాసెస్లోని వేర్వేరు ఇంటర్ప్రెటర్ల కోసం ఐసోలేటెడ్ సబ్-ఇంటర్ప్రెటర్లు మరియు ప్రత్యేక గ్లోబల్ లాక్ల (GIL, గ్లోబల్ ఇంటర్ప్రెటర్ లాక్)కు మద్దతు అమలు చేయబడింది (CPython ఒకే ప్రాసెస్లో బహుళ ఇంటర్ప్రెటర్లను ఏకకాలంలో అమలు చేయడానికి అనుమతిస్తుంది). ప్రస్తుతం, ఈ ఫీచర్ C API ద్వారా మాత్రమే అందుబాటులో ఉంది (తదుపరి ప్రధాన బ్రాంచ్లో పైథాన్ APIకి మద్దతు జోడించబడుతుంది).
- పైథాన్ కోడ్కు బఫర్ ప్రోటోకాల్ను ఉపయోగించే సామర్థ్యం జోడించబడింది. "__buffer__()" మెథడ్ను అందించే క్లాస్లను ఇప్పుడు మెమరీలోని బైనరీ డేటాను నేరుగా యాక్సెస్ చేసే టైప్లుగా ఉపయోగించవచ్చు.
- sys.monitoring మాడ్యూల్ అనేది ఒక డీబగ్గింగ్ మరియు ప్రొఫైలింగ్ మాడ్యూల్, ఇది కాల్స్, ఫంక్షన్ రిటర్న్స్, ఆర్బిట్రరీ కోడ్ ఎగ్జిక్యూషన్, ఎక్సెప్షన్స్ మరియు ట్రాన్సిషన్స్ వంటి CPython ఈవెంట్లను తక్కువ ఓవర్హెడ్తో పర్యవేక్షించడానికి అనుమతిస్తుంది.
- ఇంటర్ప్రెటర్ కెర్నల్ సబ్సిస్టమ్కు మద్దతును అమలు చేస్తుంది Linux perf యుటిలిటీతో ప్రొఫైలింగ్ చేసేటప్పుడు పైథాన్ ఫంక్షన్ల పేర్లను నిర్ధారించడానికి perf మిమ్మల్ని అనుమతిస్తుంది (గతంలో, ట్రేస్లలో C ఫంక్షన్ల పేర్లు మాత్రమే నిర్ధారించబడ్డాయి).
- లోప సందేశాలు మరింత సమాచారయుక్తంగా చేయబడ్డాయి, మరియు అక్షరదోషాలను సరిదిద్దడానికి సూచనలు అందించే మినహాయింపుల పరిధి విస్తరించబడింది. ఉదాహరణకు, మరచిపోయిన ప్రామాణిక లైబ్రరీ మాడ్యూళ్లను దిగుమతి చేసుకోవడానికి సిఫార్సులు ఇప్పుడు ప్రదర్శించబడతాయి, పద్ధతులకు "self." ఉపసర్గను జోడించడానికి సూచనలు చూపబడతాయి, "from y import x" కు బదులుగా "import x from y" అనే స్పెల్లింగ్ గుర్తించబడుతుంది, మరియు మరిన్ని. 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 ayz from byz 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%గా అంచనా వేయబడింది.
- బిల్డ్ ప్రాసెస్కు బోల్ట్ బైనరీ ఆప్టిమైజర్ కోసం ప్రయోగాత్మక మద్దతు జోడించబడింది, దీనివల్ల పనితీరు 1-5% వరకు మెరుగుపడుతుంది.
- లిస్ట్ కాంప్రహెన్షన్ల యొక్క ఇన్లైన్ అన్రోలింగ్ అమలు చేయబడింది, ఇది లిస్ట్ కాంప్రహెన్షన్లతో పనిని రెండు రెట్ల వరకు వేగవంతం చేస్తుంది (లిస్ట్ కాంప్రహెన్షన్లను చురుకుగా ఉపయోగించే కోడ్ కోసం, పరీక్షలో మొత్తం పనితీరు 11% పెరిగినట్లు తేలింది).
- యూనికోడ్ ఆబ్జెక్ట్ల పరిమాణం 8-16 బైట్ల మేర తగ్గించబడింది.
- re.sub(), re.subn() మరియు re.Pattern వంటి రెగ్యులర్ ఎక్స్ప్రెషన్లతో చేసే కార్యకలాపాలు వేగవంతం చేయబడ్డాయి.
- కొన్ని ప్రోటోకాల్ల కోసం Isinstance() తనిఖీలు 2 నుండి 20 రెట్లు వేగవంతం చేయబడ్డాయి.
- asyncio ప్యాకేజీ పనితీరు గణనీయంగా మెరుగుపరచబడింది (కొన్ని పరీక్షలలో, 75% వరకు వేగవంతం అయినట్లు గమనించబడింది).
- asyncio.Task క్లాస్ సృష్టించే ప్రక్రియ వేగవంతం చేయబడింది.
- tokenize.tokenize() మరియు tokenize.generate_tokens() ఫంక్షన్లు గణనీయంగా (కొన్ని పరీక్షలలో 64% వరకు) ఉన్నాయి.
- అట్రిబ్యూట్లను లోడ్ చేయడం మరియు 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]
- టైపింగ్ మాడ్యూల్లో ఇప్పుడు కొత్త @override డెకరేటర్ ఉంది. ఈ డెకరేటర్, సబ్క్లాస్లోని ఒక మెథడ్ సూపర్క్లాస్లోని ఒక మెథడ్ లేదా అట్రిబ్యూట్ను ఓవర్రైడ్ చేయడానికి ఉద్దేశించబడిందని టైప్ చెకర్లకు తెలియజేస్తుంది. ఉద్దేశించిన ఓవర్రైడ్ మెథడ్ ఇచ్చిన చర్యను చేయనప్పుడు తలెత్తే లోపాలను పట్టుకోవడానికి ఈ డెకరేటర్ను ఉపయోగించవచ్చు. class Base: def log_status(self) -> None: … class Sub(Base): @override def log_status(self) -> None: # Ok, overrides Base.log_status … @override def done(self) -> None: # The type checker will catch the error …
- భద్రతను మెరుగుపరచడానికి, hashlibలోని SHA1, SHA3, SHA2-384, SHA2-512, మరియు MD5 అల్గారిథమ్ల అంతర్నిర్మిత అమలులను HACL* ప్రాజెక్ట్ నుండి అధికారికంగా ధృవీకరించబడిన వెర్షన్లతో భర్తీ చేశారు (OpenSSL అందుబాటులో లేనప్పుడు మాత్రమే అంతర్నిర్మిత అమలులు ఉపయోగించబడతాయి).
- పైథాన్ స్టాక్ ఓవర్ఫ్లో రక్షణను అమలు చేస్తుంది.
- `pathlib.Path` క్లాస్ సబ్క్లాస్లకు మద్దతును అమలు చేస్తుంది.
- ఓఎస్ మాడ్యూల్ విస్తరించిన ప్లాట్ఫారమ్ మద్దతును కలిగి ఉంది. Windowsఉదాహరణకు, పని చేస్తున్నప్పుడు Windows os.listdrives(), os.listvolumes(), మరియు os.listmounts() పద్ధతులకు మద్దతు జోడించబడింది, మరియు os.stat() మరియు os.lstat() యొక్క ఖచ్చితత్వం మెరుగుపరచబడింది.
- sqlite3 మరియు uuid మాడ్యూల్స్కు కమాండ్ లైన్ ఇంటర్ఫేస్లు జోడించబడ్డాయి ("python -m sqlite3" మరియు "python -m uuid").
- రిఫరెన్స్ కౌంట్ చేయబడని "ఇమ్మోర్టల్" ఆబ్జెక్ట్లకు మద్దతు ఇవ్వడానికి C-API అప్డేట్ చేయబడింది.
- డీబగ్గర్లు, JIT కంపైలర్లు మరియు ఇతర లో-లెవల్ టూల్స్లో ఉపయోగించడం కోసం, అస్థిరమైన C API స్థాయి అనే భావన అమలు చేయబడింది.
- కాలం చెల్లిన ఫీచర్లు తొలగించబడ్డాయి.
- asynchat, asyncore, smtpd, imp, మరియు distutils మాడ్యూల్స్ తొలగించబడ్డాయి (distutils మాడ్యూల్ను setuptools ప్యాకేజీ నుండి ఉపయోగించవచ్చు).
- యూనికోడ్ ఆబ్జెక్ట్ల యొక్క C ఇంప్లిమెంటేషన్ నుండి wstr మరియు wstr_length ప్రాపర్టీలు తొలగించబడ్డాయి.
- unittest మాడ్యూల్లో వాడుకలో లేని పద్ధతులు తొలగించబడ్డాయి.
- locale.format(), io.OpenWrapper సహా వాడుకలో లేని లేదా పని చేయని ఫంక్షన్లు, క్లాస్లు మరియు మెథడ్లు తొలగించబడ్డాయి. SSL.RAND_pseudo_bytes(), ElementTree.Element.copy(), hashlib.pbkdf2_hmac(), gzip.GzipFile, మొదలైనవి.
- వెబ్బ్రౌజర్ మాడ్యూల్ ఇకపై గ్రెయిల్, మొజాయిక్, నెట్స్కేప్, గేలియన్, స్కిప్స్టోన్, ఐస్ఏప్, ఫైర్బర్డ్ మరియు వెర్షన్ 36 వరకు ఉన్న ఫైర్ఫాక్స్ వంటి పాత బ్రౌజర్లకు మద్దతు ఇవ్వదు.
- భవిష్యత్ ఆప్టిమైజేషన్ల సన్నాహంలో భాగంగా, పూర్ణాంకాల అంతర్గత ప్రాతినిధ్యం మార్చబడింది.
మూలం: opennet.ru
