gf/RELEASE.2.MD
2019-12-05 12:34:33 +08:00

12 KiB
Raw Blame History

v1.10.0 (2019-12-05)

各位gfer久等了,较上一次发布时间过去已有两个多月了,这段时间GF也在不断地迭代改进,细节比较多,拟了个大概,以下是release log

另外,GoFrame也参加了2019最受欢迎中国开源软件评选投票明天就结束了欢迎为GF投票啊:https://www.oschina.net/project/top_cn_2019 网页可以投一票,微信也可以投一票。

新特性

  1. Web Server新特性:
  2. Session增加内置的多种Storage实现:
  3. 增加日志组件单例对象,并优化配置管理:
  4. 常用的container容器增加JSON数据格式的Marshal/UnMarshal接口实现:
  5. 新增guuid模块,用于通用的UUID生成:https://goframe.org/util/guuid/index

功能改进

net

  1. ghttp
    • 改进请求流程处理性能;
    • Server增加对Logger日志对象的配置;
    • Server开放了GetRouterMap方法,用于获得当前服务的路由列表信息,使得开发者可以更方便地实现自定义权限管理;
    • Server配置管理优化;
    • Client客户端对象进行了大量的改进工作;
    • Client客户端对象增加多文件上传功能;
    • Request对象增加GetError方法,用于获取当前处理错误;
    • Request对象增加独立的视图对象及视图变量绑定功能,使得每个请求可以独立视图管理,也可以通过中间件切换请求对象的视图对象。默认情况下该功能关闭,视图解析时使用的是Server对象的视图对象;
    • 改建Response对象的CORS功能;
    • 增加Response.WriteTplDefault方法,用于解析并返回默认的模板内容;
    • 增加更多的单元测试用例;
    • 其他改进;
  2. gipv4/gipv6
    • 一些改进工作;
  3. gtcp/gudp
    • 一些改进工作;

database

  1. 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
    • 增加字段排除方法FieldsExhttps://goframe.org/database/gdb/senior
    • 增加日志功能特性:https://goframe.org/database/gdb/senior
    • 改进数据库配置管理:https://goframe.org/database/gdb/config
    • 增加大量单元测试;
  2. gredis

os

  1. gcache
    • 需要注意了:缓存的有效时间参数从interface{}类型调整为了time.Duration类型,因此不再兼容之前的int参数类型,以保证更好的性能;
  2. gfcache
    • 由于gcache组件的缓存时间参数类型的变更,因此该组件的时间参数也变更为了time.Duration类型;
  3. gcfg
    • 增加Available方法,用以判断配置是否有效;
  4. gfile
    • 增加Chdir方法,用于工作目录切换;
  5. gtime
    • 增加JSON数据格式的Marshal/UnMarshal接口实现;

container

  1. gmap
    • 增加MapStrAny方法,用于常见map类型的转换;
    • 增加MapCopy方法,用于底层map数据复制;
    • 增加FilterEmpty方法,用于map空值过滤;
    • 增加Pop/Pops方法,用于随机返回map中的数据项(并删除);
    • 增加Replace方法,用于给定的map数据覆盖底层map数据项;
    • 完善单元测试;
    • 其他改进;
  2. garray
    • 增加Interfaces转换方法,返回[]interface{}类型;
    • 对排序数组增加SetComparator方法用户自定义修改比较器;
    • 完善单元测试;
    • 其他改进;
  3. glist
    • 增加NewFrom方法,基于给定的[]interface{}变量创建链表;
    • 增加Join方法,用于将链表项使用给定字符串连接为字符串返回;
    • 完善单元测试;
    • 其他改进;
  4. gset
    • 增加AddIfNotExistFunc/AddIfNotExistFuncLock方法;
    • 完善单元测试;
    • 其他改进;
  5. gtree
    • 增加Replace方法,用于更新现有树的数据项;
    • 其他改进;
  6. gtype
    • 一些细节改进工作,不一一列出;
    • 完善基准测试、单元测试;
  7. gvar
    • 增加Ints/Uints类型转换方法;
    • 其他改进;

crypto

  1. gmd5
    • 小细节改进;
  2. gsha1
    • 小细节改进;

text

  1. gstr
    • 改进SplitAndTrim方法,将SplitAndTrimSpace标记为deprecated
    • 增加TrimStr方法;
    • 完善单元测试;
    • 其他改进;

debug

  1. gdebug
    • 增加CallerFileLineShort/FuncPath/FuncName方法;
    • 其他改进;

encoding

  1. gbase64
    • 增加EncodeToString/EncodeFile/EncodeFileToString/DecodeToString方法;
    • 完善单元测试;
  2. gjson
    • 完善单元测试;

frame

  1. g/gins

util

  1. gconv
    • 改进优化部分类型转换方法性能;
    • 增加Uints/SliceUint类型转换方法;
    • 增加UnsafeStrToBytes/UnsafeBytesToStr高性能的类型转换方法;
    • 增加对MapStrAny接口方法的支持,用于常见map类型的转换;
    • 其他改进;
  2. gvalid
    • 改进对中国身份证号的识别校验功能;
    • 增加luhn银行卡号的校验功能;
  3. grand
    • 一些性能改进工作;

