[250219] Go 1.24 发布 | KDE Plasma 6.3 发布:无与伦比的桌面体验!

177 阅读7分钟

Go 1.24 发布

Go 1.24 版本于近日已发布,该版本主要在工具链、运行时和库的实现方面进行了改进,并继续保持 Go 1 的兼容性承诺。几乎所有 Go 程序都能像以前一样继续编译和运行。

语言变化

  • 完全支持泛型类型别名:类型别名现在可以像定义类型一样进行参数化。

工具

  • Go 命令:
    • 模块现在可以使用 go.mod 中的 tool 指令来跟踪可执行依赖项,不再需要之前的“tools.go”变通方法。
    • go tool 命令现在可以运行这些工具以及 Go 发行版附带的工具。
    • go get 的新 -tool 标志会在添加 require 指令的同时,为指定的包添加 tool 指令到当前模块。
    • 新的 tool 元模式可以引用当前模块中的所有工具,可用于使用 go get tool 升级所有工具或使用 go install tool 将它们安装到 GOBIN 目录中。
    • go run 创建的可执行文件和 go tool 的新行为现在缓存在 Go 构建缓存中,加快了重复执行速度。
    • go buildgo install 命令现在接受 -json 标志,以 JSON 格式报告构建输出和失败。
    • go test -json 现在以 JSON 格式报告构建输出和失败,并与测试结果 JSON 交错。
    • 新的 GOAUTH 环境变量提供了一种灵活的方式来验证私有模块获取。
    • go build 命令现在根据版本控制系统标签和/或提交,在编译的二进制文件中设置主模块的版本。
    • 新的 GODEBUG 设置 toolchaintrace=1 可用于跟踪 go 命令的工具链选择过程。
  • Cgo:
    • 支持新的 C 函数注释以提高运行时性能:#cgo noescape#cgo nocallback
    • 改进了对 C 函数多个不兼容声明的错误检测。
  • Objdump:
    • 现在支持在 64 位 LoongArch、RISC-V 和 S390X 上进行反汇编。
  • Vet:
    • 新的 tests 分析器报告测试包中测试、模糊测试、基准测试和示例声明中的常见错误。
    • printf 分析器现在会报告 fmt.Printf(s) 形式的调用诊断,其中 s 是非常量格式字符串,没有其他参数。
    • buildtag 分析器现在会在 //go:build 指令中存在无效的 Go 主要版本构建约束时报告诊断。
    • copylock 分析器现在会在 3 子句 for 循环中声明的变量包含 sync.Locker(例如 sync.Mutex)时报告诊断。

运行时

  • 多项性能改进将 CPU 开销平均降低了 2-3%。
  • 基于 Swiss Tables 的新的内置 map 实现。
  • 更高效的小对象内存分配。
  • 新的运行时内部互斥锁实现。

编译器

  • 禁止使用 cgo 生成的接收器类型定义新方法,即使通过别名类型也不允许。

链接器

  • 现在默认在 ELF 平台上生成 GNU 构建 ID,在 macOS 上生成 UUID。

标准库

  • os:
    新增 os.Root 类型和 os.OpenRoot 函数,用于在特定目录内执行文件系统操作,限制了文件系统访问范围。
  • testing:
    新增 testing.B.Loop 方法,用于更快速、更不容易出错的基准测试迭代。
  • runtime:
    新增 runtime.AddCleanup 函数,提供比 runtime.SetFinalizer 更灵活、更高效、更不容易出错的终结机制。
  • weak:
    新增 weak 包,提供弱指针功能。
  • crypto:
    新增 crypto/mlkemcrypto/hkdfcrypto/pbkdf2crypto/sha3 包,实现了多种加密算法和密钥派生函数。
  • FIPS 140-3 合规性:
    引入新的机制以促进 FIPS 140-3 合规性。
  • testing/synctest (实验性):
    新增 testing/synctest 包,用于测试并发代码。
  • 其他标准库的改动,包括 archivebytescryptodebug/elfencodingencoding/jsongo/typeshashlog/slogmathnetnet/httpnet/netipnet/urlos/userregexpruntimestringssynctestingtext/templatetime 等包的更新和改进。

平台支持

  • Linux:
    要求 Linux 内核版本 3.2 或更高版本。
  • Darwin:
    Go 1.24 是将在 macOS 11 Big Sur 上运行的最后一个版本。Go 1.25 将需要 macOS 12 Monterey 或更高版本。
  • WebAssembly:
    添加了 go:wasmexport 编译器指令,用于将函数导出到 WebAssembly 主机。
  • Windows:
    32 位 windows/arm 端口被标记为损坏。

Go 1.24 版本带来了性能提升、新的加密支持、改进的工具和标准库功能,为开发者提供了更高效、更安全的开发体验。 值得关注的是泛型类型别名、新的 map 实现以及并发测试包 synctest 等特性,它们将进一步提升 Go 语言的表达能力和开发效率。

来源:
go.dev/doc/go1.24

KDE Plasma 6.3 发布:无与伦比的桌面体验!

KDE 社区正式发布了 Plasma 6.3,经过一年的打磨,解决了主要版本更新带来的初期问题,Plasma 6.3 更加完善,修复了大量错误并添加了新功能,致力于为每个人打造最佳桌面环境!

亮点功能:

  • 面板克隆:
    一键复制你的桌面设置。
  • KWin 缩放:
    精确定位单个像素,对于艺术家和设计师非常实用。
  • 绘图板支持:
    微调你的艺术硬件,提供更精准的压感和倾斜控制,自定义压感曲线和按钮映射等。

主要改进:

数字艺术:
Plasma 6.3 致力于成为最佳的创意平台,对“系统设置”中的“绘图板”页面进行了全面改进,新增了多个配置选项,方便艺术家优化和自定义绘图板。

图形:
大幅改进了分数缩放的工作方式,KWin 现在会更努力地将事物捕捉到屏幕的像素网格,从而显著减少模糊和视觉间隙,生成更清晰锐利的图像。 KWin 的缩放效果也切换到清晰的像素级完美表示,并 叠加网格,方便艺术家和设计师查看单个像素。此外,屏幕颜色在使用“夜灯”功能时更加准确,并且 KWin 提供了选择屏幕颜色精度的选项。桌面上的小部件也变得略微半透明,增添了时尚感。

硬件监控:
系统监视器可以更准确地监控 CPU 使用情况,并且消耗更少的 CPU 资源。在 FreeBSD 上,系统监视器应用和小部件现在也可以收集 GPU 统计信息。信息中心提供更多信息,包括所有 GPU 的数据以及电池的循环计数。打印机小部件可以直接显示每个打印机的打印队列,并在打印时显示旋转动画。新增了一个后台服务,可以检测内核何时因内存不足而终止应用程序,并提供相应的通知和建议。

工具:

  • KRunner:
    可以使用 Page Up/Page Down 和 Ctrl+Up/Ctrl+Down 组合键在类别之间跳转。
  • Discover:
    突出显示更新后权限将发生变化的沙盒应用程序,并显示应用程序是否由其开发者直接打包或由受信任的第三方验证。
  • 天气小部件:
    支持使用 Deutscher Wetterdienst 作为天气数据源。

可用性:
可以配置笔记本电脑的内置触摸板自动关闭,以避免干扰打字。设置网络热点时,Plasma 会生成随机密码。启动器中添加了“帮助”类别,并将“设置”类别合并到“系统”类别中。默认的 Kickoff 启动器菜单现在仅在单击时切换类别,但也保留了悬停切换的行为。桌面上下文菜单中为符号链接添加了“显示目标”项。数字时钟小部件在事件超过五个的日子里会显示所有事件。注销屏幕现在会指示下次重启是否进入引导加载程序菜单。“请勿打扰”模式下,退出该模式后会显示错过的通知数量,而不是一次性发送所有通知。从部分位于其他窗口下方的窗口中拖动文件时,它不再会跳到顶部。

自定义:
可以克隆面板,并使用脚本更改面板的不透明度和显示的屏幕。Kickoff 的类别侧边栏中的符号图标可以自定义。在 Kickoff 中的“编辑应用程序...”菜单项编辑应用程序的桌面文件会直接在编辑器中打开该应用程序。小部件浏览器允许删除所有小部件实例,包括丢失的或仅存在于未连接屏幕上的小部件。

来源:
kde.org/announcemen…




更多内容请查阅 : blog-250219


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法