一文告诉你如何帮助测试Go语言Beta公测版与RC候选发布版-程序员宅基地

技术标签: python  java  编程语言  人工智能  go  

Go 1.17已经发布到RC2版本[1]!正式版最早将在8月中旬发布,最迟也不会晚于月底。对于喜欢尝鲜的Gopher而言,在体验Go 1.17的新特性的同时,也不要忘了为Go语言项目做做贡献!贡献什么呢?其实很简单,就是在尝鲜的同时,对Go语言的Beta公测版以及RC发布候选版进行测试,并把遇到的问题提交到Go语言项目官方issue列表[2]中去。

那么如何对Go语言的Beta公测版或RC发布候选版进行测试呢?别急,这就是本文要告诉你的内容。

本文翻译自Go语言项目“编外”核心开发者、现Tailscale工程师Josh Bleecher Snyder[3]的文章《How to test a Go beta or RC》[4]

在Go发布周期[5]的这个时间阶段,Go团队希望全世界的Go开发者们帮助测试Go的Beta公测版和RC发布候选版[6]

请帮忙吧! 这很简单,很快速,也很重要。

这是一篇关于如何测试(Beta和RC),测试什么,以及为什么测试的文章。

1. 安装

预发布版(pre-releases)可以用go get下载。例如:

$ go install golang.org/dl/go1.17beta1@latest
$ go1.17beta1 download
$ go1.17beta1 test your/favorite/package

完整的预发布版本列表可在https://pkg.go.dev/golang.org/dl页面查看。

2. Beta公测版

Beta公测版是对新版本的早期观察。它们有时会有已知的错误。严重的错误是不常见的,但也不是没有。新的API可能仍然会因反馈而改变。你不应该在生产中使用Beta版。

以下是你在处理Go Beta版时应该做的事情,我们按简单快速到相当复杂进行排序。即使您只做了第一项或第二项,也是很有帮助的!

  • 在本地运行你的测试。调查并报告任何新的故障[7]

  • 阅读版本发布说明[8]。如果你看到任何有关该版本的异常情况,请提交一个issue[9]来讨论。

  • 在本地运行你的基准测试。调查并报告性能退步情况。

  • 如果你有一个暂存服务器,CI,或者任何你可以运行更多测试的地方,请在那里使用预发布版本,并提交你遇到的任何问题。

  • 查看API的差异[10]。如果你看到任何有关的问题,请提交一个issue来讨论。

3. 发布候选版本(Release candidiates, RC)

候选版本通常没有已知的严重bug。(Google在他们的真实服务器上测试候选版本。) API应该是稳定的。

处理Go RC版本的事情和处理beta版本的事情是一样的。只是如果你有足够的带宽和手段,你可能想尝试在生产中运行它,在一个小的服务器子集上。

4. 我没有那么多时间

有一到两个Beta版和一到两个RC版的情况并不罕见。那将需要大量的测试。如果你只有少量的时间来帮助Go实现无错误的发布,那该怎么办?

如果你只能做一件事,用第一个beta版在本地运行你的测试。这只需要几分钟的时间。错误越早被发现,它们就越有可能被修复,而且修复得很好。

如果你能多做一点,请尽早阅读版本发布说明[11]。无论如何,你都可能会在发布时阅读它们。通过提早阅读,你仍然有机会修复你看到的任何问题。

5. 为什么要测试Beta版和RC版?

编程语言,以及它们的工具和社区,是一种复杂的存在。人们以奇妙的、不寻常的方式使用它们。而编程语言也是软件,你知道这意味着什么。尽管Go的贡献者们尽了最大的努力,Go问题追踪器中还是有不少沮丧的程序员,他们发现新版本对他们不适用时已经太晚了:一个微妙的行为变化,一个罕见的性能退步,一个不太合适的API设计。

一旦版本发布,修复这些问题就变得更加困难,有时甚至不可能。安全问题会得到及时的修复,但其他问题,即使是关键性的bug,也会在一个月后的下一个版本中才会得到修复。非关键性的bug要到下一个Go大版本才会被修复,最早也要6个月后。而且在很多情况下,由于Go 1的兼容性承诺[12],我们可能会被永远困在这个问题上。

Beta版和RC是我们Go社区发现问题的唯一的机会,我们还有时间去真正解决它们。

6. 奖励

考虑将Go的"tip"版本添加到你的CI中吧。这对尽早发现问题特别有帮助,但它确实增加了相当多的工作。在提交问题之前,你需要检查Go官方构建仪表板[13]并进行一些调查,以确定发现的问题是否值得报告。


