+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Представлено реліз мови програмування Go 1.13, який розвивається Google за участю спільноти

Представлено реліз мови програмування Go 1.13, який розвивається компанією Google за участю спільноти

Представлено реліз мови програмування Go 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);< /li>
  • Припинено підтримку лише бінарних пакетів, збирання пакета в режимі "//go:binary-only-package" тепер призводить до виведення помилки;
  • У команду "go get" додано підтримку суфікса "@patch", що вказує, що модуль має бути оновлений до останнього коригувального випуску, але без зміни поточної значної або проміжної версії;
  • При вийманні модулів із систем контролю версій команда "go" тепер виконує додаткову перевірку рядка з номером версії, намагаючись зіставити номери псевдо-версій із метаданим із репозиторію;
  • Додана підтримка інспектування помилок (error wrapping) через створення обгорток, що дозволяють використовувати типові обробники помилок. Наприклад, помилка "e" може бути обгорнута над помилкою "w" через надання методу Unwrap, що повертає "w". Обидві помилки "e" і "w" доступні в програмі та рішення приймаються на підставі помилки "w", але "e" надає додатковий контекст до "w" або інтерпретує його інакше;
  • Проведено оптимізацію продуктивності runtime-компонентів (відзначається приріст швидкості до 30%) та задіяно більш агресивне повернення пам'яті в операційну систему (раніше пам'ять поверталася через п'ять і більше хвилин, а зараз одразу після урізання розміру купи).

Інші новини

Найкраща ціна