Go هر شش ماه یکبار منتشر میشود. هر نسخهی اصلی Go تا زمانی که دو نسخهی اصلی جدیدتر منتشر شوند، پشتیبانی میشود. مشکلات بحرانی با انتشار اصلاحات جزئی رفع میشوند.
همچنین لینکهایی به پروپوزالها (P) و کامیتهای (C) ویژگیهای توضیح داده شده ارائه میکنم. برای انگیزه و جزئیات پیادهسازی آنها را بررسی کنید.
- 2024-08-02
نسخه 1.23
- حلقههای
for
میتوانند بر روی توابع تکرارگر (iterator) تکرار کنند. - بسته جدید
iter
با انواع تکرارگر. - تکرارگرهای برش (slice) در بسته
slices
. - تکرارگرهای نقشه (map) در بسته
maps
. Timer
ها وTicker
ها که دیگر به وسیله برنامه ارجاع داده نمیشوند، بلافاصله برای جمعآوری زباله (garbage collection) واجد شرایط میشوند.- از دریافتهای منسوخ پس از اینکه
Timer
ها وTicker
هاStop
/Reset
را برگردانند، اجتناب کنید. - بسته جدید
unique
امکاناتی برای استانداردسازی مقادیر ارائه میدهد.
- حلقههای
- 2024-02-02
نسخه 1.22
- هر تکرار از حلقه متغیرهای جدیدی ایجاد میکند تا از بروز اشکالات به دلیل اشتراک تصادفی جلوگیری کند.
- حلقههای
for
میتوانند بر روی اعداد صحیح تکرار کنند. - بسته جدید
math/rand/v2
برای کار با اعداد تصادفی. - الگوهای مسیریابی HTTP از روشها و wildcards پشتیبانی میکنند.
- بسته جدید
go/version
برای کار با نسخههای Go.
- 2023-08-02
نسخه 1.21
- توابع داخلی جدید
min
وmax
کوچکترین/بزرگترین مقدار را از بین آرگومانها محاسبه میکنند. - تابع داخلی جدید
clear
تمام عناصر یک نقشه را حذف یا تمام عناصر یک برش (slice) را صفر میکند. - بسته جدید
log/slog
لاگبرداری ساختاریافته با سطوح مختلف را فراهم میکند. - بسته جدید
slices
عملیاتهای رایج زیادی را بر روی برشها (slices) فراهم میکند. - بسته جدید
maps
چندین عملیات رایج را بر روی نقشهها (maps) فراهم میکند. - بسته جدید
cmp
برای کار با انواع مرتبشده (ordered types). - بهینهسازی مبتنی بر پروفایل (PGO) بهینهسازیها را بر اساس اطلاعات پروفایل زمان اجرا انجام میدهد.
- 𝗣 55022
- پورت WebAssembly System Interface.
- 𝗣 58141
- توابع داخلی جدید
- 2023-02-02
نسخه 1.20
- تبدیل از یک برش (slice) به یک آرایه (array) مجاز شده است.
- مقادیر ساختارها (struct) به صورت فیلد به فیلد و به ترتیب تعریف مقایسه میشوند.
- انواع قابل مقایسه حالا میتوانند محدودیتهای
comparable
را برآورده کنند، حتی اگر آرگومانهای نوع به طور دقیق قابل مقایسه نباشند. - امکان بستهبندی چندین خطا (error) فراهم شده است.
- راهی برای لغو یک
context.Context
با یک خطای خاص (“cause”) وجود دارد. - رشتههای فرمت
time
جدید برای سازگاری با استانداردهای بینالمللی. - بسته جدید
crypto/ecdh
پشتیبانی از پروتکل Elliptic Curve Diffie-Hellman را فراهم میکند. - دستور
go
اکنون به طور پیشفرضcgo
را در سیستمهایی که ابزارهای C ندارند، غیرفعال میکند.- 𝗖𝗟 496356
- 2022-08-02
- 2022-03-15
نسخه 1.18
- برنامهنویسی عمومی با استفاده از پارامترهای نوع.
- بسته جدید
debug/buildinfo
دسترسی به نسخههای ماژول و فلگهای ساخت را که در فایلهای اجرایی جاسازی شدهاند، فراهم میکند. - بسته جدید
net/netip
نوع آدرس IP بهتر و توابع کمکی را تعریف میکند. - دستور
go get
دیگر بستهها را نمیسازد یا نصب نمیکند.- 𝗣 43684
- آزمون تصادفی (Fuzzing).
- 𝗣 44551
- 2021-08-16
- 2021-02-16
نسخه 1.16
- جاسازی فایلها در فایل اجرایی با استفاده از دستور
go:embed
. - بسته جدید
runtime/metrics
رابط پایداری برای خواندن معیارهای تعریفشده توسط پیادهسازی از زمان اجرای Go معرفی میکند. - بسته جدید
io/fs
رابطهای سیستم فایل را فراهم میکند. - بسته
io/ioutil
منسوخ شده است.- 𝗣 42026
- حالت آگاه به ماژول به طور پیشفرض فعال شده است (
GO111MODULE=on
).- 𝗣 41330
- دستورهای ساخت مانند
go build
به طور پیشفرضgo.mod
وgo.sum
را تغییر نمیدهند.- 𝗣 40728
- جاسازی فایلها در فایل اجرایی با استفاده از دستور
- 2020-08-11
نسخه 1.15
- 2020-02-25
نسخه 1.14
- اجازه جاسازی رابطهای همپوشان (overlapping interfaces) داده شده است.
- گوروتینها (goroutines) اکنون به صورت ناهمزمان قابل پیشگیری (preemptible) هستند.
- بسته جدید
hash/maphash
توابع هش روی دنبالههای بایت را فراهم میکند.
- 2019-09-03
- 2019-02-25
- 2018-08-24
- 2018-02-16
نسخه 1.10
go build
حافظه کشی از بستههای اخیراً ساختهشده را نگه میدارد.go test
نتایج تست را کش میکند و بهطور خودکارgo vet
را اجرا میکند.
- 2017-08-24
نسخه 1.9
- همنامسازی نوعها (Type aliases).
- 𝗣 18130
- ساعت یکنواخت در بسته
time
. - بسته جدید
math/bits
برای دستکاری بیتها. - نقشه همزمان (Concurrent map) در بسته
sync
. - توابع کمکی تست در بسته
testing
. - کامپایل موازی (Parallel compilation).
- همنامسازی نوعها (Type aliases).
- 2017-02-16
نسخه 1.8
- نادیده گرفتن برچسبها (tags) هنگام تبدیل یک مقدار از یک نوع ساختار به نوع دیگر.
- جمعآوری زباله (garbage collector) دیگر بهطور مداوم آرگومانها را در طول کل تابع زنده در نظر نمیگیرد.
- 𝗣 15843
- توابع مربوط به برشها (slice) در بسته
sort
. - ارسال pushهای سرور HTTP/2 در بسته
net/http
. - خاموشی نرم سرور HTTP در بسته
net/http
. - پشتیبانی از Context در بسته
database/sql
.
- 2016-08-15
- 2016-02-17
- 2015-08-19
نسخه 1.5
- کامپایلر و زمان اجرا بهطور کامل در Go نوشته شدهاند.
- جمعآوری زباله (garbage collection) همزمان.
- بهطور پیشفرض،
GOMAXPROCS
به تعداد هستههای در دسترس تنظیم میشود. - بستههای داخلی.
- دستور
go tool trace
برای ردیابی دقیق اجرای برنامه. - دستور
go doc
برای ساخت مستندات بسته.
- 2014-12-10
نسخه 1.4
- حلقه for-range بدون متغیرها.
- عدم اجازه فراخوانی متدها بر روی
**T
. - دستور
go generate
برای تولید کد منبع قبل از کامپایل.
- 2014-06-18
- 2013-12-01
نسخه 1.2
- هر بیانیهای که صراحتاً یا ضمنی نیاز به ارزیابی یک آدرس
nil
داشته باشد، خطا است. - بیان کامل برش برای مشخص کردن ظرفیت و طول هنگام برش.
- بسته جدید
encoding
مجموعهای از رابطهای کدگذاری استاندارد برای ساخت marshalers و unmarshalers سفارشی را فراهم میکند. - بسته جدید
image/color/palette
پالتهای رنگی استاندارد را ارائه میدهد. - عملیات ایندکسینگ در مشخصات قالببندی
fmt
.
- هر بیانیهای که صراحتاً یا ضمنی نیاز به ارزیابی یک آدرس
- 2013-05-13
نسخه 1.1
- تقسیم عدد صحیح بر صفر یک خطای زمان کامپایل است.
- مقادیر متد.
- شناسایی خطاهای همزمان (Race detector).
- بسته جدید
go/format
روشی برای دسترسی به قابلیتهای قالببندی دستورgo fmt
ارائه میدهد. - بسته جدید
net/http/cookiejar
اصول مدیریت کوکیهای HTTP را فراهم میکند.
[یادداشتهای نسخه](https://tip.golang.org/doc/go1.1
- 2012-03-28