Go proqramlaşdırma dili buraxılışı 1.14

Tərəfindən təqdim edildi proqramlaşdırma dili buraxılışı 1.14 gedin, Google tərəfindən cəmiyyətin iştirakı ilə tərtib edilmiş dillərin yüksək performansını kod yazma asanlığı, inkişaf sürəti və səhvlərdən qorunma kimi skript dillərinin üstünlükləri ilə birləşdirən hibrid bir həll kimi hazırlanır. Layihə kodu yayılır BSD lisenziyası altında.

Go sintaksisi Python dilindən bəzi borclar ilə C dilinin tanış elementlərinə əsaslanır. Dil olduqca yığcamdır, lakin kodu oxumaq və başa düşmək asandır. Go kodu virtual maşından istifadə etmədən yerli olaraq işləyən müstəqil ikili icra edilə bilən proqramlarda tərtib edilir (profilləşdirmə, sazlama və digər işləmə zamanı problemlərin aşkarlanması alt sistemləri aşağıdakı kimi inteqrasiya olunur). icra vaxtı komponentləri), C proqramları ilə müqayisə edilə bilən performansa nail olmağa imkan verir.

Layihə ilkin olaraq çox yivli proqramlaşdırma və çoxnüvəli sistemlərdə səmərəli əməliyyat, o cümlədən paralel hesablamaların təşkili və paralel icra edilən metodlar arasında qarşılıqlı əlaqə üçün operator səviyyəsində həyata keçirilən vasitələrin təmin edilməsi ilə hazırlanmışdır. Dil ayrıca ayrılmış yaddaş bloklarının həddindən artıq yüklənməsinə qarşı daxili qoruma təmin edir və zibil kollektorundan istifadə etmək imkanı verir.

Əsas yeniliklərGo 1.14 buraxılışında təqdim edildi:

  • "Get" əmrindəki yeni modul sistemi ümumi istifadəyə hazır elan edilir, defolt olaraq aktivləşdirilir və GOPATH əvəzinə asılılığın idarə edilməsi üçün tövsiyə olunur. Yeni modul sistemi inteqrasiya edilmiş versiya dəstəyini, paketlərin çatdırılma imkanlarını və təkmilləşdirilmiş asılılığın idarə edilməsini təmin edir. Modullarla tərtibatçılar artıq GOPATH ağacında işləməyə bağlı deyillər, versiyalı asılılıqları açıq şəkildə müəyyən edə və təkrarlanan quruluşlar yarada bilərlər.
  • Əlavə edilib üst-üstə düşən metodlar dəsti ilə interfeyslərin yerləşdirilməsi üçün dəstək. Daxili interfeysdən olan üsullar indi mövcud interfeyslərdəki metodlarla eyni adlara və imzalara malik ola bilər. Açıq şəkildə elan edilmiş metodlar əvvəlki kimi unikal olaraq qalır.
  • "Təxirə salınma" ifadəsinin performansı təkmilləşdirilərək, onu demək olar ki, təxirə salınmış funksiyanı birbaşa çağırmaq qədər sürətli edir, performansa həssas kodda təxirə salınmış funksiyanın icrasına imkan verir.
  • Koroutinlərin (qorutinlərin) asinxron preemptionasiyası təmin edilir - funksiya çağırışlarını ehtiva etməyən dövrələr indi potensial olaraq planlaşdırıcının dalana dirənməsinə və ya zibil yığılmasının başlanmasını gecikdirə bilər.
  • Yaddaş səhifələrinin bölüşdürülməsi sisteminin səmərəliliyi yaxşılaşdırılıb və böyük GOMAXPROCS dəyərlərinə malik konfiqurasiyalarda indi əhəmiyyətli dərəcədə daha az kilid mübahisələri var. Nəticə, eyni zamanda böyük yaddaş bloklarını intensiv şəkildə paylayarkən gecikmə müddətini azaldır və ötürmə qabiliyyətini artırır.
  • Zaman.After, time.Tick, net.Conn.SetDeadline funksiyalarında istifadə olunan daxili taymerləri işlədən zaman kilidləmə optimallaşdırılıb və kontekst keçidlərinin sayı azaldılıb.
  • Kökdə müəyyən bir satıcıya bağlı xarici asılılıqları çatdırmaq üçün nəzərdə tutulmuş satıcı kataloqu varsa, get əmrində “-mod=vendor” bayrağı standart olaraq aktivləşdirilir. Modulları "satıcı" kataloqundan deyil, modul keşindən yükləmək üçün ayrıca "-mod=mod" bayrağı əlavə edildi. Əgər go.mod faylı yalnız oxunursa, üst "satıcı" kataloqu yoxdursa, "-mod=yalnız oxu" bayrağı standart olaraq təyin edilir. Modulun kök kataloqunda olanın əvəzinə alternativ go.mod faylını təyin etmək üçün "-modfile=file" bayrağı əlavə edildi.
  • GOINSECURE mühit dəyişəni əlavə edildi, təyin olunduqda, go əmri HTTPS istifadəsini tələb etmir və modulları birbaşa yükləyərkən sertifikat yoxlamasını atlayır.
  • Tərtibçi kodu unsafe.Pointer-dən təhlükəsiz istifadə qaydalarına uyğunluğunu yoxlamaq üçün defolt olaraq aktivləşdirilmiş “-d=checkptr” bayrağını əlavə etmişdir.
  • Çatdırılmaya yeni paket daxildir hash/maphash ixtiyari bayt ardıcıllıqları və ya sətirlər üçün hash cədvəlləri yaratmaq üçün qeyri-kriptoqrafik hash funksiyaları ilə.
  • Linux-da 64-bit RISC-V platforması üçün eksperimental dəstək əlavə edildi.
  • 64 bitlik ARM sistemlərində FreeBSD üçün əlavə dəstək.

Mənbə: opennet.ru

Добавить комментарий