来源:开源中国 时间:2023-01-18 14:23:32
(相关资料图)
大家好啊!本次版本是2022
年最后一个版本,也是2023
年的第一个版本。该版本主要的目标:
go-redis
耦合的问题,使得主框架更加轻量,对工具化使用框架的场景更加友好。 通过开发工具提供升级 主框架、社区组件、开发工具 的命令,提高框架整体易用性,并解决常见的社区组件与主框架版本不一致问题。 进一步按照接口与实现分离设计,通过社区组件方式,完善注册发现、配置管理对常用服务的对接,为下一步发布微服务组件做准备。 redis
组件从主框架中解耦,作为社区组件提供。原有主框架增加redis
接口定义,社区组件redis
提供具体的接口实现。因此,请注意,主框架gredis
组件的使用方式发生了一些变更,在依赖redis
的项目中需要引入社区组件redis
实现,否则方法执行将会返回错误。保留兼容原有基础的Do/DoVar
方法,并增加了100+
项常用redis
操作方法:NoSQL Redis 配置管理及注册发现组件新增常用服务接口实现: 配置管理(nacos
):https://github.com/gogf/gf/tree/master/contrib/config/nacos 注册发现(zookeeper
):https://github.com/gogf/gf/tree/master/contrib/registry/zookeeper 新增工具命令gf up
,用于便捷的框架升级操作,具体介绍请查看:框架升级-up nacos
接口实现:https://github.com/gogf/gf/tree/master/contrib/config/nacos zookeeper
接口实现:https://github.com/gogf/gf/tree/master/contrib/registry/zookeeper clickhouse
在配置Charset
参数时的报错问题。 改进clickhouse
获取数据表结构结果,返回的Index
顺序统一从0
开始。 改进oracle
表结构获取SQL,以支持float64
数据类型。 修复pgsql
对接口CheckLocalTypeForField
的实现,名称被错误定义为了CheckLocalTypeForValue
,造成生成dao
代码文件时的属性字段类型错误。 改进pgsql
增加对schema
的支持,由于shcema
在大部分数据库服务中代表"数据库名称",并且也为了兼容旧版本,因此增加Namespace
配置参数用以表示pgsql
的Schema
,而原有的Schema
对象代表pgsql
的catalog
。 redis
社区组件,实现gredis
相关接口:https://github.com/gogf/gf/tree/master/contrib/nosql/redis gdb
为提高扩展性,TX
事务对象改为了接口定义,原有的TX
对象改为了TXCore
方便自定义接口实现对象的嵌套:ORM事务处理 增加Namespce
配置项,用以支持个别数据库服务Catalog&Schema
区分的问题,原有的Schema
继续代表数据库名称,而新增的NameSpace
代表个别数据库服务的Schema
配置:ORM使用配置 改进数据库名称配置,增加对中文数据库名称的支持。 执行SQL
日志中增加当前执行的数据库名称打印。 修复Count
方法的缓存问题。 gredis
新增redis
社区组件,将耦合较重的redis
组件从主框架中解耦,作为社区组件提供。原有主框架增加redis
接口定义,而社区组件redis
提供具体的接口实现。因此,请注意,主框架gredis
组件的使用方式发生了一些变更,在依赖redis
的项目中需要引入社区组件redis
实现,否则方法执行将会返回错误。保留兼容原有的Do/DoVar
方法,并增加了100+
项常用redis
操作方法:NoSQL Redis gpool
增加MustPut
方法,在Put
执行出错时直接panic
而不是返回错误对象 gqueue
改进Len/Size
方法,解决可能存在的队列计数不准确问题。 改进Len/Size
方法,返回参数类型由int
改为int64
。 gcode
增加CodeNecessaryPackageNotImport
错误码。 gerror
改进堆栈打印,统一使用空格替代\t
,以保证打印格式兼容不同的展示终端。 gins
单例对象增加分组锁机制,提升在高并发下的锁机制性能。 ghttp
支持在中间件中增加对当前执行路由方法的获取。 当路由方法执行的结果不为200
时,支持在中间件中通过Request.GetError
方法获取内部错误。 新增Response.ServeContent
方法,用于自定义的内容输出接口实现。 改进反向代理支持,并增加反向代理示例:https://github.com/gogf/gf/blob/master/example/httpserver/proxy/main.go 改进错误日志输出,使用error
错误级别,便于开发者在自定义日志Handler
中识别日志类型。 goai
新增对security
标签的支持,用以配置OpenAPIv3
安全密钥。 改进对带有json
标签带有,
符号时结构体属性的名称获取。 gtcp
SetSendDeadline
方法名称修改为SetDeadlineSend
。 SetReceiveDeadline
方法名称修改为SetDeadlineRecv
。 SetReceiveBufferWait
方法名称修改为SetBufferWaitRecv
。 gudp
SetSendDeadline
方法名称修改为SetDeadlineSend
。 SetReceiveDeadline
方法名称修改为SetDeadlineRecv
。 SetReceiveBufferWait
方法名称修改为SetBufferWaitRecv
。 gcache
修复MustGetOrSetFunc
方法逻辑问题。 改进LRU
缓存过期回收机制实现。 gcmd
改进结构化命令行对象生成,当brief
标签为空时,自动读取dc
标签内容作为brief
,以保证命令行与接口定义标签习惯相同。 gcron
改进日志处理,当给定的定时任务方法执行panic
并且开发者没有设置Logger
接口时,将会使用glog.DefaultLogger
输出错误日志。 改进定时触发判断逻辑,解决在底层定时器执行间隔不准确时引起的定时任务触发问题。 glog
改进在滚动切分特性开启时的初始化逻辑,解决在个别场景下的初始化失败导致滚动切分执行失败问题。 改进Clone
方法,进一步浅拷贝提高链式操作性能。 新增LevelPrint
配置,用以控制默认日志Handler
是否打印日志级别字符串。 gres
新增Pack*WithOption
方法,用以提供更细致的资源打包选项控制。 标记方法废弃:Pack/PackToFile/PackToGoFile
。 新增KeepPath
打包选项,用以控制是否在打包文件中保留给定的相对路径,而不是使用带有本地打包目录前缀的路径(相当于去掉了目录前缀)。 grpool
新增supervisor
特性,解决在worker
数量较少的场景下,低概率下同时退出的问题。 gstructs
新增Tag*
方法,用以获取常见的标签值。 gtime
改进Equal/After/Sub
方法,解决在个别场景下的细节问题。 改进EndOf*
方法,返回的时间对象由开发者控制EndOf
计算的粒度。调整默认粒度,由纳秒改为秒粒度进行计算。 改进SetTimeZone
时区设置方法,以实现不同系统下的兼容性,该方法只允许全局设置一次时区,多次调用设置不同时区将会返回错误:时间管理-时区设置 gstr
修复IsSubDomain
判断主域名为子域名的子域名问题。 改进SubStr/SubStrRune
方法,支持以负数的start
参数指定从右截取字符串。 gconv
新增Ptr*
方法,用以任意类型到指定类型指针变量的转换。 改进Map*
转换方法对递归转换的处理,默认只会递归转换嵌套的结构体属性。 改进Scan
方法,解决属性同类型以及同类型指针到目标对象/指针的转换问题。 gtag
将框架中所有的标签名称统一到该模块下通过常量维护。 增加SetOver/SetsOver
方法,用于覆盖设置自定义的标签键值对。 gutil
改进Dump*
方法,支持循环嵌套的对象指针打印。 修复Dump*
方法在部分场景下的反射报错问题。 新增OriginValueAndKind/OriginTypeAndKind
方法,用于获取给定变量的反射值/类型对象,以及在指针变量下对应的原始反射值/类型对象。 New*ArrayRange
方法创建数组对象时,在部分场景下数组越界问题。 修复contrib/drivers/clickhouse
在配置Charset
参数时的报错问题。 修复pgsql
数据库生成dao
代码文件时的属性字段类型错误问题。 修复数据库ORM组件中Count
方法的缓存问题。 修复gstr.IsSubDomain
判断主域名为子域名的子域名问题。 修复gutil.Dump*
方法在部分场景下的反射报错问题。 gf fix
命令,用于低版本升级高版本自动更新本地代码不兼容变更:兼容修复-fix 增加gf up
命令,用以将本地的框架低版本升级到最新的框架版本:框架升级-up 改进gf build
命令,在构建之前增加环境变量信息打印。 改进gf pack
命令,增加KeepPath
参数,用以控制资源打包后是否保留相对路径:资源打包-pack 改进gf gen dao
命令,生成的Transaction
方法中tx
参数从对象指针改为了接口。 Redis
的使用方式发生变更,旧版方法保持兼容,但需要额外添加社区组件的引入(接口与实现分离),具体请查看文档。 数据库ORM
的TX
对象从具体实现改为了接口,这块通过开发工具新增的up
或者fix
命令即可自动升级修复。 grpcx
社区组件,实现对grpc
接口协议的扩展支持,并提高微服务开发易用性。 官网新增【微服务开发】系列章节,主要以grpc
开发为主介绍使用goframe
进行微服务开发。 主框架去掉对第三方开源组件gorilla/websocket
的耦合,将WebSocket
的支持接口化,按照框架的通用解耦设计,通过社区组件提供具体实现,提供扩展性和灵活性。 焦点消息!VASSAL 3.6.10 发布,开源棋牌游戏构建引擎
Electron 22.0.1 发布,跨平台桌面应用开发工具_环球观天下