انتشار زبان برنامه نویسی کریستال 1.2

انتشار زبان برنامه نویسی Crystal 1.2 منتشر شده است که توسعه دهندگان آن در تلاش هستند تا راحتی توسعه در زبان روبی را با عملکرد بالای برنامه کاربردی مشخصه زبان C ترکیب کنند. سینتکس Crystal نزدیک به Ruby است، اما کاملاً با Ruby سازگار نیست، اگرچه برخی از برنامه های Ruby بدون تغییر اجرا می شوند. کد کامپایلر به زبان کریستال نوشته شده و تحت مجوز آپاچی 2.0 توزیع شده است.

این زبان از بررسی نوع ایستا استفاده می کند که بدون نیاز به تعیین صریح انواع متغیرها و آرگومان های متد در کد پیاده سازی شده است. برنامه‌های کریستال در فایل‌های اجرایی کامپایل می‌شوند و ماکروها ارزیابی می‌شوند و کد در زمان کامپایل تولید می‌شوند. در برنامه های Crystal امکان اتصال binding های نوشته شده به زبان C وجود دارد. موازی سازی اجرای کد با استفاده از کلمه کلیدی "spawn" انجام می شود، که به شما امکان می دهد یک کار پس زمینه را به صورت ناهمزمان، بدون مسدود کردن رشته اصلی، در قالب رشته های سبک وزن به نام فیبر اجرا کنید.

کتابخانه استاندارد مجموعه بزرگی از توابع رایج از جمله ابزارهایی برای پردازش CSV، YAML و JSON، مؤلفه‌هایی برای ایجاد سرورهای HTTP و پشتیبانی WebSocket را ارائه می‌کند. در طول فرآیند توسعه، استفاده از دستور "کریستال بازی" راحت است که یک رابط وب (به طور پیش فرض localhost:8080) برای اجرای تعاملی کد در زبان کریستال ایجاد می کند.

تغییرات اصلی:

  • قابلیت تخصیص یک زیر کلاس از یک کلاس عمومی به یک عنصر از یک کلاس والد اضافه شده است. کلاس Foo (T)؛ کلاس پایانی Bar(T) < Foo(T); انتهای x = Foo x = نوار
  • ماکروها اکنون می‌توانند از خط زیر برای نادیده گرفتن یک مقدار در حلقه for استفاده کنند. {% برای _، v، i در {1 => 2، 3 => 4، 5 => 6} %} p {{v + i}} {% end %}
  • روش “file_exists?” به ماکروها اضافه شد. برای بررسی وجود یک فایل
  • کتابخانه استاندارد اکنون از اعداد صحیح 128 بیتی پشتیبانی می کند.
  • اضافه شدن ماژول Indexable::Mutable(T) با اجرای عملیات پیشرفته برای مجموعه هایی مانند BitArray و Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • روش XML::Node#namespace_definition برای استخراج یک فضای نام خاص از XML اضافه شد.
  • متدهای IO#write_utf8 و URI.encode منسوخ شده‌اند و باید با IO#write_string و URI.encode_path جایگزین شوند.
  • پشتیبانی از معماری x32 86 بیتی به سطح دوم منتقل شده است (پکیج های آماده دیگر تولید نمی شوند). انتقال به سطح اول پشتیبانی از معماری ARM64 در حال آماده سازی است.
  • کار برای اطمینان از پشتیبانی کامل از پلتفرم ویندوز ادامه دارد. پشتیبانی از سوکت های ویندوز اضافه شده است.
  • یک بسته جهانی برای macOS اضافه شده است که هم بر روی دستگاه های دارای پردازنده x86 و هم بر روی تجهیزات دارای تراشه Apple M1 کار می کند.

منبع: opennet.ru

اضافه کردن نظر