0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Go开发团队正式宣布推出Go 1.11版本

DPVg_AI_era 来源:未知 作者:李倩 2018-08-27 09:03 次阅读

Go开发团队正式宣布推出Go 1.11版本。新版本在工具链、运行时和库等方面有很多变化和改进,特别是增加了模块支持和WebAssembly支持两个新特性。

今天,Go开发团队宣布推出Go 1.11正式版。

下载地址:https://golang.org/dl

这距离Go 1.10的发布已经过去六个月。

新版本在工具链、运行时和库等方面有很多变化和改进,兼容性方面也依然会兼容旧版本。此外,新版本增加了两个最激动人心的新特性:对模块(modules)和WebAssembly的支持。

模块、软件包版本控制和依赖关系管理

Go 1.11版本增加了对“模块”(modules)这个新概念的初步支持,这是GOPATH的替代方案,集成了对版本控制和软件包分发的支持。

使用modules,开发人员将不再局限于在GOPATH中工作,版本依赖性信息是显式而且轻量级的,并且构建项更具可靠性和可重复性。

模块支持功能目前仍处于实验性阶段,根据Go 1.11用户的反馈,细节可能会发生变化,Go开发团队也在计划增加更多工具。模块支持可能仍有一些可能影响使用的问题,因此请充分利用问题跟踪器进行反馈或查阅解决方案。

WebAssembly

Go 1.11还为WebAssembly(js/wasm)添加了一个实验端口。这允许程序员将Go程序编译为与四种主流Web浏览器兼容的二进制格式。

目前,Go程序编译为一个WebAssembly模块,该模块包括Go runtime,用于goroutine scheduling,garbage collection,maps等。因此,其大小至少约为2 MB,或压缩为500 KB。Go程序可以使用新的实验性syscall/js包调用JavaScript。二进制大小和与其他语言的互操作还不是优先级的,但可能在将来的版本中解决。

由于添加了新的GOOS值“js”和GOARCH值“wasm”,Go工具现在将忽略名为* _js.go或* _wasm.go的Go文件,除非使用了那些GOOS/GOARCH值。如果你的现有文件名与这些模式一致,则需要重命名它们。

你可以在webassembly.org上阅读有关WebAssembly(缩写为“Wasm”)的更多信息,并查看这个Wiki页面,了解如何开始使用Wasm with Go。

其他工具

导入路径限制

由于 Go 模块支持在命令行操作中为符号@指定了特殊含义,因此该Go命令现在不允许使用包含@符号的导入路径。goget从未允许这种导入路径,因此该限制只会影响用户通过其他方式构建自定义 GOPATH 树。

Package 加载

新的软件包golang.org/x/tools/go/packages提供了一个简单的API来定位和加载Go源代码包。虽然它还不是标准库的一部分,但对于许多任务,它有效地替代了go/build包,后者的API无法完全支持模块。这个AIP支持构建分析工具,这些工具与Bazel和Buck等替代构建系统同样有效。

构建缓存要求

Go 1.11 将是支持设置环境变量GOCACHE=off以禁用构建缓存的最后一个版本。从 Go 1.12 开始,将需要构建缓存,作为消除$GOPATH/pkg的步骤。

编译器工具链

默认情况下,现在更多函数可以进行内联,包括调用panic的函数。编译器工具链现在支持行指令中的列信息。引入了新的包导出数据格式。

汇编

汇编程序amd64现在接受 AVX512 指令。

调试

编译器现在可以为优化的二进制文件生成更精确的调试信息,包括可变位置信息、行号和断点位置。这将使调试没有-N -l编译的二进制文件成为可能。Go 1.11添加了在调试器中调用Go函数的实验性支持。

测试

从Go 1.10开始,Go test命令在被测试的包上运行Go vet,以便在运行测试之前识别问题。因为vet在运行前用go/type检查代码,所以不检查类型的测试将会失败。

Vet

go vet命令现在在分析包未进行类型检查时会报告致命错误。一起,类型检查错误只会导致打印警告,并以状态1退出vet。

跟踪

使用新的runtime/trace包的用户注释API,用户可以在执行跟踪中记录应用程序级别的信息,并创建相关的goroutines组。go tool trace这个命令在跟踪视图和新用户任务/区域分析页面中显示此信息。

Runtime

runtime现在使用稀疏堆布局,因此不再限制Go堆的大小(以前的限制是512GiB)。这也解决了使用-race编译的混合Go/C二进制文件或二进制文件中的“address space conflict”故障。

在macOS和iOS上,运行时现在使用libSystem.so,而不是直接调用内核。这应该使Go二进制文件与未来版本的macOS和iOS更加兼容。syscall package仍然可以进行直接的系统调用。

此外,Go 1.11正式版对核心库也有更改,不过所有更改都比较小。具体请见Release Notes。