“Gopher部落”知识星球正式转正(从试运营星球变成了正式星球)!“gopher部落”旨在打造一个精品Go学习和进阶社群!高品质首发Go技术文章,“三天”首发阅读权,每年两期Go语言发展现状分析,每天提前1小时阅读到新鲜的Gopher日报,网课、技术专栏、图书内容前瞻,六小时内必答保证等满足你关于Go语言生态的所有需求!部落目前虽小,但持续力很强。在2021年上半年,部落将策划两个专题系列分享,并且是部落独享哦:

  • Go技术书籍的书摘和读书体会系列

  • Go与eBPF系列

欢迎大家加入!

Go技术专栏“改善Go语⾔编程质量的50个有效实践[14]”正在慕课网火热热销中!本专栏主要满足广大gopher关于Go语言进阶的需求,围绕如何写出地道且高质量Go代码给出50条有效实践建议,上线后收到一致好评!欢迎大家订 阅!


我的网课“Kubernetes实战:高可用集群搭建、配置、运维与应用[15]”在慕课网热卖中,欢迎小伙伴们订阅学习!


Gopher Daily(Gopher每日新闻)归档仓库 - https://github.com/bigwhite/gopherdaily

我的联系方式:

  • 微博:https://weibo.com/bigwhite20xx

  • 微信公众号:iamtonybai

  • 博客:tonybai.com

  • github: https://github.com/bigwhite

  • “Gopher部落”知识星球:https://public.zsxq.com/groups/51284458844544

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

参考资料

[1] 

RC2版本: https://golang.google.cn/dl/go1.17rc2.linux-amd64.tar.gz

[2] 

Go语言项目官方issue列表: https://github.com/golang/go/issues

[3] 

Josh Bleecher Snyder: https://github.com/josharian

[4] 

《How to test a Go beta or RC》: https://commaok.xyz/post/test-beta/

[5] 

Go发布周期: https://github.com/golang/go/wiki/Go-Release-Cycle

[6] 

Go团队希望全世界的Go开发者们帮助测试Go的Beta公测版和RC发布候选版: https://groups.google.com/forum/#!forum/golang-announce

[7] 

报告任何新的故障: https://golang.org/issue/new

[8] 

版本发布说明: https://tip.golang.org/doc/go1.17

[9] 

提交一个issue: https://golang.org/issue/new

[10] 

API的差异: https://github.com/golang/go/blob/master/api/go1.17.txt

[11] 

版本发布说明: https://tip.golang.org/doc/go1.17

[12] 

Go 1的兼容性承诺: https://tip.golang.org/doc/go1compat

[13] 

Go官方构建仪表板: https://build.golang.org/

[14] 

改善Go语⾔编程质量的50个有效实践: https://www.imooc.com/read/87

[15] 

Kubernetes实战:高可用集群搭建、配置、运维与应用: https://coding.imooc.com/class/284.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bigwhite20xx/article/details/119620759

智能推荐

VIC水文模型入门攻略(中)VIC的数据和输入文件准备_vic global parameter file-程序员宅基地

文章浏览阅读2.7w次,点赞39次,收藏107次。更正:上篇末尾关于运行汇流程序的部分,在“STEHE.stnloc”文件中需要修改的部分应改为NONE而非none。希望没有太多人因此造成困扰…VIC的输入文件都有啥其实VIC及其汇流程序真正的交互方式都是通过读入文件完成的。它们都要求有一个文件存储各种设定参数,包括运行的日期时间、运行模式以及所需的各种数据文件的位置。 上一篇中启动VIC的命令./vicNl -g /home/.../globa_vic global parameter file

windows 远程桌面研究-程序员宅基地

文章浏览阅读468次。最近因为一个监控相关的项目,深入研究了一下 windows 的 远程桌面的相关知识。1. 如何让关闭了远程桌面连接的用户,对应的 session 立即退出 windows server。大家使用 mstsc.exe 远程桌面登录windows server时,退出时,99.99%的人会直接关闭 mstsc.exe 窗口,而不会点击开始--->退出。导致的问题是,登录用户已经提出了,但..._修改windows maxdisconnection time为默认值

计算广告学_高h之交换小敏系列-程序员宅基地

文章浏览阅读3.4w次,点赞2次,收藏17次。Table of Contents1. 在线广告综述1.1. 广告的定义与目的1.2. 在线广告类型1.3. 在线广告简史1.4. 广告有效性原理1.5. 在线广告相关行业协会2. 计算广告基础2.1. 在线广告的技术特点2.2. 计算广告核心问题2.2.1. 在线广告技术课题2.2.2. 在线广告计费模式2.3. 计算广告系统架构2.4. 基础知识准备_高h之交换小敏系列

