Go 1.18 版本正式发布,原生支持 fuzzing

2781

Go 1.18 正式发布了,这是一个包含大量新功能的版本,同时此版本也是Go语言“里程碑式”的更新,引入了对模糊测试的原生支持,Go语言是第一个这样做的主流编程语言。

Go 1.18新版本的重大特性:

泛型

泛型一直是开发者强烈希望支持的特性,在1.18版本中支持使用一些泛型的代码,不过Go语言团队也坦言不排除会在以后的版本中中断支持。

  • 函数和类型声明的语法,支持类型参数。
  • 参数化函数和类型可以通过在方括号中列出类型参数来实例化。
  • 新标记~已添加到操作符和标点符号中。
  • 接口类型的语法允许嵌入任意类型以及 union 和 ~T 类型元素,但接口只能用作类型约束。
  • 预声明标识符 any是空接口的别名,可以用来代替 interface{}

模糊测试

Go 1.18 支持 fuzzing(模糊测试),这使得Go代码增加了一层额外的安全性。但是,模糊测试会消耗大量的内存,甚至可能会影响到机器的性能。

编译器

编译器的类型检查器支持泛型,但是也正是因为这样,Go 1.18 的编译速度可能比 Go 1.17 的编译速度慢大约 15%,不过Go语言团队表示预计将在Go 1.19版本中会专注于提高编译器的速度。