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

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

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

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

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

  • Істотно покращено роботу компонувальника, як у галузі підвищення швидкості роботи та скорочення споживання пам'яті, так і в напрямку спрощення супроводу коду. При тестуванні в операційних системах, що використовують формат файлів ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), компонування типового набору великих Go-додатків почало виконуватися на 20% швидше, а споживання пам'яті в середньому зменшилося на 30%. Підвищення продуктивності стало можливим завдяки переходу на новий формат об'єктних файлів та переробці внутрішніх стадій для підвищення рівня розпаралелювання робіт. Власний компонувальник тепер використовується за умовчанням на системах linux/amd64 та linux/arm64 в режимі "-buildmode=pie", в якому тепер не потрібно застосування Сі-компонувальника.
  • У runtime значно покращився розподіл дрібних об'єктів на системах з великою кількістю ядер CPU і скорочені затримки. При збоях забезпечено виведення значень із числовими та рядковими типами замість показу адреси. При надсиланні Go-додатку сигналів SIGSEGV, SIGBUS і SIGFPE, у разі відсутності обробника os/signal.Notify, програма буде завершена з виведенням трасування стека (раніше поведінка була непередбачуваною).
  • Проведено оптимізацію компілятора, що дозволило скоротити розмір генерованих виконуваних файлів в середньому на 5% за рахунок припинення включення деяких метаданих для збирача сміття і більш агресивного чищення метаданих, що не використовуються.
  • У компілятор і асемблер доданий прапор "-spectre" для включення захисту від атак класу Spectre (для більшості програм не потрібно, включення опції може бути виправдане лише для окремих дуже специфічних випадків).
  • У сертифікатах X.509 оголошено застарілим поле CommonName, яке тепер не трактується як ім'я хоста у разі відсутності поля Subject Alternative Names.
  • У команді «go» у змінній оточенні GOPROXY тепер можна перераховувати кілька проксі, розділених комою або символом «|». Якщо перший проксі у списку поверне помилку (404 або 410), то буде спроба звернення через другий проксі і т.д.
  • Утиліта vet додає попередження про спробу перетворення з string(x), якщо «x» є цілочисленним типом, відмінним від rune або byte.
  • В утиліту objdump доданий прапор "-gnu" для підтримки дизасемблювання синтаксису GNU assembler.
  • Доданий новий пакет time/tzdata, що дозволяє вбудувати в програму БД з даними часових поясах.
  • З вихідних текстів та документації прибрані фрази whitelist/blacklist і master/slave, замість яких тепер використовуються allowlist, blocklist, process, pty, proc і control.
  • Внесено велику порцію незначних поліпшень до стандартної бібліотеки.
  • Додана підтримка OpenBSD 6.7 у режимах GOARCH=arm та GOARCH=arm64 (раніше підтримувалися лише GOARCH=386 та GOARCH=amd64).
  • Продовжено розвиток 64-розрядної платформи RISC-V (GOOS=linux, GOARCH=riscv64).
  • Для 32-розрядних систем x86 у наступному випуску будуть підняті мінімальні вимоги до системи – продовжать підтримуватись лише процесори з SSE2. Для складання в режимі GOARCH=386 потрібно як мінімум Intel Pentium 4 (випущений у 2000 році) або AMD Opteron/Athlon 64 (випущений у 2003 році).

Джерело: opennet.ru

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