انتشار زبان برنامه نویسی Nim 1.4.0

نسخه جدیدی از زبان برنامه نویسی سیستم Nim منتشر شده است که سپتامبر امسال یک سالگی خود را جشن گرفت. اولین نسخه پایدار. این زبان از نظر نحو شبیه پایتون است و از نظر عملکرد تقریباً شبیه C++ است. مطابق با پاسخ به برخی سوالات مهم این زبان به شدت از (به ترتیب مشارکت) وام گرفته شده است: Modula 3، Delphi، Ada، C++، Python، Lisp، Oberon.


به لطف قابلیت کامپایل در C/C++/Objective-C/JS در همه جا کار می کند. پشتیبانی می کند ماکروها, اوه, ژنریک ها, استثنائات, مبادله کد داغ و خیلی بیشتر. مجوز: MIT.

مهم ترین تغییرات:

  • یک زباله جمع‌آور ORC جدید وجود دارد که از الگوریتم ARC استفاده می‌کند، اما در عین حال مراجع دایره‌ای را به روشی خاص مدیریت می‌کند. توسط گزینه -gc:orc فعال می شود. درباره تفاوت های ARC/ORC یک مقاله عالی وجود دارد.

  • حالتی برای تعاریف دقیق تابع اضافه شده است که امکان بررسی اضافی برای تغییرپذیری شی را فراهم می کند. از طریق pragma {.experimental: "strictFuncs".} یا از طریق کلید --experimental:strictFuncs فعال می شود.

  • کلمه کلیدی from اکنون می تواند به عنوان یک عملگر استفاده شود.

  • noalias pragma اضافه شد. برای افزایش کارایی که کلمه کلیدی می تواند ارائه دهد، به کلیدواژه محدود C نگاشت می شود.

  • هشدارهای خاص اکنون می توانند از طریق --warningAsError[X]:on|off به خطا تبدیل شوند.

  • دستور جدید: nim r main.nim [args...] که main.nim را کامپایل و اجرا می کند و شامل --usenimcache می شود تا نتیجه با استفاده از منطق مشابه nim c در $nimcache/main$exeExt ذخیره شود. r برای خلاص شدن از کامپایل مجدد زمانی که منابع تغییر نکرده اند. مثال:

nim r compiler/nim.nim --help # برای اولین بار کامپایل شد
echo 'واردات سیستم عامل; echo getCurrentCompilerExe()' | nim r - # این نیز کار می کند
nim r compiler/nim.nim --fullhelp # بدون کامپایل مجدد
nim r —nimcache:/tmp main # باینری در /tmp/main ذخیره شده است

  • یک اشاره جدید اضافه شد -hint:msgOrigin، که نشان می دهد کامپایلر کجا پیام های خطا/هشدار ایجاد کرده است. این به زمانی کمک می کند که مشخص نباشد پیام از کجا آمده است.

  • پرچم —backend:js|c|cpp|objc (یا -b:js و غیره) برای تغییر باطن اضافه شد.

  • پرچم --usenimcache برای خروجی باینری ها به nimcache اضافه شد.

  • کلیدها حذف شدند: --oldNewlines، --laxStrings، --oldast، --oldgensym

  • ابزار nimsuggest اکنون نه تنها پیش اعلامیه، بلکه مکان پیاده‌سازی درخواست def را نیز نشان می‌دهد.

علاوه بر این، تغییرات زیادی به کتابخانه استاندارد اضافه شده است و بسیاری از اشکالات رفع شده است.

منبع: linux.org.ru