docker命令大全(新手必备)_docker 命令行-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏81次。镜像操作docker images #查看本地所有镜像docker load -i nginx.tar #导入nginx镜像docker rmi $(docker images -f "dangling=true" -q) #删除悬浮镜像docker system prune -f #删除停止的容器、至少一个容器未使用的所有网络、悬浮镜像、悬浮构建缓存;-f表示强制删除docker system prune -a #在上述基础上再删除没有任何容器使用的镜像、构建缓存..._docker 命令行

js 匹配手机号正则表达式_js手机号正则过滤-程序员宅基地

文章浏览阅读1.2k次。var phoneRe = /^0?(13[0-9]|14[579]|15[012356789]|16[6]|17[013678]|18[0-9]|19[89]|14[57])[0-9]{8}$/;$(“#tel”).blur(function() { 鼠标里失去焦点的操作var _telp = $("#tel").val();i_js手机号正则过滤

Seasar2 框架学习笔记_selectbysqlfile-程序员宅基地

文章浏览阅读9.6k次,点赞6次,收藏26次。基本Seasar2 Web应用工程结构配置文件convention.dicon中配置src目录中的RootPackage包,名字自定义。 Passbook系统配置了两个RootPackageName "jp.bric.pas_selectbysqlfile

随便推点

Ubuntu安装BeeGFS_ubuntu roce网络安装beegfs-程序员宅基地

文章浏览阅读1.2k次。http://blog.sina.com.cn/s/blog_7bd08a4f0102x4q6.html_ubuntu roce网络安装beegfs

QTextEdit中插入特殊符号_qtextedit objectreplacementcharacter-程序员宅基地

文章浏览阅读2k次。Qt允许通过用QTextCharFormat注册一个自定义对象类型来将自定义文本对象插入到文档中。还必须为该类型实现一个QTextObjectInterface,并在文档的QAbstractTextDocumentLayout中注册。当渲染QTextDocument时遇到该对象类型时,接口的intrinsicSize()和drawObject()函数会被调用。主要步骤如下:1、选择一个对象类型。objectType是一个整数,其值大于或等于QTextFormat::UserObject。2、创建一_qtextedit objectreplacementcharacter

内存加载图片压缩 BitmapFactory.Options_android bitmapfactory.options 压缩图片-程序员宅基地

文章浏览阅读397次。/***imgUrl 要压缩的力图片地址**/public Bitmap CompressedImage(String imgUrl) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; //为true时只加载图片的宽高,不_android bitmapfactory.options 压缩图片

【转载】Citrix Systems产品安全漏洞最新POC---CVE-2020-8193, CVE-2020-8195 and CVE-2020-8196 poc_cve-2020-8195复现-程序员宅基地

文章浏览阅读1.5k次。Citrix 简介Citrix Systems Citrix Application Delivery Controller(ADC)等都是美国思杰系统(Citrix Systems)公司的产品。Citrix Application Delivery Controller是一款应用交付控制器。Citrix Systems Gateway(Citrix Systems NetScaler Gateway)是一套安全的远程接入解决方案。Citrix System SDWAN WAN-OP是一款SD-WAN(虚_cve-2020-8195复现

Android 动态添加textView或EditText,并获取输入数据_textviews = new textvie textviews[0]-程序员宅基地

文章浏览阅读3k次。Android 动态添加textView或EditText,并获取输入数据menglongma 问题引入 Android开发中往往需要动态创建诺干个同类控件,或对他们设置点击事件或批量获取他们的值,下面提供我在开发中所使用的一种参考。 动态创建多个textView,这里描述一个页面取名为:test.xml,现在在Id为MyTable的控件里插入多个textview控件 <?xml version="1.0" encoding="utf-8"?><Linear._textviews = new textvie textviews[0]

程序设计原则——局部性原理_程序的局部性原理实验分析 for(i=0;i<1024;i++) for(j=0;j<1024;j+-程序员宅基地

文章浏览阅读5k次。存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构:CPU寄存器-》高速缓冲存储器-》主存储器-》磁盘-》通过网络连接的其他存储设备。SRAM静态,一般作为高速缓冲存储器。DRAM动态,一般作为大容量的主存储器每次CPU和主存之间的数据传送都是通过一些列的步骤完成的,这些步骤称为总线事务。读事务从主存传送数据到CPU,写事务从CPU传送数据到主存。局部性:一般较好的程序都有较好的局部性,也就是说,它们倾向于引用的数据项邻近于其他最近引用过的数据项,或者邻近于最近自我引用过的数据项。对应的就是空_程序的局部性原理实验分析 for(i=0;i<1024;i++) for(j=0;j<1024;j++) test[j][i]=