Доступен язык программирования Go 1.6
Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.
Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.
Основные новшества, представленные в выпуске Go 1.6:
- В модуль net/http добавлена поддержка протокола HTTP/2, которая при использовании HTTPS включена по умолчанию как для клиентов, так и для серверов. Использование новой версии модуля позволит задействовать HTTP/2 в уже существующих проектах на языке Go, в том числе в http-сервере Caddy;
- Расширены возможности, связанные с использованием шаблонов (модуль text/template). Добавлена поддержка чистки пробелов вокруг операций в шаблоне и реализована новая операция "{{block}}" для создания блочных шаблонов, собираемых из других шаблонов;
- Включена по умолчанию поддержка директории vendor, предназначенной для поставки внешних зависимостей, привязанных к определённому поставщику;
- Проведена оптимизация работы модулей compress/bzip2, compress/gzip, crypto/aes, crypto/elliptic и crypto/ecdsa, производительность которых возросла приблизительно на 10%. Изменён алгоритм сортировки, используемый в sort.Sort, что также позволило поднять производительность примерно на 10%. Cтарый алгоритм сортировки доступен через вызов sort.Stable для тех кому требуется полная идентичность порядка вывода;
- Сокращено число пауз, вызванных работой сборщика мусора, что особенно заметно в программах, расходующих большие объемы памяти;
- Добавлены экспериментальные порты для Linux на 64-рядных процессорах MIPS (linux/mips64 и linux/mips64le) и Android on 32-разрядных процессорах x86 (android/386);
- Для сборки порта во FreeBSD в качестве внешнего компилятора по умолчанию задействован Clang вместо GCC;
- В компилятор, систему динамического связывания и команду "go" добавлена новая опция "-msan", доступная только на архитектуре linux/amd64 и включающая режим совместимости с анализатором памяти Clang MemorySanitizer, который удобно использовать для тестирования приложений, содержащих вставки на C и C++;
- В runtime добавлен легковесный механизм выявления неправомерного одновременного использования ассоциативных массивов (map). Если одна go-программа (goroutine) записывает в map, то другая go-программа не может прочитать или записать в map. В случае, когда данное условие нарушено и runtime выявил конфликт, программа будет экстренно завершена с выводом соответствующего сообщения об ошибке. Для выявления подобных проблем на этапе отладки предлагается использовать race-detector;
- В runtime изменён метод вывода информации о крахе программы, которая теперь включает только дамп стека для вызвавшего проблему goroutine, а не для всех goroutine как раньше. Изменить данное поведение можно через переменную окружения GOTRACEBACK или вызвав функцию debug.SetTraceback;
- В Cgo, механизм для организации вызова кода на C/C++ из программ на языке Go, внесены изменения в правила совместного доступа к указателям, которые в основном связаны с обеспечение сосуществования кода на языке Си со сборщиком мусора языка Go.
Источник: http://www.opennet.ru/opennews/art.shtml?num=43898
|
0 | Tweet | Нравится |
|