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

Відбувся реліз мови програмування Go 1.16

Випущено мову програмування Go 1.16

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

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

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

Основні нововведення, введені в реліз Go 1.16:

  • Доданий пакет embed, який надає інструменти для вбудовування в програму довільних файлів і каталогів. Щоб вказати файли, які будуть вбудовані під час компіляції, надається нова директива "//go:embed". Наприклад, вказівка коментаря в коді "//go:embed test.txt" і оголошення наступної змінної "var f embed". FS" призведе до вбудовування тестового.txt файлу і можливості доступу до нього через ручку "f". Аналогічним чином можна вбудувати необхідні файли з ресурсами або окремими значеннями певного типу, наприклад, для отримання рядкової змінної "s" з файлу версії.txt можна вказати:
      import _ "embed"
       //go:embed version.txt
       var s string
       print(s)
    
  • За замовчуванням тепер потрібна нова модульна система з інтегрованою підтримкою версій, яка замінює управління залежностями на основі GOPATH. Змінна середовища GO111MODULE тепер за замовчуванням встановлена на "увімкнено", і режим модуля використовується незалежно від наявності файлу go.mod в робочому або батьківському каталозі. У новому режимі команди збірки, такі як "go build" і "go test", не змінюють вміст go.mod і go.sum, а команда "go install" обробляє аргументи, специфічні для версії ( "go install example.com/cmd@v1.0.0"). Щоб повернути стару поведінку, змініть GO111MODULE на "авто". Зазначається, що 96% розробників вже перейшли на нову систему модулів.
  • Лінкер оптимізовано. Для більших проектів макет тепер на 20-25% швидше і вимагає на 5-15% менше пам'яті.
  • Компілятор додає підтримку вбудованого розгортання функцій зі скороченим визначенням циклів "для", значень методів та конструкцій "перемикача типів".
  • Додана підтримка систем Apple, оснащених новим ARM-чіпом Apple M1. Додано порти netbsd/arm64 та openbsd/mips64 з підтримкою NetBSD на 64-бітних ARM та OpenBSD у системах MIPS64. Порт linux/riscv64 додає підтримку режиму cgo та "-buildmode=pie".
  • Підтримка режиму компіляції x87 (GO386=387) припинена. Підтримка процесорів без інструкцій SSE2 тепер доступна через програмний режим "GO386=softfloat".

Інші новини