ارسال شده توسط انتشار زبان برنامه نویسی برو 1.13که توسط گوگل با مشارکت جامعه به عنوان یک راه حل ترکیبی که عملکرد بالای زبان های کامپایل شده را با مزایای زبان های اسکریپت نویسی مانند سهولت در نوشتن کد، سرعت توسعه و محافظت از خطا ترکیب می کند، در حال توسعه است. کد پروژه توزیع شده توسط تحت مجوز BSD
سینتکس Go بر اساس عناصر آشنای زبان C با برخی وامگیریهایی از زبان پایتون است. زبان کاملاً مختصر است، اما کد به راحتی قابل خواندن و درک است. کد Go در فایل های اجرایی باینری مستقل که به صورت بومی و بدون استفاده از ماشین مجازی اجرا می شوند کامپایل می شود (پروفایل، اشکال زدایی و سایر زیرسیستم های تشخیص مشکل در زمان اجرا به صورت ادغام شده اند. اجزای زمان اجرا) که به شما امکان می دهد عملکردی قابل مقایسه با برنامه های C داشته باشید.
این پروژه در ابتدا با توجه به برنامه نویسی چند رشته ای و عملیات کارآمد بر روی سیستم های چند هسته ای، از جمله ارائه ابزارهای سطح اپراتور برای سازماندهی محاسبات موازی و تعامل بین روش های موازی اجرا شده، توسعه یافته است. این زبان همچنین محافظت داخلی در برابر بلوک های حافظه بیش از حد تخصیص داده شده را فراهم می کند و امکان استفاده از جمع کننده زباله را فراهم می کند.
بسته crypto/tls دارای پشتیبانی از پروتکل به طور پیش فرض فعال است TLS 1.3. بسته جدید "crypto/ed25519" با پشتیبانی از امضای دیجیتال Ed25519 اضافه شد.
پشتیبانی از پیشوندهای واقعی عددی جدید برای تعریف اعداد باینری (به عنوان مثال 0b101)، هشتی (0o377)، خیالی (2.71828i) و ممیز شناور هگزا دسیمال (0x1p-1021) و توانایی استفاده از کاراکتر "_" برای جداسازی بصری ارقام. به تعداد زیاد (1_000_000)؛
محدودیت استفاده از شمارندههای بدون علامت در عملیات شیفت حذف شده است، که از تبدیلهای غیرضروری به نوع uint قبل از استفاده از عملگرهای «‹‹» و «››» جلوگیری میکند.
پشتیبانی از پلتفرم Illumos (GOOS=illumos) اضافه شده است. سازگاری با پلتفرم Android 10 تضمین شده است. الزامات حداقل نسخه های FreeBSD (11.2) و macOS (10.11 "El Capitan") افزایش یافته است.
توسعه مداوم سیستم ماژول جدید، که می تواند به عنوان جایگزینی برای GOPATH استفاده شود. برخلاف برنامههای اعلامشده قبلی در Go 1.13، این سیستم بهطور پیشفرض فعال نیست و نیاز به فعالسازی از طریق متغیر GO111MODULE=on یا استفاده از زمینهای دارد که در آن ماژولها به طور خودکار اعمال میشوند. سیستم ماژول جدید دارای پشتیبانی نسخهسازی یکپارچه، قابلیتهای تحویل بسته و بهبود مدیریت وابستگی است. با ماژولها، توسعهدهندگان دیگر به کار در یک درخت GOPATH وابسته نیستند، میتوانند به صراحت وابستگیهای نسخهشده را تعریف کنند و ساختهای تکرارپذیر ایجاد کنند.
برخلاف نسخههای قبلی، کاربرد خودکار سیستم جدید اکنون زمانی کار میکند که یک فایل go.mod در دایرکتوری کاری فعلی یا دایرکتوری والد هنگام اجرای دستور go، از جمله زمانی که در دایرکتوری GOPATH/src باشد، وجود دارد. متغیرهای محیطی جدیدی اضافه شدهاند: GOPRIVATE که مسیرهای ماژولهای در دسترس عموم را تعریف میکند و GOSUMDB که پارامترهای دسترسی به پایگاه داده چکسوم را برای ماژولهایی که در فایل go.sum فهرست نشدهاند، مشخص میکند.
دستور «go» بهطور پیشفرض، ماژولها را بارگیری میکند و یکپارچگی آنها را با استفاده از آینه ماژول و پایگاهداده چک جمع نگهداری شده توسط Google (proxy.golang.org، sum.golang.org و index.golang.org) بررسی میکند.
پشتیبانی فقط از بسته های باینری متوقف شده است؛ ساخت یک بسته در حالت "//go:binary-only-package" اکنون منجر به خطا می شود.
پشتیبانی از پسوند "@patch" به دستور "go get" اضافه شده است، که نشان می دهد ماژول باید به آخرین نسخه تعمیر و نگهداری به روز شود، اما بدون تغییر نسخه اصلی یا فرعی فعلی.
هنگام بازیابی ماژول ها از سیستم های کنترل منبع، دستور "go" اکنون یک بررسی اضافی روی رشته نسخه انجام می دهد و سعی می کند اعداد شبه نسخه را با ابرداده از مخزن مطابقت دهد.
پشتیبانی اضافه شد بازرسی خطا (Error wrapping) از طریق ایجاد wrapperهایی که امکان استفاده از کنترل کننده خطاهای استاندارد را فراهم می کند. مثلا، خطا "e" را می توان با ارائه یک روش در اطراف خطای "w" قرار داد بازگو کردن، "w" را برمی گرداند. هر دو خطای "e" و "w" در برنامه موجود هستند و تصمیمات بر اساس خطای "w" گرفته می شود، اما "e" زمینه اضافی را برای "w" فراهم می کند یا آن را متفاوت تفسیر می کند.
عملکرد اجزای زمان اجرا بهینه شده است (افزایش سرعت تا 30٪ ذکر شده است) و بازگشت تهاجمی تری از حافظه به سیستم عامل پیاده سازی شده است (قبلاً حافظه پس از پنج دقیقه یا بیشتر برگردانده می شد، اما اکنون بلافاصله پس از کاهش اندازه پشته).