版本说明

CatLib的版本标准是采用:Semver语义化版本标准

Core 更新指南

v1.2.7 Beta

  • 移除了引用计数模块
  • 修复一个bug,这个bug导致SortSet在存储相同的Value时有概率不能正确移除元素, 同等情况下获取排名不正确的问题
  • OnResolving增加无参数Lambda支持
  • RingBuffer增加了接口
  • 删除了不必要的Using

v1.2.6 Beta

  • 增加了新的数据结构,环型缓冲区(RingBuffer)
  • 增加了 Arr.Cut 裁剪函数,允许裁剪数组
  • SortSet 支持自定义比较器来进行排序
  • 优化了在容器构建发生异常后的错误提示
  • 事件系统可以通过字符串注册获取私有的方法了
  • 增加ServiceProvider抽象类, 意味着接口的Init将不是必须的了
  • Release方法在通过类型释放时可以获得没有释放成功的类型了
  • Container性能进行了优化
  • 对事件系统进行了性能优化

v1.2.5 Beta

  • 优化了Listen,不在只允许监听返回值为object的函数
  • 修复了一个bug,这个bug导致全局事件不能够正确的在Static函数上监听
  • 修复了一个bug 这个bug导致如果作为参数筛选器,要求注入的是筛选器类型的话将会导致无效匹配
  • Call(Action…)相关函数将支持自定义用户参数传入

v1.2.4 Beta

  • 无用代码清理
  • Params特殊参数通过IParams来代替

v1.2.3 Beta

  • 紧急修复了Netstandard Dll库未能正确发布的问题

v1.2.2 Beta

新增内容

  • 增加了Tag<TService>(string)允许直接将类型标记
  • 增加了Release(params object[]...)允许通过实例对象进行释放
  • 增加了Terminate()函数,用于终止CatLib框架
  • 增加了ApplicationEvents.OnTerminate用于监听框架终止之前的事件
  • 增加了ApplicationEvents.OnTerminated用于监听框架终止之后的事件

其他优化

  • Facade增加HasInstance来优化App.HasInstance(这是个内部优化)
  • OnResolving允许只获取实例
  • OnRelease允许只获取实例
  • OnResolving允许不在获取返回值

v1.2.1 Beta

性能优化

  • Facade 拥有更好的性能。
  • App.Make 拥有更好的性能。

接口调整

  • App.Release 可以获取一个返回值,表示是否成功的释放。

v1.2.0 Beta

新增内容

  • App类可以被继承。
  • 容器可以为实现 IDisposable 接口的对象,在 Release 时会自动触发接口。
  • 容器增加可变类型接口(IVariant),允许将一个基础类型转为复杂类型。
  • 容器增加Params数据结构,允许容器进行参数名参数匹配。
  • 容器增加 BindMethod 方法允许向容器注册一个方法。
  • 容器增加 OnReboundWatch 函数,该函数用于监听当已经解决的服务发生重定义时触发的事件,这个事件对实例绑定的服务也会有效。
  • Str辅助函数库增加了Method方法可以获取字符串中符合规则的函数名。
  • Arr增加了Flash函数,该函数可以处理只在片段时间内产生作用的内容。
  • 增加了字典辅助函数库(Dict)
    — Filter函数可以过滤返回值为false的键值对
    — Remove函数可以移除比较回掉返回为true的元素
    — Modify函数可以直接修改键值对的值
    — AddRange允许批量添加到字典
    — Map函数将回调的返回值作为新的字典
    — Keys函数可以获取字典的键名数组
    — Values函数可以获取字典的值数组
    — Get函数可以通过点状表达式访问深度字典
    — Set函数可以通过点状表达式写入深度字典
    — Remove函数可以通过点状表达式删除深度字典元素
  • Arr 增加了 RemoveAt 函数,可以通过数组下标移除元素,并且返回被移除的元素值。
  • Container.Call 支持直接为lambda表达式提供依赖注入。

