The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

18.02.2016 11:09  Доступен язык программирования Go 1.6

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

Синтаксис 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.


  1. Главная ссылка к новости (https://blog.golang.org/go1.6...)
Лицензия: CC-BY
Тип: Программы
Ключевые слова: golang
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.2, Crazy Alex, 11:55, 18/02/2016 [ответить] [смотреть все]
  • +/
    Не понял - что такого в том, чтобы в двух goroutine обращаться к одному map? Они ж кооперативные, никаких проблем с локами быть не должно?
     
     
  • 2.4, Sergey, 12:23, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    map-ы в Go не thread-safe Читать можно конечно и без всяких lock-ов, но не писа... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.26, Дима777, 16:49, 18/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Да, удобно. Но зачем теперь сразу ошибку сегфолтить?
     
     
  • 4.51, skybon, 23:37, 18/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Явное лучше неявного Словить панику на месте приятнее чем чесать репу разбирая ... весь текст скрыт [показать]
     
     
  • 5.54, Кирилл, 01:58, 19/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    С вашей логикой тогда надо крэшить для всех типов одновременный доступ, например... весь текст скрыт [показать]
     
     
  • 6.69, Никто, 15:16, 19/02/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Было бы неплохо, но сложно реализовать не уничтожив скорость работы и не раздув ... весь текст скрыт [показать]
     
  • 1.3, Аноним, 12:00, 18/02/2016 [ответить] [смотреть все]  
  • –2 +/
    Абзац про гоу-няшное костылестроение с горутином в мужском роде 8212 это пять... весь текст скрыт [показать]
     
  • 1.5, Аноним, 12:24, 18/02/2016 [ответить] [смотреть все]  
  • +7 +/
    Хороший язык!
     
     
  • 2.13, Аноним, 13:12, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –5 +/
    Для написания фирмваре?
     
     
  • 3.78, Аноним, 21:55, 20/02/2016 [^] [ответить] [смотреть все]  
  • +/
    CS 1 6 - понимаю CS Go - понимаю Go 1 6 - не понимаю 175 _ 12484 _ 175 ... весь текст скрыт [показать]
     
  • 2.21, Настоящий Аноним, 14:53, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +5 +/
    Отличный язык!
     
     
  • 3.22, Аноним, 15:42, 18/02/2016 [^] [ответить] [смотреть все]  
  • +/
    От какого языка отличный?
     
     
  • 4.24, Аноним, 16:17, 18/02/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    От других.
     
     
  • 5.32, Аноним, 19:08, 18/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Злые языки бають, что от лимбо не отличный. Ату их!
     
  • 1.6, Никто, 12:28, 18/02/2016 [ответить] [смотреть все]  
  • +2 +/
    >с такими достоинствами скриптовых языков, как ... защищённость от ошибок.

    Вы поделили на ноль. Скриптовые языки предоставляют защищённости от ошибок, если только не имеется ввиду, что программа как-нибудь да будет работать даже при наличии кучи ошибок, легко отлавливаемых в статически строго типизированных компилируемых языках.

     
     
  • 2.7, Никто, 12:29, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >Скриптовые языки НЕ предоставляют защищённости от ошибок

    Исправлено

     
  • 2.14, Kodesu, 13:18, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    У низкоуровневых языков есть свои траблы Программы с миллиардами пользовате... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, Аноним, 13:31, 18/02/2016 [^] [ответить] [смотреть все]  
  • +13 +/
    Программы с миллиардами (!) пользователей, написанные на ПХП страдают от таких проблем, как переполнение sql-injection и сравнение нуля с пустой строкой. (Пруфы? Открой новости за последние пару лет)
     
     
  • 4.31, Аноним, 18:43, 18/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    ПХП же хуже мерзкого бейсика, к чему он тут?
     
     
  • 5.35, Никто, 19:51, 18/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Как бы о защищённости от ошибок динамически типизированных языков.
     
  • 5.60, Чепукто, 06:08, 19/02/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Обоснуй PS я не про то, что PHP или, упасихоспади, Basic в чем-то хороши Но в... весь текст скрыт [показать]
     
  • 4.56, Лютый жабист, 05:10, 19/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Программы с миллиардами пользователей, написанные на ПХП страдают от таких п... весь текст скрыт [показать]
     
     
  • 5.61, Чепукто, 06:25, 19/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Ща вот прям срыв покровов будет ПХП написан на C как, в общем-то, и Java, и да... весь текст скрыт [показать]
     
  • 3.20, Мяут, 14:52, 18/02/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Справедливости ради, такие ошибки можно и нужно вылавливать статическими анализа... весь текст скрыт [показать]
     
  • 3.33, Никто, 19:35, 18/02/2016 [^] [ответить] [смотреть все]  
  • +3 +/
    Ваше замечание в целом верно кроме того, что не имеет отношения к моему коммента... весь текст скрыт [показать]
     
     
  • 4.40, Kodesu, 20:46, 18/02/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    > это не свойство вида типизации.

    Согласен. Мой комментарий был не к месту.

     
  • 4.50, angra, 23:36, 18/02/2016 [^] [ответить] [смотреть все]  
  • +/
    При выходе за границу массива или иной структуры в скриптовых языках не произойд... весь текст скрыт [показать]
     
     
  • 5.65, Никто, 13:43, 19/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Это не свойство динамически типизированных языков ... весь текст скрыт [показать]
     
  • 2.27, Аноним, 17:15, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –6 +/
    никнейм у тебя правильный, соотвествует уровню комментариев
     
  • 1.8, Никто, 12:38, 18/02/2016 [ответить] [смотреть все]  
  • –4 +/
    Сопоставимая с Си производительность достигается на том же уровне, что и в Java ... весь текст скрыт [показать]
     
     
  • 2.23, freehck, 15:51, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Хм Мой опыт использования aptly показал, что это инструмент весьма шустрый Раз... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.25, Аниним, 16:45, 18/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    А у java есть проблемы с производительностью?
     
     
  • 4.29, Аноним32, 17:57, 18/02/2016 [^] [ответить] [смотреть все]  
  • +4 +/
    java вообще летает, особенно в связке с 100500 мб оперативы и N ядерным процом с... весь текст скрыт [показать]
     
     
  • 5.57, Лютый жабист, 05:15, 19/02/2016 [^] [ответить] [смотреть все]  
  • –3 +/
    Именно так, анонимушка На большие задачи, которые в любом случае потребуют толс... весь текст скрыт [показать]
     
     
  • 6.62, ., 07:59, 19/02/2016 [^] [ответить] [смотреть все]  
  • +/
    На чём написана jvm напомнить? :)
     
     
  • 7.64, Лютый жабист, 08:59, 19/02/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    На чём написано си себе напомни.
     
     
  • 8.73, _, 17:24, 19/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Внезапно - на С же и написанна Но жабофилам этого не понять, мозжечок не вмещ... весь текст скрыт [показать]
     
  • 3.34, Никто, 19:47, 18/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Я не писал о проблемах производительности Я указал на то, что утверждение Явля... весь текст скрыт [показать]
     
     
  • 4.46, freehck, 22:11, 18/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Прошу простить мне неграмотность, однако не подскажете ли Вы мне также, что я до... весь текст скрыт [показать]
     
     
  • 5.66, Никто, 13:53, 19/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Это графики для визуализации статистических данных Можете почитать про боксплот... весь текст скрыт [показать]
     
  • 4.47, freehck, 22:41, 18/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Окей, значит я пока понял это дело так Go процентов на 30 шустрее Java, но оба... весь текст скрыт [показать]
     
     
  • 5.48, freehck, 23:05, 18/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Так с этим вроде стало яснее Был AOT-compiler GCJ из набора, который похоже заг... весь текст скрыт [показать]
     
  • 5.58, Лютый жабист, 05:26, 19/02/2016 [^] [ответить] [смотреть все]  
  • –4 +/
    Ты неправ Во первых задачи бывают разные, я сталкивался с реальными задачами, н... весь текст скрыт [показать]
     
  • 5.59, Лютый жабист, 05:31, 19/02/2016 [^] [ответить] [смотреть все]  
  • –5 +/
    Странно иметь какие-то мнение по вопросу вообще не будучи в теме Сборщик мусора... весь текст скрыт [показать]
     
  • 5.67, Никто, 15:05, 19/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    GC в Oracle JVM работает куда лучше для модели Java чем GC в Go, но разработчики... весь текст скрыт [показать]
     
  • 1.9, anonymous, 12:41, 18/02/2016 [ответить] [смотреть все]  
  • –1 +/
    Мне вот интересно, зачем они все эти модули в языке тащат.
     
     
  • 2.10, anonymous, 12:47, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –3 +/
    Потому как язык изначально для толковых студней создавалася, поэтому, с кучей ст... весь текст скрыт [показать] [показать ветку]
     
  • 2.36, Crazy Alex, 20:11, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Потому что это означает, что оно всё будет развиваться в гармсонии с остальными ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.45, anonymous, 21:44, 18/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Пользователь IDE ЯП синтаксис, и либы тут немного сбоку Хороший пример - ... весь текст скрыт [показать]
     
     
  • 4.49, angra, 23:23, 18/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Начни с ввода/вывода в консоль без стандартных либ в С/С++.

     
     
  • 5.52, anonymous, 00:10, 19/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Ну посмотри как в линукс ядре, например, выводят на консоль Без стандартных либ... весь текст скрыт [показать]
     
     
  • 6.63, ., 08:11, 19/02/2016 [^] [ответить] [смотреть все]  
  • +4 +/
    Дооо - ты напиши корректный printf сначала чмо малолетнее Там и зубры тока та... весь текст скрыт [показать]
     
  • 6.76, Андрей, 05:14, 20/02/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Так в ядре же есть своя libc klibc И вот куча функций usr klibc printf c usr ... весь текст скрыт [показать]
     
  • 2.37, Никто, 20:12, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Этих модулей нет в языке, они в стандартной библиотеке Чем это хорошо при должн... весь текст скрыт [показать] [показать ветку]
     
  • 1.12, Аноним, 13:09, 18/02/2016 [ответить] [смотреть все]  
  • +/
    а затем Ну и его сраный рантайм, пихаемый прямо в код бинаря, никак не добавляе... весь текст скрыт [показать]
     
     
  • 2.42, Никто, 21:14, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Скорость только возрастает, если рантайм встраивается в исполняемый файл Рантай... весь текст скрыт [показать] [показать ветку]
     
  • 1.15, Аноним, 13:19, 18/02/2016 [ответить] [смотреть все]  
  • +5 +/
    CS GO 1.6 вышел?
     
  • 1.16, 0eviy, 13:25, 18/02/2016 [ответить] [смотреть все]  
  • –2 +/
    круто!
     
  • 1.18, Аноним, 13:35, 18/02/2016 [ответить] [смотреть все]  
  • +/
    судя по коммиту, увеличили минимальный размер массива для сортировки вставками, ... весь текст скрыт [показать]
     
     
  • 2.77, Андрей, 05:32, 20/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    В большинстве Согласно википедии питон, а также джава, андроид и октав Всё ... весь текст скрыт [показать] [показать ветку]
     
  • 1.19, Аноним, 14:25, 18/02/2016 [ответить] [смотреть все]  
  • +/
    прошу гугл добавить arm arm64 и powerpc powerpc64 - очень хочется докеры... весь текст скрыт [показать]
     
  • 1.28, Аноним, 17:16, 18/02/2016 [ответить] [смотреть все]  
  • +1 +/
    Дезинформация sort Stable был и до этого, а sort Sort был отличен от него ... весь текст скрыт [показать]
     
  • 1.30, Андрей, 18:15, 18/02/2016 [ответить] [смотреть все]  
  • +/
    > В Cgo, механизм для организации вызова кода на C/C++ из программ на языке Go

    А вот этот последний пункт - самая большая головная боль для кучи проектов. Даже если ты передавал opaque указатель, теперь - нельзя! Указатели нужно хранить в map, и передавать можно только "указатели" на эти указатели.

     
     
  • 2.38, Crazy Alex, 20:12, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    В общем, извращенцы
     
     
  • 3.74, Андрей, 04:56, 20/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Вообще, я - за Go Но, признаю, что это решение выглядит неуклюже Причина сбор... весь текст скрыт [показать]
     
  • 2.53, Аноним, 01:35, 19/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Наркоман, что ли? Ничего подобного и близко нет.
     
     
  • 3.75, Андрей, 04:58, 20/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Для тех, кто в танке, один из основных разработчиков Go, ответственный за gccgo ... весь текст скрыт [показать]
     
  • 1.39, rvs2016, 20:20, 18/02/2016 [ответить] [смотреть все]  
  • –5 +/
    Привет, мир, пожалуйста, в студию.
    Какие браузеры поддерживают язык?
     
     
  • 2.43, Никто, 21:26, 18/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +6 +/
    Здравствуй, школьник. В привычном понимании этого слова никакие браузеры не поддерживают этот язык. Тем не менее и как это ни смешно, "привет, мир" можно попробовать прямо из браузера сразу на главной странице официального сайта https://golang.org/
     
  • 2.55, Аноним, 02:45, 19/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    при чем тут браузеры?
     
  • 1.41, 321, 21:11, 18/02/2016 [ответить] [смотреть все]  
  • –1 +/
    версии слишком быстро плодятся. версия gccgo - не поспевает.
     
  • 1.68, Аноним, 15:13, 19/02/2016 [ответить] [смотреть все]  
  • –1 +/
    Что за версия языка еще? Это, типа, стандарт Go99 или Go14?
     
     
  • 2.70, Andrey Mitrofanov, 15:51, 19/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Что за версия языка еще? Это, типа, стандарт Go99 или Go14?

    Чего https://golang.org/ref/spec (см.внизу: "Build version go1.6."!) непонятого-то? Спецификация - часть билда компилёра, компилёр - референсная (и единственная, надо полагать?) реализация, включённой в него спецификации, и т.д., и т.д -- чтобы понять рекурсию, надо понять: Ленин - Партия, Партия - Ленин.

     
     
  • 3.71, Аноним, 16:57, 19/02/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Версия компилятора все-таки Вот есть GCC 5 3 1, поддерживающий C 11 5 3 1 - в... весь текст скрыт [показать]
     
     
  • 4.72, Andrey Mitrofanov, 17:21, 19/02/2016 [^] [ответить] [смотреть все]  
  • +/
    > Версия компилятора все-таки?

    Многие жалуются, что я непонятно пишу, поэтому для тех, кто не понял: я написал "версия и того(компилятора=реализации), и другого(языка=спецификации)".


    > C++11 это версия стандарта языка С++
    >И как у языка может быть версия?

    Это Вы так сам с собой разговариваете? Извините, если помешал.

    Мне так казалось, что [как бы очевидно, что] язык=спецификация, версия языка=версия "стандарта".

     
  • 1.80, IvAnZ, 08:32, 22/02/2016 [ответить] [смотреть все]  
  • +/
    Кто-нибудь Caddy производительность смотрел против nginx?
    Я смотрю там reverse-proxy failover check  из коробки, чего у nginx нет (есть в Plus версии или надо Lua прикручивать)
    https://caddyserver.com/docs/proxy

    Думаю есть ли смысл только как Load-Balancer Caddy поставить перед nginx?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor