mirror of
https://gitee.com/johng/gf.git
synced 2024-11-30 03:07:45 +08:00
12 KiB
12 KiB
v1.10.0
(2019-12-05)
各位gfer
久等了,较上一次发布时间过去已有两个多月了,这段时间GF
也在不断地迭代改进,细节比较多,拟了个大概,以下是release log
。
另外,GoFrame
也参加了2019最受欢迎中国开源软件评选投票,明天就结束了,欢迎为GF
投票啊:https://www.oschina.net/project/top_cn_2019 网页可以投一票,微信也可以投一票。
新特性
Web Server
新特性:Session
增加内置的多种Storage
实现:- 增加日志组件单例对象,并优化配置管理:
- 常用的
container
容器增加JSON
数据格式的Marshal
/UnMarshal
接口实现: - 新增
guuid
模块,用于通用的UUID
生成:https://goframe.org/util/guuid/index
功能改进
net
ghttp
- 改进请求流程处理性能;
Server
增加对Logger
日志对象的配置;Server
开放了GetRouterMap
方法,用于获得当前服务的路由列表信息,使得开发者可以更方便地实现自定义权限管理;Server
配置管理优化;Client
客户端对象进行了大量的改进工作;Client
客户端对象增加多文件上传功能;Request
对象增加GetError
方法,用于获取当前处理错误;Request
对象增加独立的视图对象及视图变量绑定功能,使得每个请求可以独立视图管理,也可以通过中间件切换请求对象的视图对象。默认情况下该功能关闭,视图解析时使用的是Server
对象的视图对象;- 改建
Response
对象的CORS
功能; - 增加
Response.WriteTplDefault
方法,用于解析并返回默认的模板内容; - 增加更多的单元测试用例;
- 其他改进;
gipv4
/gipv6
- 一些改进工作;
gtcp
/gudp
- 一些改进工作;
database
gdb
- 大量细节改进工作;
- 去掉查询数据为空时的
sql.ErrNoRows
错误返回,保留Struct
/Structs
/Scan
方法在操作数据为空的该错误返回; - 调试模式开启时,输出的SQL语句改进为完整的带参数的SQL,仅作参考;
Where
方法增加对gmap
数据类型支持,包括顺序性的ListMap
/TreeMap
等等;- 查询缓存方法
Cache
的缓存时间参数类型修改为time.Duration
; - 修改
Record
/Result
的数据类型转换方法名称,原有的转换方法标记为deprecated
; Record
/Result
查询结果类型增加IsEmpty
方法,用于判断结果集是否为空;Record
类型增加GMap
方法,用于将查询记录转换为gmap
类型;- 增加
Option
/OptionOmitEmpty
方法,用于输入参数过滤,包括Data
参数及Where
参数:https://goframe.org/database/gdb/empty - 增加字段排除方法
FieldsEx
:https://goframe.org/database/gdb/senior - 增加日志功能特性:https://goframe.org/database/gdb/senior
- 改进数据库配置管理:https://goframe.org/database/gdb/config
- 增加大量单元测试;
gredis
- 返回数据类型转换改进:https://github.com/gogf/gf/issues/415
- 完善单元测试;
- 其他改进;
os
gcache
- 需要注意了:缓存的有效时间参数从
interface{}
类型调整为了time.Duration
类型,因此不再兼容之前的int
参数类型,以保证更好的性能;
- 需要注意了:缓存的有效时间参数从
gfcache
- 由于
gcache
组件的缓存时间参数类型的变更,因此该组件的时间参数也变更为了time.Duration
类型;
- 由于
gcfg
- 增加
Available
方法,用以判断配置是否有效;
- 增加
gfile
- 增加
Chdir
方法,用于工作目录切换;
- 增加
gtime
- 增加
JSON
数据格式的Marshal
/UnMarshal
接口实现;
- 增加
container
gmap
- 增加
MapStrAny
方法,用于常见map
类型的转换; - 增加
MapCopy
方法,用于底层map
数据复制; - 增加
FilterEmpty
方法,用于map
空值过滤; - 增加
Pop
/Pops
方法,用于随机返回map
中的数据项(并删除); - 增加
Replace
方法,用于给定的map
数据覆盖底层map
数据项; - 完善单元测试;
- 其他改进;
- 增加
garray
- 增加
Interfaces
转换方法,返回[]interface{}
类型; - 对排序数组增加
SetComparator
方法用户自定义修改比较器; - 完善单元测试;
- 其他改进;
- 增加
glist
- 增加
NewFrom
方法,基于给定的[]interface{}
变量创建链表; - 增加
Join
方法,用于将链表项使用给定字符串连接为字符串返回; - 完善单元测试;
- 其他改进;
- 增加
gset
- 增加
AddIfNotExistFunc
/AddIfNotExistFuncLock
方法; - 完善单元测试;
- 其他改进;
- 增加
gtree
- 增加
Replace
方法,用于更新现有树的数据项; - 其他改进;
- 增加
gtype
- 一些细节改进工作,不一一列出;
- 完善基准测试、单元测试;
gvar
- 增加
Ints
/Uints
类型转换方法; - 其他改进;
- 增加
crypto
gmd5
- 小细节改进;
gsha1
- 小细节改进;
text
gstr
- 改进
SplitAndTrim
方法,将SplitAndTrimSpace
标记为deprecated
; - 增加
TrimStr
方法; - 完善单元测试;
- 其他改进;
- 改进
debug
gdebug
- 增加
CallerFileLineShort
/FuncPath
/FuncName
方法; - 其他改进;
- 增加
encoding
gbase64
- 增加
EncodeToString
/EncodeFile
/EncodeFileToString
/DecodeToString
方法; - 完善单元测试;
- 增加
gjson
- 完善单元测试;
frame
g
/gins
- https://goframe.org/frame/g/index
- 增加
CreateVar
方法; - 完善单元测试;
- 其他改进;
util
gconv
- 改进优化部分类型转换方法性能;
- 增加
Uints
/SliceUint
类型转换方法; - 增加
UnsafeStrToBytes
/UnsafeBytesToStr
高性能的类型转换方法; - 增加对
MapStrAny
接口方法的支持,用于常见map
类型的转换; - 其他改进;
gvalid
- 改进对中国身份证号的识别校验功能;
- 增加
luhn
银行卡号的校验功能;
grand
- 一些性能改进工作;
Bug Fix
- 解决
WebSocket
关闭时的hijacked
报错问题:https://github.com/gogf/gf/issues/381 - 解决静态文件服务时大文件的内存占用问题;
- 修复前置
Nginx
后默认情况下的Cookie
域名设置问题; - 修复
gconv.Struct
在属性为[]struct
并且输入属性参数为空时的转换失败问题:https://github.com/gogf/gf/issues/405 - 其他一些修复;
v1.9.3
(2019-09-24)
该版本实际为v2.0
的大版本发布,为避免go module
机制严格要求v2
版本以上需要修改import
并加上v2
后缀,因此使用了v1.9
版本进行发布。
新特性
- 新增
gf
命令行开发辅助工具:https://goframe.org/toolchain/cli - 新增
gres
资源管理器模块:https://goframe.org/os/gres/index - 重构
Session
功能,新增gsession
模块,WebServer
默认使用文件存储Session
:https://goframe.org/net/ghttp/session WebServer
新增中间件特性,并保留原有的HOOK设计,两者都可实现请求拦截、预处理等等特性:https://goframe.org/net/ghttp/router/middleware- 新增
gi18n
国际化管理模块:https://goframe.org/i18n/gi18n/index - 新增
gini
模块:https://goframe.org/encoding/gini/index WebServer
新增更便捷的层级路由注册方式:https://goframe.org/net/ghttp/group/levelgcmd
命令行参数解析模块重构,增加Parser
解析对象:https://goframe.org/os/gcmd/index- 新增
gdebug
模块,用于堆栈信息获取/打印:https://goframe.org/debug/gdebug/index
重大调整
- 去掉
1.x
版本中已经被标记为deprecated
的方法; - 调整
container
分类的容器模块,将默认并发安全参数调整为默认非并发安全; - 目录调整:
- 去掉
third
目录,统一使用go module
管理包依赖; - 将原有
g
目录中的模块移出到框架主目录,原有的g
模块移动到frame/g
目录; - 将原有
geg
示例代码目录名称修改为.example
;
- 去掉
功能改进
ghttp
- 改进
Request
参数解析方式:https://goframe.org/net/ghttp/request - 改进跨域请求功能,新增
Origin
设置及校验功能:https://goframe.org/net/ghttp/cors Cookie
及Session
的TTL
配置数据类型修改为time.Duration
;- 新增允许同时通过
Header/Cookie
传递SessionId
; - 新增
ConfigFromMap/SetConfigWithMap
方法,支持通过map
参数设置WebServer; - 改进默认的
CORS
配置,增加对常见Header
参数的默认支持; - 新增
IsExitError
方法,用于开发者自定义处理recover
错误处理时,过滤框架本身自定义的非异常错误; - 新增
SetSessionStorage
配置方法,用于开发者自定义Session
存储; ghttp.Request
新增更多的参数获取方法;
- 改进
gdb
- 增加对SQL中部分字段的自动转义(
Quote
)功能; - 增加对方法操作以及链式操作中的
slice
参数的支持; - 增加
SetLogger
方法用于开发者自定义数据库的日志打印; - 增加
Master/Slave
方法,开发者可自主选择数据库操作执行的主从节点; - 增加对
mssql/pgsql/oracle
的单元测试; - 在
debug
模式支持完整带参数整合的SQL语句调试打印; - 增加了更多的功能方法;
- 增加对SQL中部分字段的自动转义(
glog
- 新增
Default
方法用于获取默认的Logger
对象; - 新增
StackWithFilter
方法用于自定义堆栈打印过滤; - 增加了更多的功能方法;
- 新增
gfile
- 部分方法名称调整:
Get/PutBinContents
修改为Get/PutBytes
; - 增加
ScanDirFile
方法,用于仅检索文件目录,支持递归检索; - 增加了更多的功能方法;
- 部分方法名称调整:
gview
- 新增
SetI18n
方法用于设置视图对象自定义的gi18n
国际化对象; - 新增对
gres
资源管理器的内置支持;
- 新增
gcompress
- 增加
zip
算法的文件/目录的压缩/解压方法; - 文件/目录压缩参数支持多路径;
- 增加
gconv
- 改进对
[]byte
数据类型参数的支持; - 新增
Unsafe
转换方法,开发者可在特定场景下使用,提高转换效率; - 新增
MapDeep/StructDeep/StructsDeep
方法,支持递归struct
转换;
- 改进对
gjson/gparser
- 改进类型自动识别功能;
- 新增
LoadJson/LoadXml/LoadToml/LoadYaml/LoadIni
方法用于自定义的数据类型内容加载; - 增加了更多的功能方法;
gerror
- 改进错误堆栈获取逻辑;
- 增加了更多的功能方法;
gmap/garray/gset/glist/gvar
- 改进并发安全基准测试脚本;
- 修改
garray.StringArray
为garray.StrArray
; - 增加了更多的功能方法;
gdes
- 规范化修改方法名称;
gstr
- 增加
Camel/Snake
相关命名转换方法; - 增加了更多的功能方法;
- 增加
genv
- 增加了更多的功能方法;
Bug Fix
- 修复
gvalid
校验struct
时的tag
自定义错误失效的问题; - 修复
gcfg
配置管理模块在特定情况下的内容类型自动识别失败问题; - 修复
gqueue
在用户主动关闭队列时的并发安全问题; - 修复
session
在开发者设置的TTL
过大时的整型变量溢出问题;