更新内容

  • 容器获得了更好的绑定(Bind)校验并及时的抛出异常。
  • Facade(门面)机制优化, 拥有了更好的访问性能。
  • 容器中string被认为是不可以被实例的对象。
  • 全局事件系统关联服务容器,这意味着所有的函数绑定事件不会再限制参数了,容器会选择最合适的参数自动注入。
  • 全局事件移除生命周期支持,因为全局事件的监听不应该频繁发生变化,生命周期功能会诱导开发者进行不正确的操作
  • 优化了注入算法,能够尽可能的推导出注入实例。
  • OnResolvingOnRelease 所加入的新的修饰器不会再处理已经生成的实例。实例的变化应该使用Watch来监控
  • 容器注入的策略被调整为必然注入成功(不为null)(以前是可以为null)(如果希望提供默认值必须显示的申明)否则将抛出一个不能解决的异常
  • 容器在无法解决注入时可以根据 @变量名 来推测类型了。
  • BindIf API 不再返回已绑定的api,而是返回bool来表示是否成功绑定,IBindData 将以out参数的形式返回。
  • 全局修饰器的策略调整为即时状态不会再为已经生成的对象进行修饰。因为旧的设计这会导致表达语意不明。
  • 对于基础类型的注入变得更加严格,不能在直接注入基础类型的默认值了例如:int的默认值为0,因为我们认为这可能会导致一些不被发现的错误。
  • 对容器进行了重构,使容器具备更加好的可拓展性及性能,同时也开放了大量可以直接更改容器行为的虚函数,这对于其他框架开发者或者高级定制的开发者可以更加轻松的修改容器行为。
  • 用户参数注入的检查由绝对顺序调整为相对顺序,这意味着参数顺序的要求将会更加松散。

Bug修复

  • 修复了一个bug这个bug导致在调用Instance时如果存在修饰器修改对象的情况,那么不能返回已经被修改的对象。
  • 修复了 App.Trigger 返回值不正确的bug。

移除内容

  • 移除了LRUCache,理由是由于性能不过关。
  • 移除了Inject注入标记的Required选项,因为我们认为Required的存在使开发者不再注重对传入值的校验,这对于非catlib下使用组件是存在安全风险的。

v1.1.1 RC

  • 移除了在Unity环境下单元测试的支持 - 所有的基础类库都是可靠的无需在Unity下再进行额外测试。
  • 兼容合并(直接使用Framework和Core的)源码导致的类型指定错误
  • 对容器所产生的异常提供更加明确的错误提示

V1.1.0 RC

开发者体验改善

  • 错误提示对开发者更加友好和直观
  • Container在手动给予参数时如果转换失败辣么会抛出异常
  • Application事件名变得更有意义
  • 鲁棒性增强

错误修正

  • 错误的函数名修正: Releases 修正为 Release

新增功能

  • 增加了启动引导完成事件: OnBootstraped
  • Arr 增加 IndexOf 查找函数

已过时

  • 已过时: Str.RegexQuote()

其他改进

  • 将事件转移至Support(所有using CatLib; 的可以无缝升级)

V1.0.0 RC

  • 依赖注入容器
  • 基础事件系统
  • 标准库

Framework 更新指南

v1.1.2 Beta

  • 路由支持可变参数注入
  • 路由针对可以根据路由变量注入
  • Routing支持无参数类型限制的lambda
  • 路由的返回值会直接作为Response结果
  • Netstandard同步
  • LitJson替代SimpleJson
  • 适配 1.2.X 版本的CatLib Core
  • 网络系统bug修复,在特定条件下会出现粘包

v1.1.1 Beta

  • 修复Network在一定条件下分包异常的bug
  • IJson接口支持输入type来获取对象
  • 解决第三方组件库与开发者的冲突
  • 修复Tcp在mono下不能建立连接的bug

