原文在这里。

由Eli Bendersky, on behalf of the Go team 发布于 8 August 2023

Go团队今天非常高兴地发布了Go 1.21版本,你可以通过访问下载页面来获取。

Go 1.21充满了新功能和改进。以下是一些值得注意的变化;完整的列表,请参阅发布说明。

工具改进

  • 我们在1.20版本预览的基于配置文件的优化(PGO)特性现在已经可以广泛使用了!如果在主包的目录中存在名为default.pgo的文件,go命令将使用它来启用PGO构建。更多详情请查看PGO文档。我们已经在一系列Go程序上测量了PGO的影响,看到了2-7%的性能提升。
  • go工具现在支持向后和向前的语言兼容性。

语言变化

  • 新的内置函数:min,max和clear。
  • 对泛型函数的类型推断进行了多项改进。规范中对类型推断的描述已经被扩展和明确化。
  • 在Go的未来版本中,我们计划解决Go编程中最常见的问题之一:循环变量捕获。Go 1.21带来了这个特性的预览,你可以在你的代码中使用环境变量来启用它。更多详情请查看LoopvarExperiment wiki页面。

标准库添加

  • 新的log/slog包,用于结构化日志。
  • 新的slices包,用于对任何元素类型的切片进行常见操作。这包括比sort包更快、更符合人体工程学的排序函数。
  • 新的maps包,用于对任何键或元素类型的映射进行常见操作。
  • 新的cmp包,带有新的有序值比较工具。

性能改进

除了启用PGO时的性能改进外,

  • Go编译器本身已经在1.21版本中启用了PGO,因此它构建Go程序的速度提高了2-4%,具体取决于主机架构。
  • 由于对垃圾收集器的调优,一些应用可能会看到尾部延迟降低了高达40%。
  • 使用runtime/trace收集跟踪现在在amd64和arm64上的CPU成本大大降低。

新的WASI端口:

  • Go 1.21添加了一个实验性的WebAssembly系统接口(WASI)的端口,预览1(GOOS=wasip1,GOARCH=wasm)。
  • 为了便于编写更通用的WebAssembly(Wasm)代码,编译器还支持了一个新的用于从Wasm主机导入函数的指令:go:wasmimport。

感谢所有通过编写代码、提交错误、分享反馈和测试发布候选版本的人对这个版本的贡献。你们的努力帮助确保Go 1.21尽可能稳定。如果你发现任何问题,请提交一个问题。

享受Go 1.21吧!


声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。

author: mengbin

blog: mengbin

github: mengbin92

cnblogs: 恋水无意


Go 1.21发布!的更多相关文章

  1. iOS版微信6.5.21发布 适配iPhone X

    昨日,iOS版微信迎来v6.5.21正式版发布,本次升级主要适配iPhone X,在聊天中查找聊天内容时,可以查找交易消息.可以给聊天中的消息设置日期提醒.上一个正式版v6.5.16发布于9月13日, ...

  2. Solon 1.6.21 发布,轻量级应用开发框架

    关于官网 千呼万唤始出来: https://solon.noear.org .整了一个月多了...还得不断接着整! 关于 Solon Solon 是一个轻量级应用开发框架.支持 Web.Data.Jo ...

  3. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  4. 苹果产品时间发布表统计(iPhone、iPad),以及32位和64位机的说明

    之前因为某些原因,需要对apple家族的手机和pad产品做一个上市时间排序,以及分析分别是哪种CPU机型 总结如下: iPad家族: 1.iPad   - 2010.1.27发布 2.iPad 2   ...

  5. NoSQL数据库笔谈(转)

    NoSQL数据库笔谈 databases , appdir , node , paper颜开 , v0.2 , 2010.2 序 思想篇 CAP 最终一致性 变体 BASE 其他 I/O的五分钟法则 ...

  6. 5 个最好的3D游戏开发工具(转)

    转自:http://www.open-open.com/news/view/33a4f0 5 个最好的3D游戏开发工具 jopen 2012-11-19 22:56:21 • 发布 摘要:UDK(th ...

  7. iOS企业级开发初级课程-表视图(13集)

    首先了解了表视图的组成.表视图类的构成.表视图的分类以及表视图的两个重要协议(委托协议和数据源协议),对表视图有了一个整体上的认识.接下来我们掌握了如何实现简单表视图和分节表视图,以及表视图中索引.搜 ...

  8. 知道创宇研发技能表v3.0

    知道创宇研发技能表v3.0 2015/8/21 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关 ...

  9. ENVI Services Engine5.1 应用开发入门教程

    原文地址: ENVI Services Engine5.1 应用开发入门教程_ENVI-IDL中国_新浪博客 http://blog.sina.com.cn/s/blog_764b1e9d0102uy ...

  10. 转载 C#中敏捷开发规范

    转载原地址 http://www.cnblogs.com/weixing/archive/2012/03/05/2380492.html 1.命名规则和风格 Naming Conventions an ...

随机推荐

  1. 企业诊断屋:二手车交易平台 APP 如何用 AB 测试赋能业务

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2023年汽车行业新车市场低靡,由新车降价引发的车辆价格波动很快传导到二手车市场,二手车的交易也受到了冲击,收车验 ...

  2. 查看Windows系统 重启时间

    查看Windows系统 重启时间 CMD 命令 systeminfo 事件查看器 筛选:1074 6005: 开机时间.6006:关机时间

  3. ScreenToGif 录屏转git图片

    ScreenToGif 一款开源的屏幕录制,允许您记录屏幕的选定区域.网络摄像头的实时信息或素描板上的实时绘图.之后,您可以编辑动画并将其保存为 gif.apng.视频.psd 或 png 图像. 官 ...

  4. C++:如何将 LLVM 嵌套到你的项目中去

    IDE: Clion LLVM cmake_minimum_required(VERSION 3.9) project(clang_demo) find_package(LLVM REQUIRED C ...

  5. Codeforces Round #664 题解(A ~ C)

    1395A - Boboniu Likes to Color Balls 如果在r,b,g,w中小于或等于一个奇数,则可以将其定为回文. 否则,请进行一次操作(如果可以),然后检查上述情况. 进行多次 ...

  6. 2015年第六届 蓝桥杯B组 C/C++决赛题解

    1.积分之迷 小明开了个网上商店,卖风铃.共有3个品牌:A,B,C. 为了促销,每件商品都会返固定的积分. 小明开业第一天收到了三笔订单: 第一笔:3个A + 7个B + 1个C,共返积分:315 第 ...

  7. 如果很好说出finalize用法,面试官会认为你很资深

    我在面试Java候选人的时候,有时候会通过finalize问及候选人在JVM方面的技能,一般的问法是:你知不知道finalize方法,在项目里有没有重写过这个方法?在本文里就将详细来说下这个知识点. ...

  8. 9、SpringBoot-mybatis-druid多源数据多源数据

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  9. Vue大数据可视化(大屏展示)解决方案

    DataV:组件库基于Vue (React版) ,主要用于构建大屏(全屏)数据展示页面即数据可视化 官网地址: http://datav.jiaminghi.com/guide/#%E7%94%A8% ...

  10. 《模拟龙生》|500行Go代码写一个随机冒险游戏|巨龙修为挑战开启

    一.前言 新年就要到了,祝大家新的一年: 龙行龘龘, 前程朤朤! 白泽花了点时间,用 500行 Go 代码写了一个控制台的小游戏:<模拟龙生>,在游戏中你将模拟一条新生的巨龙,开始无尽的冒 ...