Подано реліз мови програмування Go 1.15
Представлений реліз мови програмування Go 1.15
Представлений реліз мови програмування Go 1.15, розробленої компанією Google за участю спільноти як гібридне рішення, що поєднує в собі високу продуктивність компільованих мов з такими перевагами скриптових мов, як простота написання коду, швидкість розробки і захист від помилок. Код проекту поширюється під ліцензією BSD.
Синтаксис Go заснований на звичайних елементах мови C з окремими запозиченнями від мови Python. Мова досить лаконічний, але код легко читається і сприймається. Код Go компілюється в окремі двійкові виконувані файли, які запускаються нативно без використання віртуальної машини (профілювання, налагодження та інші підсистеми виявлення проблем виконання інтегровані як компоненти середовища виконання) для досягнення продуктивності, порівнянної з програмами C.
Проект спочатку розробляється з прицілом на багатопотокове програмування і ефективну роботу над багатоядерними системами, в тому числі надає інструменти операторного рівня для організації паралельних обчислень і взаємодії між паралельними методами. Мова також забезпечує вбудований захист від виходу за межі дозволених областей виділених блоків пам'яті і надає можливість використання сміттєзбірника.
Основні нововведення, введені в реліз Go 1.15:
- Робота лінкера була значно поліпшена, як в області збільшення швидкості роботи і зниження споживання пам'яті, так і в напрямку спрощення обслуговування коду. При тестуванні на операційних системах, що використовують виконуваний файловий формат ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), компонування типового набору великих Go-додатків стала виконуватися на 20% швидше, а споживання пам'яті скоротилося в середньому на 30%. Підвищення продуктивності стало можливим завдяки переходу на новий формат об'єктного файлу і перепроектуванню внутрішніх етапів для підвищення рівня розпаралелювання робіт. Нативний зв'язувач тепер використовується за замовчуванням у системах linux/amd64 та linux/arm64 у режимі "-buildmode=pie", що більше не вимагає використання C-linker.
- Час виконання значно покращує розподіл невеликих об'єктів по системах з великою кількістю ядер процесора і зменшує затримку. У разі збоїв відображаються значення з числовим і рядковим типами, замість показу адреси. При відправці сигналів SIGSEGV, SIGBUS і SIGFPE в додаток Go, за відсутності ос/обробника сигналу. Повідомте, додаток завершиться з виведенням стекового сліду (раніше поведінка було непередбачуваним).
- Була проведена оптимізація компілятора, що дозволило зменшити розмір згенерованих виконуваних файлів в середньому на 5% за рахунок зупинки включення деяких метаданих для збирача сміття і більш агресивного очищення невикористовуваних метаданих.
- Прапор «-spectre» був доданий в компілятор і асемблер для можливості захисту від атак Spectre (більшість програм цього не вимагають, включення опції може бути виправдано лише для деяких цілком конкретних випадків).
- У сертифікатах X.509 поле CommonName застаріло, яке більше не розглядається як ім'я хоста, якщо поле «Альтернативні імена суб'єкта» відсутнє.
- У команді "go" в змінній середовища GOPROXY тепер ви можете перерахувати кілька проксі, розділених комою або "|". Якщо перший проксі в списку повертає помилку (404 або 410), то буде зроблена спроба доступу через другий проксі і т.д.
- Утиліта vet додала попередження про спробу перетворення з рядка(x), якщо "x" є цілочисельним типом, відмінним від руни або байта.
- Прапор "-gnu" був доданий до утиліти objdump для підтримки виведення дампів-дизасемблерів у синтаксисі асемблера GNU.
- Доданий новий пакет time/tzdata, який дозволяє вбудувати в програму базу даних з даними часового поясу.
- Фрази білий/чорний список і master/slave були видалені з вихідного коду і документації , замість чого тепер використовуються "список дозволених", "блок-лист", "процес", "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 році).
