Go proqramlaşdırma dilinin buraxılışı 1.18

Google tərəfindən tərtib edilmiş dillərin yüksək performansını skript dillərinin asanlığı kimi üstünlükləri ilə birləşdirən hibrid həll kimi ictimaiyyətin iştirakı ilə hazırlanmış Go 1.18 proqramlaşdırma dilinin buraxılışı təqdim olunur. yazı kodu, sürətli inkişaf və səhvlərdən qorunma. Layihə kodu BSD lisenziyası altında paylanır.

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 ayrı ikili icra edilə bilən fayllara yığılır (profilləşdirmə, sazlama və digər iş zamanı problemlərin aşkarlanması alt sistemləri iş vaxtı komponentləri kimi birləşdirilmişdir), bu da 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.

Yeni versiya ümumi funksiyalar və növlər (generiklər) üçün dəstək əlavə edir, onun köməyi ilə tərtibatçı eyni anda bir neçə növlə işləmək üçün nəzərdə tutulmuş funksiyaları müəyyən edə və istifadə edə bilər. Çoxlu məlumat növlərini əhatə edən birləşdirilmiş tiplər yaratmaq üçün interfeyslərdən istifadə etmək də mümkündür. Generiklərə dəstək mövcud kodla geriyə uyğunluğu pozmadan həyata keçirilir. // Toplam dəst dəyərləri, int64 və float64 növləri üçün işləyir func SumIntsOrFloats[K müqayisəli, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Ümumi tip tərifi ilə başqa seçim: type Number interface { int64 | float64 } func Cəm Nömrələri[K müqayisə edilə bilən, V Nömrə](m xəritə[K]V) V { var s V üçün _, v := diapazon m { s += v } qaytarılması s }

Digər təkmilləşdirmələr:

  • Qeyri-adi kod testi üçün utilitlər standart alətlər dəstinə inteqrasiya olunub. Füzing testi zamanı giriş məlumatlarının bütün mümkün təsadüfi birləşmələrinin axını yaradılır və onların işlənməsi zamanı mümkün uğursuzluqlar qeydə alınır. Ardıcıllıq çökərsə və ya gözlənilən cavaba uyğun gəlmirsə, bu davranış səhv və ya zəifliyi göstərə bilər.
  • Çox modullu iş yerləri üçün əlavə dəstək, birdən çox modulda əmrləri yerinə yetirməyə imkan verir, eyni vaxtda birdən çox modulda kod qurmağa və işlətməyə imkan verir.
  • Apple M1, ARM64 və PowerPC64 prosessorlarına əsaslanan sistemlər üçün əhəmiyyətli performans optimallaşdırmaları edilmişdir. Arqumentləri funksiyalara ötürmək və nəticəni qaytarmaq üçün yığın əvəzinə registrlərdən istifadə etmək imkanı aktivləşdirildi. Kompilyator tərəfindən döngələrin sətir daxilində açılması təkmilləşdirilmişdir. Kompilyatorda tip yoxlanışı tamamilə yenidən işlənib. Bəzi testlər əvvəlki buraxılışla müqayisədə kod performansında 20% artım göstərir, lakin tərtibin özü təxminən 15% daha uzun çəkir.
  • İş müddətində boşalmış yaddaşın əməliyyat sisteminə qaytarılmasının səmərəliliyi artırıldı və davranışı daha proqnozlaşdırıla bilən zibil kollektorunun işi yaxşılaşdırıldı.
  • Standart kitabxanaya yeni net/netip və debug/buildinfo paketləri əlavə edildi. TLS 1.0 və 1.1 dəstəyi müştəri kodunda defolt olaraq deaktiv edilib. Kripto/x509 modulu SHA-1 heşindən istifadə edərək imzalanmış sertifikatların işlənməsini dayandırdı.
  • Linux-da mühit üçün tələblər qaldırıldı, işləmək üçün indi ən azı 2.6.32 versiyası olan Linux nüvəsinə sahib olmalısınız. Növbəti buraxılışda FreeBSD üçün də oxşar dəyişikliklər gözlənilir (FreeBSD 11.x filialı üçün dəstək dayandırılacaq) və işləmək üçün ən azı FreeBSD 12.2 tələb olunacaq.

Mənbə: opennet.ru

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