نسخه 1.14 زبان برنامه نویسی Go منتشر شد

ارسال شده توسط انتشار زبان برنامه نویسی برو 1.14که توسط گوگل با مشارکت جامعه به عنوان یک راه حل ترکیبی که عملکرد بالای زبان های کامپایل شده را با مزایای زبان های اسکریپت نویسی مانند سهولت در نوشتن کد، سرعت توسعه و محافظت از خطا ترکیب می کند، در حال توسعه است. کد پروژه توزیع شده توسط تحت مجوز BSD

سینتکس Go بر اساس عناصر آشنای زبان C با برخی وام‌گیری‌هایی از زبان پایتون است. زبان کاملاً مختصر است، اما کد به راحتی قابل خواندن و درک است. کد Go در فایل های اجرایی باینری مستقل که به صورت بومی و بدون استفاده از ماشین مجازی اجرا می شوند کامپایل می شود (پروفایل، اشکال زدایی و سایر زیرسیستم های تشخیص مشکل در زمان اجرا به صورت ادغام شده اند. اجزای زمان اجرا) که به شما امکان می دهد عملکردی قابل مقایسه با برنامه های C داشته باشید.

این پروژه در ابتدا با توجه به برنامه نویسی چند رشته ای و عملیات کارآمد بر روی سیستم های چند هسته ای، از جمله ارائه ابزارهای سطح اپراتور برای سازماندهی محاسبات موازی و تعامل بین روش های موازی اجرا شده، توسعه یافته است. این زبان همچنین محافظت داخلی در برابر بلوک های حافظه بیش از حد تخصیص داده شده را فراهم می کند و امکان استفاده از جمع کننده زباله را فراهم می کند.

اصلی نوآوری هامعرفی شده در نسخه Go 1.14:

  • سیستم ماژول جدید در دستور "go" برای استفاده عمومی آماده است، به طور پیش فرض فعال است و به جای GOPATH برای مدیریت وابستگی توصیه می شود. سیستم ماژول جدید دارای پشتیبانی نسخه‌سازی یکپارچه، قابلیت‌های تحویل بسته و بهبود مدیریت وابستگی است. با ماژول‌ها، توسعه‌دهندگان دیگر به کار در یک درخت GOPATH وابسته نیستند، می‌توانند به صراحت وابستگی‌های نسخه‌شده را تعریف کنند و ساخت‌های تکرارپذیر ایجاد کنند.
  • اضافه پشتیبانی از تعبیه رابط ها با مجموعه ای از روش های همپوشانی. روش‌های یک رابط داخلی اکنون می‌توانند همان نام‌ها و امضاهای متدهای موجود در رابط‌های موجود را داشته باشند. روش های اعلام شده صریح مانند قبل منحصر به فرد باقی می مانند.
  • عملکرد عبارت "Defer" بهبود یافته است، و آن را تقریباً به همان سرعت فراخوانی مستقیم یک تابع معوق می کند و امکان اجرای تابع معوق را در کدهای حساس به عملکرد فراهم می کند.
  • پیش‌گیری ناهمزمان از کوروتین‌ها (گوروتین‌ها) ارائه می‌شود - حلقه‌هایی که شامل فراخوانی‌های تابع نیستند، اکنون می‌توانند به طور بالقوه به بن‌بست زمان‌بندی منجر شوند یا شروع جمع‌آوری زباله را به تأخیر بیندازند.
  • کارایی سیستم تخصیص صفحه حافظه بهبود یافته است و اکنون در پیکربندی هایی با مقادیر GOMAXPROCS بزرگ، اختلافات قفل بسیار کمتری وجود دارد. نتیجه کاهش تأخیر و افزایش توان عملیاتی است در حالی که به طور همزمان بلوک های بزرگ حافظه را توزیع می کند.
  • هنگام اجرای تایمرهای داخلی مورد استفاده در زمان، قفل بهینه شده است و تعداد سوئیچ های زمینه کاهش یافته است.
  • در دستور go، پرچم "-mod=vendor" به طور پیش‌فرض فعال می‌شود، اگر دایرکتوری فروشنده در ریشه وجود داشته باشد که برای ارائه وابستگی‌های خارجی مرتبط به یک فروشنده خاص در نظر گرفته شده است. یک پرچم جداگانه "-mod=mod" برای بارگیری ماژول ها از حافظه پنهان ماژول به جای دایرکتوری "فروشنده" اضافه شد. اگر فایل go.mod فقط خواندنی باشد، پرچم "-mod=readonly" به طور پیش‌فرض تنظیم می‌شود اگر دایرکتوری "فروشنده" بالایی وجود نداشته باشد. پرچم "-modfile=file" اضافه شد تا یک فایل جایگزین go.mod به جای فایل موجود در فهرست اصلی ماژول مشخص شود.
  • متغیر محیطی GOINSECURE اضافه شد، هنگام تنظیم، دستور go نیازی به استفاده از HTTPS ندارد و هنگام بارگیری مستقیم ماژول ها از بررسی گواهی رد می شود.
  • کامپایلر پرچم "-d=checkptr" را اضافه کرده است که به طور پیش فرض فعال شده است تا کد مطابقت با قوانین استفاده ایمن از unsafe.Pointer را بررسی کند.
  • بسته جدید در تحویل گنجانده شده است hash/maphash با توابع هش غیر رمزنگاری برای ایجاد جداول هش برای دنباله ها یا رشته های بایت دلخواه.
  • پشتیبانی آزمایشی برای پلتفرم 64 بیتی RISC-V در لینوکس اضافه شد.
  • اضافه شدن پشتیبانی از FreeBSD در سیستم های ARM 64 بیتی.

منبع: opennet.ru

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