Python 3.11 پروگرامنگ لینگویج کی ریلیز

ایک سال کی ترقی کے بعد، Python 3.11 پروگرامنگ لینگویج کی اہم ریلیز شائع ہوئی ہے۔ نئی برانچ کو ڈیڑھ سال کے لیے سپورٹ کیا جائے گا، جس کے بعد مزید ساڑھے تین سال کے لیے اس کے لیے کمزوریوں کو ختم کرنے کے لیے اصلاحات کی جائیں گی۔

اسی وقت، Python 3.12 برانچ کی الفا ٹیسٹنگ شروع ہو گئی (نئے ڈیولپمنٹ شیڈول کے مطابق، نئی برانچ پر کام پچھلی برانچ کے ریلیز سے پانچ ماہ پہلے شروع ہو جاتا ہے اور اگلی ریلیز کے وقت تک الفا ٹیسٹنگ کے مرحلے تک پہنچ جاتا ہے۔ )۔ Python 3.12 برانچ سات مہینوں کے لیے الفا ریلیز میں رہے گی، اس دوران نئی خصوصیات شامل کی جائیں گی اور کیڑے ٹھیک کیے جائیں گے۔ اس کے بعد بیٹا ورژنز کو تین ماہ تک ٹیسٹ کیا جائے گا، جس کے دوران نئے فیچرز شامل کرنے پر پابندی ہوگی اور تمام تر توجہ بگس کو ٹھیک کرنے پر دی جائے گی۔ رہائی سے پہلے آخری دو مہینوں تک، برانچ ریلیز امیدوار کے مرحلے پر ہوگی، جس پر حتمی استحکام کیا جائے گا۔

Python 3.11 میں نئے اضافے شامل ہیں:

  • کارکردگی کو بہتر بنانے کے لیے اہم کام کیا گیا ہے۔ نئی برانچ میں فنکشن کالز کی ایکسلریشن اور ان لائن تعیناتی، معیاری آپریشنز (x+x, x*x, xx, a[i], a[i] = z, f(arg) کے تیز تر ترجمانوں کے استعمال سے متعلق تبدیلیاں شامل ہیں۔ C(arg), o.method(), o.attr = z, *seq) کے ساتھ ساتھ سنڈر اور HotPy پروجیکٹس کے ذریعے تیار کردہ آپٹمائزیشنز۔ لوڈ کی قسم پر منحصر ہے، کوڈ پر عمل درآمد کی رفتار میں 10-60% اضافہ ہوتا ہے۔ اوسطاً، pyperformance ٹیسٹ سوٹ پر کارکردگی میں 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 استعمال کرنے سے زیادہ آسان طریقے سے واپس کرتے ہیں۔ کلاس MyLock: def __enter__(self) -> Self: self.lock() واپسی خود
  • ایک خاص LiteralString قسم شامل کی گئی جس میں صرف سٹرنگ لٹریلز شامل ہو سکتے ہیں جو LiteralString قسم کے ساتھ مطابقت رکھتے ہیں (یعنی، ننگے اور LiteralString سٹرنگز، لیکن صوابدیدی یا مشترکہ str سٹرنگ نہیں)۔ LiteralString قسم کا استعمال سٹرنگ آرگیومنٹس کو فنکشنز تک محدود کرنے کے لیے استعمال کیا جا سکتا ہے، سٹرنگز کے کچھ حصوں کی صوابدیدی متبادل جس میں کمزوریاں پیدا ہو سکتی ہیں، مثال کے طور پر، جب SQL سوالات یا شیل کمانڈز کے لیے سٹرنگز تیار کرتے ہیں۔ def run_query(sql: LiteralString) -> ... ... def کالر( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> کوئی نہیں: run_query ("طلباء سے منتخب کریں") # ٹھیک ہے رن_کوئیری (لیٹرل_سٹرنگ) # ok run_query ( "SELECT * FROM" + literal_string) # ok run_query(arbitrary_string) # ایرر run_query (# ایرر f"SELECT * طالب علموں سے کہاں کا نام = {arbitrary_string}")
  • TypeVarTuple قسم کو شامل کیا گیا ہے، جس سے TypeVar کے برعکس متغیر جنرک کے استعمال کی اجازت دی گئی ہے، جو کہ ایک قسم کا احاطہ نہیں کرتی، بلکہ اقسام کی ایک من مانی تعداد کا احاطہ کرتی ہے۔
  • معیاری لائبریری میں TOML فارمیٹ کو پارس کرنے کے فنکشنز کے ساتھ tomllib ماڈیول شامل ہے۔
  • مطلوبہ اور اختیاری فیلڈز کا تعین کرنے کے لیے ٹائپ شدہ لغات (TypedDict) کے انفرادی عناصر کو مطلوبہ اور NotRequired لیبل کے ساتھ نشان زد کرنا ممکن ہے (بطور ڈیفالٹ، تمام اعلان کردہ فیلڈز کی ضرورت ہوتی ہے اگر کل پیرامیٹر غلط پر سیٹ نہ ہو)۔ کلاس مووی(ٹائپڈڈکٹ): عنوان: str سال: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # ٹھیک ہے (سال کی فیلڈ اختیاری ہے) m3: فلم = {"سال": 2022} # خرابی، مطلوبہ ٹائٹل فیلڈ نہیں بھری گئی)
  • TaskGroup کلاس کو asyncio ماڈیول میں ایک غیر مطابقت پذیر سیاق و سباق مینیجر کے نفاذ کے ساتھ شامل کیا گیا ہے جو کاموں کے ایک گروپ کے مکمل ہونے کا انتظار کرتا ہے۔ گروپ میں کاموں کو شامل کرنا create_task() طریقہ استعمال کرتے ہوئے کیا جاتا ہے۔ async def main(): async with asyncio.TaskGroup() بطور tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("دونوں کام اب مکمل ہو چکے ہیں) ")
  • کلاسز، طریقوں اور فنکشنز کے لیے @dataclass_transform ڈیکوریٹر کو شامل کیا گیا، جب وضاحت کی گئی ہو، جامد قسم کا چیکنگ سسٹم آبجیکٹ کے ساتھ ایسا برتاؤ کرتا ہے جیسے @dataclasses.dataclass ڈیکوریٹر استعمال کر رہا ہو۔ ذیل کی مثال میں، CustomerModel کلاس، اقسام کی جانچ کرتے وقت، @dataclasses.dataclass ڈیکوریٹر والی کلاس کی طرح کارروائی کی جائے گی، یعنی جیسا کہ ایک __init__ طریقہ ہے جو id اور name متغیر کو قبول کرتا ہے۔ @dataclass_transform() class ModelBase: … class CustomerModel(ModelBase): id: int name: str
  • ریگولر ایکسپریشنز میں، ایٹم گروپنگ (؟>...)) اور possessive quantifiers (*+, ++, ?+, {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 ماڈیولز کو فرسودہ کر دیا گیا ہے اور Phon کو ہٹا دیا جائے گا 3.13 ریلیز۔ PyUnicode_Encode* فنکشنز کو ہٹا دیا گیا۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں