Go 14岁了

4690cfe4346350b3377c8bf446edd172.jpeg

今天我们庆祝Go开源十四周年!Go度过了美好的一年,发布了两个功能齐全的版本和其他重要的里程碑。

我们在2月份发布了Go 1.20,在8月份发布了Go 1.21,更多地关注实现改进而不是新的语言更改。

在Go 1.20中,我们预览了配置文件引导优化(PGO),并在Go 1.21中正式发布。PGO允许Go编译器读取程序的配置文件,然后花更多时间优化程序中最常运行的部分。在启用PGO后,Go 1.21中的工作负载的CPU使用率通常会提高2%到7%。有关概述,请参阅“Go 1.21中的配置文件引导优化”,有关完整文档,请参阅配置文件引导优化用户指南。

自从Go 1.2以来,go test就提供了对收集覆盖率配置文件的支持。Go 1.20添加了对在由go build构建的二进制文件中收集覆盖率配置文件的支持,允许您在较大的集成测试期间收集覆盖率。有关详细信息,请参阅“Go集成测试的代码覆盖率”。

自从“Go 1和Go程序的未来”以来,兼容性一直是Go的重要组成部分。Go 1.21通过扩展在我们需要进行更改的情况下使用GODEBUG的约定,进一步提高了兼容性,例如必须允许但仍可能破坏现有程序的重要错误修复。有关概述,请参阅博客文章“向后兼容性、Go 1.21和Go 2”,有关详细信息,请参阅文档“Go、向后兼容性和GODEBUG”。

Go 1.21还支持内置工具链管理,允许您更改在特定模块中使用的Go工具链版本,就像更改其他依赖项的版本一样轻松。有关概述,请参阅博客文章“Go 1.21中的前向兼容性和工具链管理”,有关详细信息,请参阅文档“Go Toolchains”。

另一个重要的工具成就是将磁盘索引集成到gopls(Go LSP服务器)中。在典型用例中,这将减少gopls的启动延迟和内存使用量3-5倍。“为不断发展的Go生态系统扩展gopls”解释了技术细节。您可以通过运行以下命令来确保您正在运行最新的gopls:

go install golang.org/x/tools/gopls@latest

Go 1.21引入了新的cmp、maps和slices包——Go的第一个通用标准库——并扩展了可比较类型的集合。有关详细信息,请参阅博客文章“所有可比较的类型”。

总体而言,我们继续完善泛型并撰写演讲和博客文章来解释重要细节。今年的两篇值得注意的文章是“解构类型参数”和“您一直想了解的有关类型推断的一切 - 以及更多内容”。

Go 1.21中另一个重要的新包是log/slog,它向标准库添加了用于结构化日志记录的官方API。有关概述,请参阅“使用slog进行结构化日志记录”。

对于WebAssembly(Wasm)端口,Go 1.21支持在WebAssembly系统接口(WASI)预览版1上运行。WASI预览版1是Wasm的新“操作系统”界面,大多数服务器端Wasm环境都支持。请参阅“Go中的WASI支持”了解演练。

在安全方面,我们将继续确保Go在帮助开发人员了解其依赖项和漏洞方面处于领先地位,并于7月推出Govulncheck 1.0。如果您使用VS Code,则可以使用Go扩展直接在编辑器中运行govulncheck:请参阅本教程以开始使用。如果您使用GitHub,则可以使用govulncheck的GitHub Action将govulncheck作为CI/CD的一部分运行。有关检查依赖项是否存在漏洞问题的更多信息,请参阅今年的Google I/O演讲“使用Go和Google构建更安全的应用程序”。

另一个重要的安全里程碑是Go 1.21的高度可重复的工具链构建。有关详细信息,请参阅“完美再现、经过验证的Go工具链”,包括在Mac上再现Ubuntu Linux Go工具链而不使用任何Linux工具的演示。

这是忙碌的一年!

在Go的第15个年头,我们将继续努力使Go成为大规模软件工程的最佳环境。我们特别兴奋的一项变化是重新定义for循环的:=语义,以消除意外别名错误的可能性。有关详细信息,请参阅“修复Go 1.22中的For循环”,包括在Go 1.21中预览此更改的说明。

谢谢你!Go项目一直不仅仅是我们Google Go团队的成员。感谢我们所有的贡献者和Go社区中的每个人,是你们让Go成为今天的样子。我们祝愿您在新的一年里一切顺利。

GopherChina 2023上海站 

快点击阅读原文报名吧~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/134608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于多尺度分形残差注意力网络的超分辨率重建算法

