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

    文章

    2480

    浏览量

    46522
  • Go
    Go
    +关注

    关注

    0

    文章

    40

    浏览量

    12178
  • 编译器
    +关注

    关注

    1

    文章

    1576

    浏览量

    48606

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    MiniProg4在POWER_DRILL2GO周期后失去与PC的连接的原因?

    你好我使用 MiniProg4 作为 I2C 桥接器(通过 12 引脚)和 PSoC™ 编程器(通过 5 引脚端口)。 我正在用 Python 开发一个代码,以控制 MiniProg4 和用于
    发表于 01-19 07:55

    Go语言比Python强多少

    1.都说Go语言性能非常强大,那么到底比Python强多少? 为了比较Go语言和Python语言在单线程性能上的差距,我们可以做一个简单实验,从1亿减到1: Python代码(以下均分别提供图片和文
    的头像 发表于 11-02 14:05 280次阅读
    <b class='flag-5'>Go</b>语言比Python强多少

    如何让Python和Go互相调度

    我们曾经研究过如何让Python和Go互相调度,当时发现,将Go语言写的模块打包成动态链接库,就能在Python中进行调度: 优劣互补! Python+Go结合开发的探讨
    的头像 发表于 11-02 11:24 247次阅读
    如何让Python和<b class='flag-5'>Go</b>互相调度

    Go在单线程计算性能上的优势

    一文中,我们讨论了Go在单线程计算性能上的优势。 现在,考虑这样的一种场景: 我们需要从某些网址中同步数据并进行计算,保存到本地redis缓存中。 现在,我们可以通过编写Go Worker的方式
    的头像 发表于 11-02 11:16 217次阅读
    <b class='flag-5'>Go</b>在单线程计算性能上的优势

    Go必知的10个命令!

    如果你想检查一些与 Go 相关的环境变量,这个和开关很有关系,比如 GOROOT 或 GOPATH,直接执行命令 go env,查看这两个环境变量的配置。关于这两个环境变量的设置和说明,可查看这篇文章:理解了 GOPATH 和 GOROOT才能找出问题根源
    的头像 发表于 10-22 10:01 185次阅读

    热响应性GO纳米片的优势

    基于石墨烯的二维材料由于其优异的结构、机械、电学、光学和热性能,最近成为科学探索的焦点。其中,基于氧化石墨烯(GO)(石墨烯的氧化衍生物)的纳米片具有超薄、超宽的尺寸和富氧的表面,非常有前途。
    的头像 发表于 09-11 11:40 469次阅读

    Go语言中的整数类型

    Go 语言中,整型可以细分成两个种类十个类型。
    发表于 07-20 15:25 336次阅读

    Go语言常量的声明

    Go 语言中, 常量 表示的是固定的值,常量表达式的值在编译期进行计算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的数据类型只可以是 布尔型 、 数字型 (整数型、浮点型和复数)和 字符串型 。
    发表于 07-20 15:24 275次阅读

    Go语言简介和安装方法

    Go 又称 Golang ,是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回
    发表于 07-19 16:33 418次阅读

    宇树Unitree Go2四足机器人:智能科技新选择

    7月12日,宇树推出了备受瞩目的Unitree Go2四足机器人,售价从9997元起。这款产品将彻底改变以往消费级四足机器人的市场格局,并引领整个行业的变革。早在2021年6月,宇树就发布了划时代
    的头像 发表于 07-13 16:48 881次阅读

    Go 1.21的PGO正式GA,性能提升,更快更猛!

    Go 语言中,最初关于 PGO 的提案是建议向 Go GC 工具链增加对配置文件引导优化 (PGO) 的支持,以便工具链能根据运行时信息执行特定于应用程序和工作负载的优化。
    的头像 发表于 06-28 16:47 753次阅读
    <b class='flag-5'>Go</b> 1.21的PGO正式GA,性能提升,更快更猛!

    如何启动go-admin并优雅的添加api呢?

    go-admin 针对 api 项目的启动提供server指令,在程序启动时使用;
    的头像 发表于 06-02 17:36 894次阅读

    如何快速搭建一个现代化的Go开发环境?

    Go 源代码的安装目录,Mac 和 Windows 安装时会自动配置好,Linux 一般在 /usr/local/go 目录。
    的头像 发表于 05-22 16:53 582次阅读

    为什么Dubbo这么老的项目还要用Go重写?

    Dubbo 诞生于阿里巴巴,2011年开源的Dubbo已经走过了10个年头。在2019年,它被用Go重写并开源,如今两年过去,已经从当初的V1.0.0版本发展到了V3.0.0,截止目前star数3.8K。
    发表于 05-08 09:02 243次阅读
    为什么Dubbo这么老的项目还要用<b class='flag-5'>Go</b>重写?