Releases: Ourpalm/ILRuntime
Releases · Ourpalm/ILRuntime
ILRuntime 2.1.0
Breaking Change
- 由于调试协议变更,2.1.0以上的版本调试插件不和以前版本相兼容,需要从VS和VSCode插件商店安装新版本调试插件
新功能
- 调试器支持多工程同时调试
- 调试器新增自动发现可调式实例的功能,在同一局域网网络时可自动发现所有可调式实例
- 新增VSCode调试插件, 同时支持Windows和Mac
- 新增VS2022调试器支持
Bug修正
- 修复一个实例化时不能找到正确的构造函数的Bug
- Prewarm接口可预热async方法
- 修复一些情况下使用泛型约束会报错的问题
- 修复寄存器模式有时在for循环中使用值类型行为不符合预期的问题
- 修复一些用发下GetCustomAttribute不能获取指定Attribute的问题
- 修复Stfld与Ldfld当对象为适配器时的异常
- 修复热更中无法使用Delegate.CreateDelegate的问题
- 修复CLR绑定漏分析async方法和event加减的问题
- 修复纯热更内event依然需要适配器的问题
- 修复寄存器模式下构造函数参数比较多时报错的问题
- 优化异常日志输出,避免热更内栈信息被丢弃
- 修复一些用法下interface强转结果不符合预期的问题
- 修复MethodInfo.CreateDelegate报错的问题
- 修复寄存器模式有些情况下foreach内部运行异常的问题
- 修复寄存器模式有时候被内联的方法中值类型被破坏的问题
- 修复寄存器模式下有时值类型复制出错的问题
- 修复寄存器模式使用JITImmediately时产生预期外的GC Alloc的问题
- 修复寄存器模式偶现栈损坏的问题
- 修复寄存器模式调用多态方法时偶现报错的问题
- 修复寄存器模式下一些情况ref设置变量值不生效的问题
- 修复寄存器模式下一个委托里使用值类型报错的问题
- 修复一个隐式强转值类型时报错的问题
- 修复泛型方法内断点无法命中的问题
- 修复在调试async方法时卡死的问题
- 修复泛型类型中添加委托出错的问题
- 修复Type.GetField接口同个字段返回多次的问题
- 修复Delegate.Target无法使用的问题
- 修复多层嵌套值类型出现异常的问题
- 修复嵌套using时无法正确调用Dispose的问题
- 修复一个导致弃用Appdomain内存无法正确释放的问题
- 修正一个值类型在无值类型绑定时字段赋值不正确的问题
- 修正一个访问主工程类型字段偶现读错字段的问题
- 修复反射时指定DeclaredOnly依然会返回父类字段的问题
- 修复一些用法下Property.SetValue报错的问题
- 修复通过反射创建泛型方法报错的问题
- 修复泛型方法内对变量赋null后运行报错的问题
- 修复一个由于哈希碰撞导致的字段读取串行的问题
- 修复FieldInfo.GetRawConstantValue报错的问题
感谢社区贡献
- 修复使用扩展方法不能获取到指定的Attibute的问题 by @Endures in #653
- 修复ILType.InitializeFields()方法中可能出现的空引用 by @Endures in #654
- 修复Stfld与Ldfld当对象为适配器时的异常 by @Endures in #655
- Debugger增加支持vs2022的工程。提取公共代码至共享工程。 by @Endures in #660
- 调试器支持多个调试器同时调试不同的热更程序 by @Endures in #673
- 索引器重载时属性的GetMethod和SetMethod不正确 by @Endures in #672
- 断点条件表达式。修复调试器若干问题。 by @Endures in #677
- Feature/vscode debugger by @liiir1985 in #682
- 修复ILRuntimeFieldInfo无法正确读取常量的bug by @tinysnake in #707
- 无参数无返回值的委托也需要绑定,不应该跳过 by @Hsiung233 in #714
新贡献者
- @Endures made their first contribution in #653
- @Hsiung233 made their first contribution in #714
Full Changelog: v2.0.2...v2.1.0
ILRuntime 2.0.2
- 修复意外引入的GC Alloc
- 增加CLR自动生成参数,以应对泛型嵌套过深导致没有正确被自动分析捕捉
- 修复一个类字段数量超过64个后一些情况下报错的Bug
- 修复将扩展方法用于委托时的一个报错
ILRuntime 2.0.0
- 加入寄存器运行模式,可大幅提升热更内数值计算性能
- 执行性能整体提升,传统非寄存器模式执行效率也得到一定幅度提升
- 修正热更内finnaly块在一些情况下不正确的bug,连带修复了yield return和async/await的一些异常情况
- 修正值对类型绑定后的数组进行操作时的异常
- 修正热更内Enum一些情况下Equals结果错误的bug
- 修正跨域继承接口时的一些异常情况
- 修正跨域继承时子类无法调用到子类方法的问题
- 修正值类型绑定在一些情况下构造函数执行失败的bug
- 修正反射接口无法获取父类public方法的bug
- 修正嵌套数组在一些情况CLR绑定失败的bug
- 修复值类型绑定后的值类型作为委托参数在一些情况下出现异常的Bug
- 修正byte[]一些情况下取值出现强转失败的bug
- 修正子类型在一些情况下调用+=,-=等重载操作符时异常的bug
- 修正重载!操作符CLR绑定报错的bug
- 修正值类型实现接口后new T时报错的bug
- 修正一些情况下泛型匹配失败的Bug
- 修正在try catch时重新抛出异常出错的Bug
- 修正将委托保存在数组中可能出现调用异常的Bug
ILRuntime 1.6.7
- Appdomain.Prewarm接口加入递归预热的选项
- 优化ILRuntime遇到异常时输出的日志,可在Unity的Console中直接点击前往源码
- 增加CLRBinding在处理遇到同名类型时的容错
- 修正跨域继承适配器自动生成工具生成的代码部分情况无法正常编译的问题
- 完善Debug模式下部分异常的错误日志输出,方便定位问题
- 修正个别情况下,为值类型方法this赋值时导致栈损坏的问题
- 修正一个泛型方法匹配的Bug
- 修正将ILRuntime中的多播委托实例存入List等容器时,只有最后一个挂接的回调被执行的Bug
- 修正一个ref/out操作枚举变量时的Bug
- 修正在泛型方法中转换Action等泛型委托失败的Bug
- 增加CLRBindingUtils,使得应用可以同时兼容有CLR绑定和无CLR绑定的情况(直接删除CLR绑定自动生成代码也不会造成编译错误)
- 给Litjson加入JsonIgnore特性
- 修正FieldInfo,PropertyInfo等反射类型调用GetCustomAttributes时出错的问题
- 修正ILRuntime中获取Attributes无法获取部分参数值的Bug
- 修正一个导致async await中断的Bug
- 修正一个跨域继承访问基类protected变量出错的Bug
- 升级Mono.Cecil到0.11.3
ILRuntime 1.6.6
- Appdomain.Prewarm接口加入预热指定方法的参数
- AppDomain新增GetCurrentStackTrace接口获取当前调用栈,仅支持从热更中调用
- 修改Profiler宏,以简化Unity平台上报Profiler数据
- 修复一个基类包含值类型字段的类型报错的Bug
- 修复热更中调用自定义Attribute后,自动分析绑定生成的代码编译不过的问题
- 修复几个CLR自动分析绑定生成的代码出错的问题
- 修复几个泛型方法匹配的Bug
- 修复在基类实现接口的虚方法上有不必要开销的问题
- 修复GetCustomAttributes接口当inherit为true时不包含基类Attribute的Bug
- 修复CLR自动分析绑定无法自动生成event调用的绑定代码的问题
- 修复在热更内调用Enum.CompareTo和Enum.ToObject的问题
ILRuntime 1.6.5
- 提升了Release环境下(非Development Build)大约25%的执行效率
- 修复了一个泛型类型中泛型变量无法置null的Bug
- 修复一个default关键字作用于枚举或者值类型时报错的Bug
- 修复一个导致带条件的await语句失效的Bug
- 修复一个Enum.ToObject返回的Enum值不正确的Bug
- 修复一个泛型方法中out到一个值类型报错的Bug
- 修复一个由自动生成产生的跨域继承适配器,虚方法未被重载时不执行的Bug
- 修复Litjson集成反序列化枚举数组时崩溃的Bug
ILRuntime 1.6.4
- 修正一个使用委托返回经过值类型绑定过的值类型时造成的栈损坏问题
- 修正一个自动生成跨域继承适配器代码时,无参数虚函数适配代码执行的报错
- 修正一个自动生成跨域继承适配器代码对接口方法生成后,某些情况下导致StackOverflow无限递归的Bug
- 修正Type.ToString结果和原生不一致的问题
- 修正泛型嵌套数组T[][]字段初始化时的报错问题
- 修正一个泛型方法匹配的Bug
- 修正一个泛型数组作为参数时方法匹配的错误
- 删掉一个C#7语法使用以提高兼容性
ILRuntime 1.6.3
- 修复对泛型字段赋值导致栈损坏的Bug
- 修复由跨域继承适配器代码生成器自动生成的代码,导致运行时进入错误的类方法的Bug
- 修复一个在静态方法中实例化对象导致运行出错的Bug
- 修复一个某些情况下静态构造函数没有执行的Bug
- 修复一个加载多DLL,引用字段导致的运行时报错
- 修复值类型绑定Enum字段分配内存时被意外装箱的Bug
- 修复一个CLR自动分析绑定在某个特定情况下遗漏分析的Bug
- 移除所有编译警告
- 修复一个由于Unity的Bug导致的导入ILRuntime包时的报错
ILRuntime 1.6.2
- 修正值类型部分情况下++, +=之类操作符失效的Bug
- 修正将值类型成员变量传入方法,并在该方法里对这个参数赋值报错的Bug
- 修复一个Async Await卡主的bug
ILRuntime 1.6.1
- 去掉部分C#7的用法以增加unity2019以前版本的兼容性