Skip to content

Commit

Permalink
[unreal]1.0.6发布相关说明
Browse files Browse the repository at this point in the history
  • Loading branch information
chexiongsheng committed Jan 11, 2024
1 parent 9258c33 commit 53dabd9
Show file tree
Hide file tree
Showing 3 changed files with 396 additions and 2 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[![license](https://img.shields.io/badge/license-BSD_3_Clause-blue.svg)](https://github.com/Tencent/puerts/blob/master/LICENSE)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/Tencent/puerts/pulls)

[![unreal](https://img.shields.io/badge/unreal-v1.0.5-blue.svg)](https://github.com/Tencent/puerts/releases/tag/Unreal_v1.0.5)
[![unreal](https://img.shields.io/badge/unreal-v1.0.6-blue.svg)](https://github.com/Tencent/puerts/releases/tag/Unreal_v1.0.6)

[![unity](https://img.shields.io/badge/unity(stable)-v2.0.2-blue.svg)](doc/unity/zhcn/install.md)
![Unity_Test](https://github.com/Tencent/puerts/workflows/unity%20unittest/badge.svg)
Expand Down
318 changes: 317 additions & 1 deletion doc/unreal/en/changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,319 @@
### v1.0.6 2024年1月11日

#### 新增特性

* 支持通过赋值去清空一个JsObject

* 添加UsingCrossModuleCppType,能避免不同模块引用同一个类typeid不同的问题

* 静态绑定支持在原生函数中跑异常,有两种实现,线程本地存储以及异常,前者有侵入性,后者不能跨动态库使用

* 容器添加[Symbol.iterator]支持

* puerts::Object尝试添加SetWeakAndOwnBy方法,用于某种场景下避免循环引用

* 静态绑定新增MethodProxy,PropertyProxy,用于解决多重继承virtual public静态绑定,子类对象调用父类方法时,this指针错误的问题

* 静态绑定添加从Function数据获取this的选项:GetSelfFromData

* ue5.3兼容

* v8后端拓展esm的支持:引用ue,cpp模块,继承ue类支持esm(*.mts)

* TArray.Add() 变参函数 (#1513)


#### 优化

* v8 和 UE 字符串传递默认使用 UTF16 避免编码转换

* 声明生成排除PropertyMetaRoot

* 重构静态绑定,支持同时使用多种后端

* 支持在puerts名字空间加个_qjs后缀

* 默认打开UE绕行优化 fix #1537

* 容器以及纯c++类型修改为使用InstanceTemplate()->NewInstance实现FindOrAdd,fix #1496

* 优化timer实现,fix #1506


#### 变更

* 内部使用的GetJsObject方法改为私有,防止业务调用

* pesapi版本升级以及api新增

* v8编译参数v8_use_external_startup_data改为false,去掉SnapshotBlob.h,fix #1478

#### bug修复

* 修复在windows下使用远程IOS编译,变量名重名导致的编译失败

* Delegate没调用Bind就Unbind会报错 (#1622)

* mixin原生类,然后恢复,导致后续原生实现调用参数不对的问题,fix #1618

* 解决静态绑定下,需要检查参数类型,子类不能通过基类参数的检查的问题

* 修复 codegen .d.ts 函数参数列表可能重名的问题 (#1609)

* V8Object.hpp加上线程安全支持

* FJsObject析构时加入JsEnv生命周期的判断,fix #1582

* 属性的meta在ts删除了,生成蓝图要同步删除,fix #1551

* UStruct 析构可能发生在后台线程 fix #1539

* js分配的容器,在关闭JsEnv时可能会有内存泄露,fix #1530

* 防止toManualReleaseDelegate传给多个不同签名的回调,导致后面的参数处理错误

* 函数返回const FXXStruct&时,静态绑定报错,fix #1516

* 如果require脚本发送错误,不应该放cache,这会导致第二次require能成功返回(但模块不正常)

### v1.0.5 2023年8月31日

#### 新增特性

* ios下,以及quickjs后端的wasm实现

* FJsObject添加JsEnv生命周期监听,puerts.Object补上拷贝构造,赋值的JsEnv生命周期监听

* 支持使用visual studio时,typescript的监听和自动蓝图,js生成

* 支持通过@uproperty.attach设置Component层次

* 对放置路径不符合ts标识符规范的蓝图

* 支持单独设置某个虚拟机的max-old-space-size,并把增量分析编译虚拟机的内存增加到2G

* 声明生成按钮改为puerts按钮,除了生成*.d.ts,也拷贝系统js文件

* 添加自动管理生命周期的puerts.toDelegate方法

* ue.d.ts新增ue api的注释

* pesapi addon的支持

* pesapi添加类型信息支持

* pesapi addon支持通过WITHOUT_PESAPI_WRAPPER使用dll链接,而不是内部函数指针

* pesapi addon支持直接使用V8 api

* pesapi addon支持v8 fast api call

* 添加pesapi_create_array, pesapi_is_array,pesapi_get_array_length

* 添加macOS arm64的支持

* quickjs版本支持html5打包


#### 优化

* minxin如果class是RootSet,Function也AddToRoot

* 只有原生的才生成到ue.d.ts

* 重构静态绑定:backend彻底分离而且可以共存

* 尝试ts继承蓝图类时报错

#### 变更

* 配置类别更名 Engine Class Extends Mode -> Default JavaScript Environment

* 不支持override GameInstance.ReceiveInit

* Typing目录调整到Project下

* quickjs编辑器下默认使用静态链接!影响比较大,如果用quickjs,就不能在JsEnv外使用静态绑定

* ReactUMG不再随Puerts发布,有需要自行下载:https://github.com/puerts/ReactUMG

#### bug修复

* 函数参数是ts关键字导致的语法非法

* 解决重用外层esm标记导致的两次require间相互影响的问题

* 静态绑定如果构造函数没重载时,参数错误构造函数不执行也不抛异常的问题

* 解决元素为组件的容器识别为组件的问题

* 解决v8 fast api call下静态函数性能慢的问题

* 修复forceinject的时候可能重复setprototype导致的exception

* ue5.2可能会生成重名的隐藏property,加个过滤

### v1.0.4 2023年6月19日

#### 新增特性

* 容器GetRef支持LinkOuter

* 默认添加UObject的IsA函数的静态绑定

* setTimeout, setInterval增加argumentgs的支持

* 静态绑定加入fast api call支持

* 添加C#版本的默认值收集模块,用于支持ue5.2

* 添加PUERTS_FORCE_CPP_UFUNCTION选项:打开后在js调用js实现的蓝图方法时,直接调用而不需要在引擎段绕一圈

* 反射支持TFieldPath类型

* 添加栈生命周期的原生Buff转js的ArrayBuffer的支持,fix #1360


#### 优化

* 清理大部分ue5的deprecated api使用

* 生成时如果蓝图路径和文件名含特殊符号,忽略并打印warning,如果基类非法,就跳到更基础的基类来继承

* 声明生成过滤掉+号

* 在push对象到js的阶段就处理好引用方向(是原生对象引用js,还是js引用原生对象),简化逻辑,并提升性能

* 对象IsUnreachable也作为无效状态

* 非GameThread加载代理蓝图,js相关初始化延迟到第一次push到js fix #1229

* instancof不走ts,提升静态绑定的性能 (#1246)

* 静态绑定返回值如果是非const引用,按指针处理,不用特别指明 fix #1258

* 去掉EscapableHandleScope的使用,fix #1291

* JsEnv.Build.cs的ShadowVariable设置为Warning fix #1189

* 跳过非法蓝图结构体,蓝图类的生成


#### 变更

* 如果一个方法是蓝图静态方法,而且第一个参数是__WorldContext的话,调用js时忽略该参数 fix #1210

* makeUClass声明为@deprecated

* Puerts模块的LoadingPhase改为PostEngineInit,这会导致GameInstance的ReceiveInit支持不了

* 如果继承引擎类的ts类成员变量类型为UActorComponent子类,将添加组件,而不是仅仅添加一个变量,这会导致业务代码调整

- 定义了组件,就自动在蓝图创建组件,无需在构造函数中通过代码创建,规避了UE的一些多线程加载问题,也更简单些

- 构造函数无法访问Component,建议一些初始化操作放到ReceiveBeginPlay,或者直接在生成的代理蓝图上修改

- 不能通过SetupAttachment对component的层级修改(因为构造函数访问不了,ReceiveBeginPlay又太晚了),需要生成的代理蓝图上手动修改

#### bug修复

* 修复在unity v2发现的问题:https://github.com/Tencent/puerts/issues/1203 ,该问题理论上在ue也有机率发生

* linux编译找不到libnode.so

* 反射调用,参数转换抛出异常后不应该继续往下走

* 修复运行Commandlet时的崩溃问题 (#1247)

* 静态模板const USTRUCT*参数报错的问题,fix #1258

* 代理蓝图,第二次PIE不生效的问题

* ue 5.1按钮消失的问题

* 增加头文件生成的依赖引入

* cjs,esm加载的一些不兼容情况修复

* 中文名字蓝图会导致ue_bp.d.ts重复声明的问题

* 蓝图Interface声明生成无namespace,fix #1304

* 解决反射调用代理蓝图函数,引用参数传递失败的问题

* 解决子类和基类生成蓝图同时被删除,先生成子类再生成基类时导致的REINST assert

### v1.0.3 2023年2月2日

#### 新增特性

* ue类型对应的js类型增加类型名称(编辑器全路径),以便于打印堆栈dump的时候分析

* 静态绑定void*参数支持任意原生对象传入

* 添加常用方法UDataTableFunctionLibrary::Generic_GetDataTableRowFromName的静态绑定

* 手动删除蓝图,重启后自动生成

* puerts::Object、puerts::Funcion加入对JsEnv的生命周期跟踪,降低使用的难度

* cjs和mjs配合优化,支持package.json中通过"type": "module"指定为esm模块,支持在esm中加载.cjs(cjs模块)。

* 添加Puerts.Gen FULL,蓝图全量生成功能

* 默认生成所有struct的声明

* 添加控制台命令(puerts ls,puerts compile)

* 生成代码时,如果加载的蓝图GeneratedClass为空报错

* nodejs版本下,优先调用nodejs的require,加载不成功再使用puerts的加载逻辑

* 编辑器下,quickjs后端默认用dll版本,去掉该后端下不能在业务模块静态声明的问题

* 增加运行时 JavaScript 路径配置


#### 优化

* 反射性能优化

* 蓝图结构体都生成到ue_bp.d.ts

* 优化大量代理蓝图以及ts代码的启动速度


#### 变更

#### bug修复

* 解决刚创建蓝图但未保存,生成d.ts的崩溃

* mixin对输出值设置无效的问题

* 解决带Out参数蓝图调用另一个重定向到ts的Out参数方法,ts中设置Out参数无效的问题

* DefaultJSModuleLoader加载名字带点号的模块

* react-umg声明,对于struct改为Partial来自动处理成可选字段,可以避免引用UE模块时产生的名字空间问题

* 解决如果一个package含超过一个类型,只生成一个类型的bug

* 解决ts继承BlueprintFunctionLibrary在Editor下只跑一次,打包后不跑的问题

* 结构体两次Init的修正

* FName大小写的问题导致函数为空的问题

* json文件加载失败的问题

* 解决继承链上有同名类导致的tid冲突

* ue5生成声明忽略Engine.Transient包,解决ue5改包下类的.d.ts报错问题

* 静态绑定和pesapi的int64、uint64参数,不传bigint都统一用默认值


### v1.0.2 2022年9月8日

#### 新增特性
Expand Down Expand Up @@ -174,4 +490,4 @@

#### 变更

#### bug修复
#### bug修复
Loading

0 comments on commit 53dabd9

Please sign in to comment.