Реліз мови програмування Go 1.13

представлений реліз мови програмування Перейти 1.13, який розвивається Google за участю спільноти як гібридне рішення, що поєднує високу продуктивність компільованих мов з такими перевагами скриптових мов, як легкість написання коду, швидкість розробки та захищеність від помилок. Код проекту поширюється під ліцензією BSD.

Синтаксис Go заснований на звичних елементах мови Сі з окремими запозиченнями з Python. Мова досить лаконічна, але при цьому код легко читається та сприймається. Код мовою Go компілюється в відокремлені бінарні виконувані файли, що виконуються без використання віртуальної машини (модулі профілювання, налагодження та інші підсистеми виявлення проблем на етапі виконання інтегруються у вигляді runtime-компонентів), що дозволяє досягти продуктивності, порівнянної з програмами мовою Сі.

Проект спочатку розробляється з огляду на багатопоточне програмування та ефективну роботу на багатоядерних системах, у тому числі надаючи реалізовані на рівні операторів кошти для організації паралельних обчислень та взаємодії між методами, що виконуються паралельно. Мова також надає вбудовані засоби захисту від виходу за допустимі області виділених блоків пам'яті та забезпечує можливість використання збирача сміття.

Основні нововведення, представлені у випуску Go 1.13:

  • У пакеті 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 в поточному робочому каталозі або батьківському каталозі є файл go.mod, у тому числі при знаходженні в каталозі GOPATH/src. Додано нові змінні оточення: GOPRIVATE, що визначає шляхи публічно недоступних модулів, та GOSUMDB, що задає параметри доступу до бази контрольних сум модулів, не перерахованих у файлі go.sum;

  • У команді «go» за замовчуванням забезпечено завантаження модулів та перевірка їхньої цілісності, використовуючи дзеркало модулів та базу контрольних сум, що підтримуються компанією Google (proxy.golang.org, sum.golang.org та index.golang.org);
  • Припинено підтримку лише бінарних пакетів, збирання пакета в режимі «//go:binary-only-package» тепер призводить до виведення помилки;
  • До команди «go get» додано підтримку суфікса «@patch», що вказує, що модуль має бути оновлений до останнього коригувального випуску, але без зміни поточної значної або проміжної версії;
  • При вилученні модулів із систем контролю версій команда «go» тепер виконує додаткову перевірку рядка з номером версії, намагаючись зіставити номери псевдо-версій із метаданим із репозиторію;
  • Додана підтримка інспектування помилок (error wrapping) через створення обгорток, що дозволяють використовувати типові обробники помилок. Наприклад, помилка "e" може бути обгорнута над помилкою "w" через надання методу Розгорніть, що повертає "w". Обидві помилки "e" і "w" доступні в програмі і рішення приймаються на підставі помилки "w", але "e" надає додатковий контекст до "w" або інтерпретує його інакше;
  • Проведено оптимізацію продуктивності runtime-компонентів (відзначається приріст швидкості до 30%) та задіяно агресивніше повернення пам'яті в операційну систему (раніше пам'ять поверталася через п'ять і більше хвилин, а зараз відразу після урізання розміру купи).

Джерело: opennet.ru

Додати коментар або відгук