1.引言 深度神经网络可以显著提高超分辨率的质量,但现有方法难以充分利用低分辨率尺度特征和通道信息,从而阻碍了卷积神经网络的表达能力。针对此类问题,本章提出了一种多尺度分形残差注意力网络(Multi-scale Fractal Residual A…

优秀智慧园区案例 - 深圳特区建发创智云城智慧园区,万字长文解析先进智慧园区建设方案经验

一、项目背景 1、项目背景 创智云城项目位于大湾区核心城市之一的深圳,且地处GDP第一的科技创新核心区——南山区,136万㎡新兴产业智慧之城矗立于湾区核心创新高地。项目所处西丽湖国际科教城,最具发展潜力,规划全域面积约57平方…

JavaWeb Day09 Mybatis-基础操作02-XML映射文件动态SQL

目录 Mybatis动态SQL介绍​编辑 一、案例 ①Mapper层 ②测试类 ③EmpMapper.xml ④结果​ 二、标签 (一)if where标签 ​①EmpMapper.xml ②案例 ③总结 (二)foreach标签 ①SQL语句 ②Mapper层 ③EmpMapper.xml ④…

N-133基于springboot,vue小说网站

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项…

141.环形链表(LeetCode)

想法一 快慢指针,设置slow和fast指针,slow一次走一步,fast一次走两步,如果链表有环,它们最终会相遇,相遇时返回true;如果链表无环,它们最终走到空,跳出循环,…

企业邮箱本地私有化部署解决方案

随着互联网化进程不断深入,加快推进企业信息化系统建设,已经成为提高企业核心竞争力的重要途径。企业对企业邮箱系统的需求越来越大,企业邮箱系统作为企业级通讯工具中的利器,在协同办公和内外业务交流上发挥着无可替代的巨大作用…

国际阿里云:Windows系统ECS实例中CPU使用率较高问题的排查及解决方案!!

问题现象 Windows系统ECS实例中CPU使用率较高,即CPU使用率≥80%。 问题原因 CPU使用率较高可能有以下原因。 ECS实例遭到病毒木马入侵。 ECS实例中第三方杀毒软件运行。 ECS实例中应用程序异常、驱动异常、高I/O使用率或高中断处理的应用程序。 解决方案 步骤…

[工业自动化-13]:西门子S7-15xxx编程 - 分布式从站 - 硬件配置

目录 前言: 一、通过博图软件完成对ET200 SP分布式从站的硬件配置 二、从站组态配置的常见问题与解决 三、分布式从站与CPU的profiNet连接 3.1 概述 3.2 配置主站与从站的profinet连接 四、Profinet和普通以太网区别 4.1 概述 4.2 协议栈 五、主站与从站连…

将复数中的虚部取反 即对复数求共轭 numpy.conjugate()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将复数中的虚部取反 即对复数求共轭 numpy.conjugate() [太阳]选择题 请问以下代码中执行语句输出结果是? import numpy as np a np.array([1 2j, 3 - 4j]) print("【显示…

图论13-最小生成树-Kruskal算法+Prim算法

文章目录 1 最小生成树2 最小生成树Kruskal算法的实现2.1 算法思想2.2 算法实现2.2.1 如果图不联通,直接返回空,该图没有mst2.2.2 获得图中的所有边,并且进行排序2.2.2.1 Edge类要实现Comparable接口,并重写compareTo方法 2.2.3 取…

SAM + YOLO 智能抠图

在计算机视觉领域,对象检测和实例分割是使机器能够理解视觉数据并与之交互的关键任务。 准确识别和隔离图像中的物体的能力具有许多实际应用,从自动驾驶车辆到医学成像。 在这篇博文中,我们将探索如何在 Roboflow 和 Ultralytics YOLOv8 的帮…

服务器安全组端口规则配置手册

具体操作如下: 1、配置规则 进入服务器实例列表,服务器,选择安全组,点击右侧配置规则 2、添加安全组规则 点击右上方添加安全组规则 3、添加端口 添加6个端口:80,21,8888,888,443,3306,授权对象&#x…

openEuler编译安装nmon性能监控工具及可视化分析工具

ln 介绍 nmon(short for Nigel’s Monitor)是一个性能分析工具,由蓝色巨人IBM开发,最早用于自家操作系统UNIX,AIX (Advanced Interactive eXecutive)。现在也能用在Linux上。它可以显示系统的…

跨域:利用JSONP、WebSocket实现跨域访问

跨域基础知识点:跨域知识点 iframe实现跨域的四种方式:http://t.csdnimg.cn/emgFr 注:本篇中使用到的虚拟主机也是上面iframe中配置的 目录 JSONP跨域 JSONP介绍 跨域实验: WebSocket跨域 websocket介绍 跨域实验 JSONP跨域…

Javaweb之javascript的DOM对象的详细解析

1.5.3 DOM对象 1.5.3.1 DOM介绍 DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。 DOM 其实我们并不陌生,之前在学习 XML 就接触过,只不过 XML 文档中的标签需要我们写代码解析&#x…

前端如何结合mock模拟假数据

由于某人不想写后端接口,不想用真数据对接vue-element-admin框架,用以前的接口,改token有点点麻烦,所以咱试试mock.js

基于GPTs个性化定制SCI论文专业翻译器

1. 什么是GPTs GPTs是OpenAI在2023年11月6日开发者大会上发布的重要功能更新,允许用户根据特定需求定制自己的ChatGPT模型。 Introducing GPTs 官方介绍页面https://openai.com/blog/introducing-gpts 在原有自定义ChatGPT的流程中,首先需要自己编制p…

Linux学习教程(第二章 Linux系统安装)1

第二章 Linux系统安装 学习 Linux,首先要学会搭建 Linux 系统环境,也就是学会在你的电脑上安装 Linux 系统。 很多初学者对 Linux 望而生畏,多数是因为对 Linux 系统安装的恐惧,害怕破坏电脑本身的系统,害怕硬盘数据…

计算机网络——物理层-传输方式(串行传输、并行传输,同步传输、异步传输,单工、半双工和全双工通信)

目录 串行传输和并行传输 同步传输和异步传输 单工、半双工和全双工通信 串行传输和并行传输 串行传输是指数据是一个比特一个比特依次发送的。因此在发送端和接收端之间,只需要一条数据传输线路即可。 并行传输是指一次发送n个比特,而不是一个比特&…

C/C++(a/b)*c的值 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C(a/b)*c的值 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C(a/b)*c的值 2021年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定整数a、b、c,计算(a / b)*c的值&…