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