GoFrame v2.8.0 发布:更高效、更强大,兼容性与性能全面提升

johng · · 34 次点击 · · 开始浏览    

我们很高兴宣布`GoFrame`迎来了`v2.8.0`正式版本的发布! 本次更新带来了重要的改进和新特性,使`GoFrame`在开发效率、执行性能、稳定性和扩展性方面取得了显著提升。 版本亮点[​](about:blank#%E7%89%88%E6%9C%AC%E4%BA%AE%E7%82%B9 "版本亮点的直接链接") --------------------------------------------------------------------- 1. **兼容性更新** * `GoFrame v2.8.0`要求最低 `Golang` 版本为 `1.20`,提供更高效的性能和稳定性。 * `container/gring` 组件已被废弃,同时 `contrib/trace/jaeger` 组件从源码仓库移除,简化了依赖管理。 2. **组件改进** * `database/gdb`模块现在支持`created_at/updated_at/deleted_at`整型时间戳字段、`unix socket`连接、`time/year` 字段类型,并增加了 `Model.Exist` 方法,显著提升了数据库操作的灵活性和效率。 * `util/gconv`组件使用类型缓存提升转换性能,针对复杂数据类型的转换性能提升约`300%`。 * `net/ghttp` 和 `net/gudp` 网络服务组件优化了参数配置和请求处理逻辑,为用户提供更简洁的开发体验。 3. **开发工具升级** * `gf init` 命令支持生成单仓多应用项目结构。 * `gf gen ctrl`、`gf gen dao` 和 `gf run` 等命令的优化,进一步增强了代码生成的灵活性与执行效率,简化了项目搭建流程。 4. **社区组件支持** * 为 `contrib/drivers/mssql` 和 `contrib/registry/etcd` 等多个社区驱动增加了对最新功能的支持,提升了与外部服务集成的便捷性。 未来展望[​](about:blank#%E6%9C%AA%E6%9D%A5%E5%B1%95%E6%9C%9B "未来展望的直接链接") --------------------------------------------------------------------- `GoFrame`团队感谢每一位社区用户的支持。 我们将继续倾听社区反馈,为用户提供更丰富的功能和更高效的开发支持。 特别致谢[​](about:blank#%E7%89%B9%E5%88%AB%E8%87%B4%E8%B0%A2 "特别致谢的直接链接") --------------------------------------------------------------------- 💖💖💖 感谢所有参与本次版本的贡献开发者们 💖💖💖 ![alt text](https://goframe.org/assets/images/QQ_1731813654454-08345d440004047096b61b5037ded944.png) 主要内容 ==== 本次版本变更内容较多,以下为本次版本的主要内容,详细的`Change Log`请参考: [https://github.com/gogf/gf/releases/tag/v2.8.0](https://github.com/gogf/gf/releases/tag/v2.8.0) 完整的代码变更请参考:[https://github.com/gogf/gf/compare/v2.7.0...v2.8.0](https://github.com/gogf/gf/compare/v2.7.0...v2.8.0) 兼容提示[​](about:blank#%E5%85%BC%E5%AE%B9%E6%8F%90%E7%A4%BA "兼容提示的直接链接") --------------------------------------------------------------------- 1. 最低`Golang`版本要求从`1.18`调整为了`1.20`。 2. 组件`container/gring`标记废弃,未来不再继续维护。 3. 组件`contrib/trace/jaeger`已从源码仓库删除。 4. 组件`encoding/gjson`的`Load*`方法参数,从`interface{}`调整为了`[]byte`参数,以提高性能。 5. 组件`net/ghttp`的`StartPProfServer`方法端口参数从`port int`调整为了`address string`以提高灵活性。 6. 组件`net/gudp`重构,个别方法参数有调整:[UDP组件](https://goframe.org/docs/components/network-gudp) 组件改进[​](about:blank#%E7%BB%84%E4%BB%B6%E6%94%B9%E8%BF%9B "组件改进的直接链接") --------------------------------------------------------------------- 1. `database/gdb` * 时间维护特性增加对整型字段的支持,当`created_at/updated_at/deleted_at`为整型字段时,将使用时间戳更新该字段,详见:[ORM链式操作-时间维护](https://goframe.org/docs/core/gdb-chaining-soft-time) * 新增`Model.Exist`方法,用于判断满足所给条件的数据是否存在:[ORM查询-Exist](https://goframe.org/docs/core/gdb-chaining-query-exist) * 新增对数据库`time/year`字段类型的支持:[ORM高级特性-类型识别](https://goframe.org/docs/core/gdb-senior-type-recognization) * 新增`OrderRandomFunction`接口方法,并为常用数据库实现并支持了`OrderRandom`排序方法。 * 改进`Model.Fields`方法,增加对`gdb.Raw`类型参数的支持:[ORM链式操作-字段获取](https://goframe.org/docs/core/gdb-chaining-fields-retrieving) * 改进`With`特性中的`orm`标签,增加对`unscoped`的支持:[模型关联-静态关联-With特性](https://goframe.org/docs/core/gdb-chaining-relation-with) * 配置文件增加对`unix socket`本地数据库服务连接的支持。 * 去掉链路跟踪`trace`信息中的`sql`语句,以减少`trace`包大小。 * 改进查询结果到`struct`的转换性能。 2. `net/ghttp` * 取消了规范路由注册中对输入输出对象的`XxxReq/XxxRes`命名限制。 * `StartPProfServer`的端口参数从`port int`调整为了`address string`以提高灵活性。 * 去掉了链路跟踪`trace`信息中的请求/返回数据内容,以减少`trace`包大小。 * 修复`/debug/admin/shutdown`接口关闭`Server`时的优雅关闭问题。 3. `net/goai` * 允许在请求/返回结构体属性中通过`type`标签指定参数的类型。 4. `container/gtree` * 使用第三方数据结构组件`github.com/emirpasic/gods`重构`gtree`实现,以提高可扩展性,利于维护。 5. `encoding/gjson` * `Load*`方法参数,从`interface{}`调整为了`[]byte`参数,以提高性能。 6. `os/gcron` * 新增`StopGracefully`方法,用于等待当前正在执行的定时任务完成后再停止定时任务:[定时任务-基本使用](https://goframe.org/docs/components/os-gcron-example) 7. `os/gfsnotify` * 改进文件递归监听实现,当监听目录时,如果后续在目录中创建子级目录,或者子级目录的子级目录,以此类推,也将会被递归监听:[文件监控-gfsnotify](https://goframe.org/docs/components/os-gfsnotify) 8. `test/gtest` * 改进`AssertIN/AssertNI`断言方法,增加对字符串子串的包含断言支持。 9. `util/gvalid` * 新增`required-if-all`校验规则,所有指定的参数和对应的数值相等时,该参数为必须参数:[数据校验-校验规则](https://goframe.org/docs/core/gvalid-rules) * 改进`phone`校验规则,增加对`171`系列手机号码的验证支持。 10. `util/gconv` * 使用类型缓存提升转换性能,针对复杂数据类型的转换性能提升约`300%`。 社区组件[​](about:blank#%E7%A4%BE%E5%8C%BA%E7%BB%84%E4%BB%B6 "社区组件的直接链接") --------------------------------------------------------------------- 1. `drivers/mssql` * 基础`driver`从`github.com/denisenkom/go-mssqldb`改为了官方组件`github.com/microsoft/go-mssqldb`。 2. `contrib/drivers/pgsql` * 增加`InsertIgnore`操作支持。 * 增加对`Golang`数组类型到数据库数组字段类型操作的支持。 3. `contrib/registry/etcd` * 增加`DialTimeout`及`AutoSyncInterval`配置项。 4. `contrib/registry/nacos` * 使用官方组件依赖`github.com/nacos-group/nacos-sdk-go/v2`替换掉`github.com/joy999/nacos-sdk-go` 5. `contrib/rpc/grpcx` * 去掉了链路跟踪`trace`信息中的请求/返回数据内容,以减少`trace`包大小。 * 由于`grpc`组件已启用`grpc.Dial`方法,这里使用`grpc.NewClient`替换掉了`grpc.Dial`。 6. `contrib/sdk/httpclient` * 新增`Handler`接口,允许使用者自定义处理`HTTP Client`返回数据。 开发工具[​](about:blank#%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7 "开发工具的直接链接") --------------------------------------------------------------------- 1. 改进`gf init`命令,新增`-a/monoApp`选项,用于在大仓下新创建应用项目模板:[项目创建-init](https://goframe.org/docs/cli/init) 2. 改进`gf pack`命令,新增对命令参数选项的配置文件支持,配置项路径为`gfcli.pack`。 3. 改进`gf tpl`命令,新增对命令参数选项的配置文件支持,配置项路径为`gfcli.tpl.parse`。 4. 改进`gf gen ctrl`命令,使用`AST`重新实现解析逻辑,提高生成`Go`代码文件内容的准确性,并提升该功能的可扩展性。 5. 改进`gf run`命令: * 新增对命令参数选项的配置文件支持,配置项路径为`gfcli.run`。 * 在临时的子进程结束时,如新进程替换老进程时,自动删除临时的老进程二进制文件。 6. 改进`gf gen dao`命令: * 增加`field mapping`特性,支持对指定字段配置生成的`Golang`数据类型:[数据规范-gen dao](https://goframe.org/docs/cli/gen-dao) * 整型字段如果长度为`1`,例如:`bit(1)/tinyint(1)/int(1)`,那么自动识别生成为`bool`类型的`Golang`数据类型。 * 自动读取生成代码文件的目录名称,作为生成的`dao/do/entity`文件的包名称。 * 由于`dm`数据库限制了`cli`支持的平台,因此`cli`去掉了对`dm`数据库的默认支持,若有需要请手动修改源码安装`cli`。 * 修复传递`link`参数和配置文件同时存在的场景下,`link`参数失效问题。 本文转自 [https://goframe.org/release/v2.8](https://goframe.org/release/v2.8),如有侵权,请联系删除。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

34 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传