Bug Fix

  1. 解决WebSocket关闭时的hijacked报错问题:https://github.com/gogf/gf/issues/381
  2. 解决静态文件服务时大文件的内存占用问题;
  3. 修复前置Nginx后默认情况下的Cookie域名设置问题;
  4. 修复gconv.Struct在属性为[]struct并且输入属性参数为空时的转换失败问题:https://github.com/gogf/gf/issues/405
  5. 其他一些修复;

v1.9.3 (2019-09-24)

该版本实际为v2.0的大版本发布,为避免go module机制严格要求v2版本以上需要修改import并加上v2后缀,因此使用了v1.9版本进行发布。

新特性

  1. 新增gf命令行开发辅助工具:https://goframe.org/toolchain/cli
  2. 新增gres资源管理器模块:https://goframe.org/os/gres/index
  3. 重构Session功能,新增gsession模块,WebServer默认使用文件存储Sessionhttps://goframe.org/net/ghttp/session
  4. WebServer新增中间件特性并保留原有的HOOK设计两者都可实现请求拦截、预处理等等特性https://goframe.org/net/ghttp/router/middleware
  5. 新增gi18n国际化管理模块:https://goframe.org/i18n/gi18n/index
  6. 新增gini模块:https://goframe.org/encoding/gini/index
  7. WebServer新增更便捷的层级路由注册方式:https://goframe.org/net/ghttp/group/level
  8. gcmd命令行参数解析模块重构,增加Parser解析对象:https://goframe.org/os/gcmd/index
  9. 新增gdebug模块,用于堆栈信息获取/打印:https://goframe.org/debug/gdebug/index

重大调整

  1. 去掉1.x版本中已经被标记为deprecated的方法;
  2. 调整container分类的容器模块,将默认并发安全参数调整为默认非并发安全;
  3. 目录调整:
    • 去掉third目录,统一使用go module管理包依赖;
    • 将原有g目录中的模块移出到框架主目录,原有的g模块移动到frame/g目录;
    • 将原有geg示例代码目录名称修改为.example

功能改进

  1. ghttp
    • 改进Request参数解析方式:https://goframe.org/net/ghttp/request
    • 改进跨域请求功能,新增Origin设置及校验功能:https://goframe.org/net/ghttp/cors
    • CookieSessionTTL配置数据类型修改为time.Duration;
    • 新增允许同时通过Header/Cookie传递SessionId
    • 新增ConfigFromMap/SetConfigWithMap方法,支持通过map参数设置WebServer
    • 改进默认的CORS配置,增加对常见Header参数的默认支持;
    • 新增IsExitError方法,用于开发者自定义处理recover错误处理时,过滤框架本身自定义的非异常错误;
    • 新增SetSessionStorage配置方法,用于开发者自定义Session存储;
    • ghttp.Request新增更多的参数获取方法;
  2. gdb
    • 增加对SQL中部分字段的自动转义(Quote)功能;
    • 增加对方法操作以及链式操作中的slice参数的支持;
    • 增加SetLogger方法用于开发者自定义数据库的日志打印;
    • 增加Master/Slave方法,开发者可自主选择数据库操作执行的主从节点;
    • 增加对mssql/pgsql/oracle的单元测试;
    • debug模式支持完整带参数整合的SQL语句调试打印
    • 增加了更多的功能方法;
  3. glog
    • 新增Default方法用于获取默认的Logger对象;
    • 新增StackWithFilter方法用于自定义堆栈打印过滤;
    • 增加了更多的功能方法;
  4. gfile
    • 部分方法名称调整:Get/PutBinContents修改为Get/PutBytes
    • 增加ScanDirFile方法,用于仅检索文件目录,支持递归检索;
    • 增加了更多的功能方法;
  5. gview
    • 新增SetI18n方法用于设置视图对象自定义的gi18n国际化对象;
    • 新增对gres资源管理器的内置支持;
  6. gcompress
    • 增加zip算法的文件/目录的压缩/解压方法;
    • 文件/目录压缩参数支持多路径;
  7. gconv
    • 改进对[]byte数据类型参数的支持;
    • 新增Unsafe转换方法,开发者可在特定场景下使用,提高转换效率;
    • 新增MapDeep/StructDeep/StructsDeep方法,支持递归struct转换;
  8. gjson/gparser
    • 改进类型自动识别功能;
    • 新增LoadJson/LoadXml/LoadToml/LoadYaml/LoadIni方法用于自定义的数据类型内容加载;
    • 增加了更多的功能方法;
  9. gerror
    • 改进错误堆栈获取逻辑;
    • 增加了更多的功能方法;
  10. gmap/garray/gset/glist/gvar
    • 改进并发安全基准测试脚本;
    • 修改garray.StringArraygarray.StrArray
    • 增加了更多的功能方法;
  11. gdes
    • 规范化修改方法名称;
  12. gstr
    • 增加Camel/Snake相关命名转换方法;
    • 增加了更多的功能方法;
  13. genv
    • 增加了更多的功能方法;

Bug Fix

  1. 修复gvalid校验struct时的tag自定义错误失效的问题;
  2. 修复gcfg配置管理模块在特定情况下的内容类型自动识别失败问题;
  3. 修复gqueue在用户主动关闭队列时的并发安全问题;
  4. 修复session在开发者设置的TTL过大时的整型变量溢出问题;