v1.1.0 Beta

  • 移除了在Unity环境下单元测试的支持 - 所有的基础类库都是可靠的无需在Unity下再进行额外测试。
  • 新增Network组件
  • 新增Tick组件
  • 新增了Socket组件
  • 项目文件结构调整,及程序集更名
  • Container,依赖查找对于实现IConvertible的参数会尝试进行转换
  • 模版类增加了ContainsExtend方法,可以用于判断拓展是否存在
  • SystemTime增加了Utc时间
  • 配置组件转换器组件从核心框架中淘汰至扩展组件库

警告:1.0版本Framework使用1.1版本Core,路由机制可能出现转换失败的异常。请升级1.1版本的Framework修复这个问题

v1.0.0 Beta.2

  • bug fixed
  • 为未覆盖断言的代码片段增加断言

V1.0 Beta

新增组件

  • MonoDriver 组件用于模拟Monobehavior驱动行为
  • Events 为事件系统。
  • Debugger 为调试控制器组件
  • Json 解析Json的类库
  • Translation 国际化翻译组件
  • Converters 转换器组件
  • Random 随机库
  • Hashing 哈希库
  • Encryption 加密库
  • Compress 压缩库

新增的特性

  • Application.Register 在完成初始化后可以继续注册
  • 新增 Container.Flush 函数用于清空容器
  • Container 允许自定义注入标记
  • 可以以Unity组件的方式来书写服务提供者了
  • 新增版本对比接口Application.Compare
  • Config新增Watch函数支持,用于观察配置的变化
  • 对其他框架开发者更加友好
  • 路由系统Dispatcher增加了多线程调用安全支持
  • Container 增加了Type2Service来更加明确Type到服务名的转化

新增全局接口

  • IAwait 用于等待异步加载的服务
  • IServiceProvider 服务提供者接口

行为变化的函数

  • ServiceProvider.Init 由异步逻辑变更为同步逻辑。如果服务需要异步等待请使用IAWait
  • Container.Make 第二个参数拆分至 Container.MakeWith
  • Application.Register 要求传入的是一个具体实例而不是一个Type
  • Application.Bootstrap 要求传入的是一个具体实例而不是一个Type

函数迁移

  • Application.Attach 函数迁移至 MonoDriver 组件
  • Application.Detach 函数迁移至 MonoDriver 组件

函数/事件/配置更名

  • Application.GetPriorities 更名为 Application.GetPriority
  • Application.GetGuid 更名为 Application.GetRuntimeId
  • App.Instance 更名为 App.Handler
  • Timer.OnComplete 更名为 Timer.OnCompleted
  • 事件 Application.OnStartComplete 更名为 Application.OnStartCompleted
  • 配置名已经被统一调整,涉及到的组件有调试控制台,环境,路由,国际化

组件/函数移除

  • 移除了 ServiceProvider 抽象类
  • 移除了 Container.ReleaseAll接口
  • 移除了旧的事件系统
  • 移除了Config.AddLocator函数
  • 移除了IStart增强接口

V0.8.3 Beta

  • 修复了 UnitySettingLocator 无法正确存储及访问的问题
  • 修复了 Application.Version 不一致的问题

V0.8.2 Beta

  • 修复了由于 FileSystemManager 门面模型的配置错误引发的bug

V0.8.1 Beta

  • 修复了版本名不一致的问题
  • 修复了遗漏注册的文件服务提供者
  • 修复了一个bug,这个bug会导致在路径/\混用时无法正确定位
  • 修复了一个bug,这个bug导致在没有给定AssetPath时不能返回默认的路径

V0.8.0 Beta

本版本为 CatLib 预发行Beta版

  • 新增CatLib核心
  • 新增标准库 - 容器
  • 新增标准库 - 有序集
  • 新增标准库 - 快速列表
  • 新增标准库 - 最少使用缓存
  • 新增标准库 - 过滤器链
  • 新增路由组件
  • 新增文件系统
  • 新增配置组件
  • 新增时间组件
  • 新增计时器组件