Google 的 Go 工程师AndrewBonventre在博客中特别感谢了Richard Musiol为WebAssembly端口做出的贡献,以及感谢为这个新版本做出贡献的所有人,包括编写代码,提交错误,提供反馈和/或测试测试版和发布候选版本。如果你在使用中发现任何问题,请提交问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2740

    浏览量

    47830
  • Go
    Go
    +关注

    关注

    0

    文章

    44

    浏览量

    12274
  • 编译器
    +关注

    关注

    1

    文章

    1642

    浏览量

    49336

原文标题:入坑搞定Python多种任务,Go 1.11 新版本正式发布!

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    典范转移 EV全生态系商机 - The CAN SIC Transceiver Is Ready To Go.

    典范转移 EV全生态系商机 - The CAN SIC Transceiver Is Ready To Go.
    的头像 发表于 01-22 17:23 188次阅读
    典范转移 EV全生态系商机 - The CAN SIC Transceiver Is Ready To <b class='flag-5'>Go</b>.

    影目科技发布全球首款同传翻译眼镜INMO GO2

    近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言
    的头像 发表于 12-11 10:00 397次阅读

    在学习go语言的过程踩过的坑

    作为一个5年的phper,这两年公司和个人都在顺应技术趋势,新项目慢慢从php转向了go语言,从2021年到现在,笔者手上也先后开发了两个go项目。在学习go语言的过程中也学习并总结了
    的头像 发表于 11-11 09:22 210次阅读

    go语言如何解决并发问题

    作为一个后端开发,日常工作中接触最多的两门语言就是PHP和GO了。无可否认,PHP确实是最好的语言(手动狗头哈哈),写起来真的很舒爽,没有任何心智负担,字符串和整型压根就不用区分,开发速度真的是比
    的头像 发表于 10-23 13:38 193次阅读
    <b class='flag-5'>go</b>语言如何解决并发问题

    三十分钟入门基础Go Java小子版

    前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态、强类型、编译型语言。Go
    的头像 发表于 08-12 14:32 800次阅读
    三十分钟入门基础<b class='flag-5'>Go</b> Java小子版

    联想将推出搭载AMD Z1系列处理器的Legion Go拯救者掌机“Lite”版

     据WindowsCentral报道,相关知情人士透露,联想正研发Legion Go拯救者掌机的“Lite”版本,将采用AMD Z1系列处理器,性能较上一代有所提升。
    的头像 发表于 05-27 17:45 920次阅读

    求助,关于PSoC4000S POWER_DRILL2GO下降压摆率的疑问求解

    我不确定来自哪个版本,但数据表中列出了 PSoC4000S POWER_DRILL2GO下降压摆率。(1V/ms 最小,最大 67V/ms) 目前的设计并不能满足这个要求
    发表于 05-21 08:14

    请问STVP+COSMIC环境下的go to definition怎么用?

    STVP+COSMIC环境下的go to definition怎么用? 我现在go to definition在一个宏定义的时候有效果,但是函数什么的没用,是怎么回事呢,是不是工程里面没有设置好,求大家帮帮忙?
    发表于 05-11 06:11

    为什么无法使用STVD右键跳转到Go to definition of功能?

    我的STVD右键跳转到 Go to definition of xx功能不能用 跳转不过去 是怎么回事 找函数好麻烦
    发表于 05-08 08:28

    关于go中接口类型的表示方法

    go是一个静态性语言,每个变量都有静态的类型,因此每个变量在编译阶段中有明确的变量类型,比如像:int、float32、MyType。
    的头像 发表于 04-28 10:13 420次阅读

    Go语言中的函数、方法与接口详解

    Go 没有类,不过可以为结构体类型定义方法。方法就是一类带特殊的接收者参数的函数。方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间。(非结构体类型也可以定义方法)
    的头像 发表于 04-23 16:21 930次阅读

    使用Docker部署Go Web应用程序步骤

    大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版和配置文件。而当一个项目中有很多文件的时候,由于很多文件没有同步就会导致错误的发生并且产生很多的问题。
    发表于 04-20 09:33 566次阅读
    使用Docker部署<b class='flag-5'>Go</b> Web应用程序步骤

    在CYT4BF中从Deepsleep转换到Active时,POWER_DRILL2GO的稳定时间是多少?

    我想知道 CYT4BF 中从 DeepSleep 转换到 Active 时核心POWER_DRILL2GO稳定时间。 我根据数据表中的时钟检查了POWER_DRILL2GO模式转换时间。 并且在
    发表于 03-06 07:58

    PMG1 PoR复位时POWER_DRILL2GO什么时候进入?

    我有两个关于 PMG1 PoR 的问题。 1.复位时POWER_DRILL2GO什么时候进入? 也许您想在电压低于预设值时强制 EZ-PD™ PMG1-S1 MCU 设备复位
    发表于 03-06 06:03

    Arduino IDE中是否有与Xmc2Go兼容的LoRaWAN库?

    我想问一下 Arduino IDE 中是否有与 Xmc2Go 兼容的 LoRaWAN 库? 我正在尝试使用连接到 Xmc2Go 的 RFM95W Lora 模块通过 LoRaWAN 将数据传输
    发表于 02-27 06:05