برنامه نویسی

گزارش هفتگی توسعه Nim من (12/3)

پیش رفتن

کارهای روزمره

بسته می شود #16654; یک مورد آزمایشی اضافه کنید

بسته می شود #20704; یک مورد آزمایشی اضافه کنید

بسته می شود #6231; یک مورد آزمایشی اضافه کنید

بسته می شود #8295; یک مورد آزمایشی اضافه کنید

اسناد sinkinference را که غیرفعال شده است، برطرف می کند.

پیگیری روابط عمومی

متغیرهای نقل قول شده را با انواع typedesc اصلاح می کند.

جهانی های صریح را در ماکروها رفع می کند.

رفع @[] و {} استنتاج را به عنوان بازده در ژنریک تایپ کنید

رفع #21377; رفع @[] و {} استنتاج را به عنوان بازده در ژنریک تایپ کنید.

  proc b[T](v: T): seq[int] =
    let x = 0
    @[]

  doAssert b(0) == @[]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوع @[] ناقص است که از seq[empty] نوع با استفاده از نوع برگشتی ژنریک، می‌توانیم نوع آن را استنباط کنیم. با استفاده از استنتاج نوع از بالا به پایین، نوع مورد انتظار یعنی seq[int]، به عبارت بازگشتی. در نهایت، نوع بازگشت به ماژیک منتقل می شود mArrToSeq، که در آن نوع ناقص را جایگزین می کنیم seq[int].

هنگامی که تشخیص دهنده اختصاص داده می شود، تمام فیلدهای از دست رفته را مقداردهی اولیه کنید

رفع #21023; Segfault هنگام مخلوط کردن seqs، orc، variants و futures.

type
  Result = object
    case o: bool
    of false:
      e: int
    of true:
      v: float
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

var x = Result(o: true) اکنون برابر است با var x = Result(o: true, v: 0.0). را v فیلد به مقدار دهی اولیه می شود 0.0 تا مشکلی برای ARC/ORC ایجاد نکند.

هنگام معرفی vars محلی جدید، بازده را در بخش var تغییر ندهید

رفع #21306; رفع #20485; هنگام معرفی vars محلی جدید، بازده را در بخش var تغییر ندهید.

وقتی نام ماژول برابر است، تماس های مبهم را برطرف می کند

رفع #21496; وقتی نام ماژول برابر است، تماس های مبهم را برطرف می کند.

- a
   - def.nim
- b
   - def.nim
- project.nimble
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را a/def و b/def دارای همان مالک است، یعنی project که نام فایل nimble است. ما نمی توانیم آنها را از طریق صاحبانشان تشخیص دهیم.

if sym.kind == skModule and conflict.kind == skModule and sym.owner == conflict.owner:
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در عوض باید استفاده کنیم sym.position که مخفف یک شاخص منحصر به فرد مربوط به fileIdx ماژول برای نمادهای با a است skModule نوع.

if sym.kind == skModule and conflict.kind == skModule and sym.position == conflict.position:
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مجموعه هفتگی

https://forum.nim-lang.org/t/9908 (2/19)

https://forum.nim-lang.org/t/9940 (2/26)

https://forum.nim-lang.org/t/9970 (3/5)

مشارکت در مشارکت ها

با پیروی از نقشه راه 2023 برای ساختن جامعه، می توانید در فضای ماتریسی که در آن درباره نحوه ایجاد یک جامعه بحث می کنیم، به ما بپیوندید. ما از پیشنهادات و کمک‌های قابل انجام، مانند بهبود گردش کار، پیاده‌سازی نقشه راه، پیشنهاد کارهای قابل انجام، بررسی کد از سوی مشارکت‌کنندگان، قدردانی می‌کنیم. متحد ایستاده ایم. ما با هم کار خواهیم کرد تا جامعه را شکوفا کنیم.

حمایت

با تشکر فراوان از Yepoleb، lenis0012، pietroppeter، Clonkk، mode80، Phil، CxPlanner، shirleyquirk، elcritch، geotre، thinkwelltwd، xrfez، enthus1ast، piertoni، Dnanilem برای حمایت مالی از من در GitHub.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا