[240816] 【超级大牛】kovidgoyal:calibre 和 kitty 的作者 | Go 发布 1.23.0 版本

125 阅读4分钟

【超级大牛】kovidgoyal:calibre 和 kitty 的作者

kovidgoyal.png

calibre

calibre 是由 github.com/kovidgoyal 使用 C 和 Python 开发的跨平台电子书管理器,能够查看、转换、分类主流的电子书格式,支持连接多种电子书阅读器。 它的功能丰富且强大,如能从网上获取书籍的元数据、支持将电子书从一种格式转换为另一种格式、内置电子书阅读器并支持多种格式的阅读等。

  • calibre 源代码 - calibre 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 calibre 和参与社区贡献。
  • calibre 用户手册 - calibre 官方提供的用户手册,支持多国语言。

kitty

kitty 是由 github.com/kovidgoyal 使用 C、Python 和 Go 混合编写的终端模拟器,能提供各种现代化功能和高级特性,比如 OpenGL 渲染、Unicode 支持、True Color、标签页等。该项目分为 kittykitten 两个部分,其中 kitty 是终端模拟器应用程序(项目的核心),kitten 是用于扩展 kitty 功能的脚本和工具集。

kitty 的设计理念是为用户提供高性能、用户友好、易于扩展的终端模拟器。在实现方面,它采用 C 处理性能敏感部分,使用 Python 实现 UI 的扩展性和灵活性,利用 Go 开发适用命令行的 kittens。它不依赖于任何大型且复杂的 UI 工具包,仅使用 OpenGL 来渲染所有内容。

  • kitty 源代码 - kitty 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 kitty 和参与社区贡献。

来源:
kovidgoyal.net/

Go 发布 1.23.0 版本

Go 1.23 版本更新说明

主要变化:

  • 语言特性:
    • “range-over-func” 实验正式成为语言特性,for-range 循环支持迭代器函数。
    • 预览支持泛型类型别名,需要设置 GOEXPERIMENT=aliastypeparams 才能使用。
  • 工具链:
    • 引入 Go telemetry 系统,默认收集本地统计数据,用户可以选择上传匿名数据帮助改进 Go 工具链。
    • go 命令更新:
      • GOROOT_FINAL 环境变量失效。
      • go env 命令新增 -changed 参数,仅显示与默认值不同的设置。
      • go mod tidy 命令新增 -diff 参数,以 diff 格式显示更新内容。
      • go list -m -json 命令新增 Sum 和 GoModSum 字段。
      • go.mod 和 go.work 文件支持 godebug 指令,用于设置 GODEBUG。
    • go vet 子命令新增 stdversion 分析器,用于标记不兼容 Go 版本的符号引用。
    • cmd/cgo 支持 -ldflags 参数,用于传递参数给 C 链接器。
    • trace 工具增强对错误 trace 文件的处理能力。
  • 运行时:
    • 优化 panic 和错误信息的输出格式,方便区分错误信息和堆栈跟踪。
  • 编译器:
    • 显著降低使用 Profile Guided Optimization (PGO) 时的编译时间开销。
    • 编译器优化局部变量的堆栈分配,减少 Go 应用的堆栈使用。
    • 386 和 amd64 平台上,编译器利用 PGO 信息优化循环中热块的对齐,提升性能。
  • 链接器:
    • 禁止使用 //go:linkname 指令引用标准库中未标记 //go:linkname 的内部符号。
    • 新增 -checklinkname=0 参数,用于调试和实验目的,禁用上述检查。
    • 新增 -bindnow 参数,用于在构建动态链接 ELF 文件时启用立即函数绑定。

标准库:

  • 重要更新:
    • time.Timer 和 time.Ticker 的实现发生两项重要变化:
      • 未被程序引用的 Timer 和 Ticker 立即被垃圾回收,即使 Stop 方法未被调用。
      • Timer 和 Ticker 关联的计时器通道现在为无缓冲,容量为 0,保证 Reset 或 Stop 方法调用后的行为一致性。
  • 新增包:
    • unique 包提供值规范化功能(类似于“字符串驻留”或“哈希一致性”)。
    • iter 包提供处理用户定义迭代器的基本定义。
    • structs 包提供用于修改结构体类型属性的结构体字段类型,例如内存布局。
  • 其他更新:
    • archive/tar、crypto/tls、crypto/x509、database/sql、debug/elf、encoding/binary、go/ast、go/types、math/rand/v2、net、net/http、net/http/httptest、net/netip、os、path/filepath、reflect、runtime/debug、runtime/pprof、runtime/trace、slices、sync、sync/atomic、syscall、testing/fstest、text/template、time、unicode/utf16 等包都有更新和改进。

平台支持:

  • Darwin: 要求 macOS 11 Big Sur 或更高版本。
  • Linux: Go 1.23 是最后一个支持 Linux 内核 2.6.32 或更高版本的发行版。
  • OpenBSD: 新增对 64 位 RISC-V 的实验性支持。
  • ARM64: 引入 GOARM64 环境变量,用于指定编译时的最低目标 ARM64 架构版本。
  • RISC-V: 引入 GORISCV64 环境变量,用于选择 RISC-V 用户模式应用程序配置文件。
  • Wasm: go_wasip1_wasm_exec 脚本不再支持 wasmtime 14.0.0 之前的版本。

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




更多内容请查阅 : blog-240816


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

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