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

我们很高兴宣布`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),如有侵权,请联系删除。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容