PUER(普洱) Typescript. Let's write your game in UE or Unity with TypeScript.
OTHER License
Bot releases are visible (Hide)
针对v1.0.6的修复
mac下如果遇到移入废纸篓问题,请
cd Plugins/Puerts/ThirdParty
find . -name "*.dylib" | xargs sudo xattr -r -d com.apple.quarantine
Published by github-actions[bot] 9 months ago
支持通过赋值去清空一个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
修复在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能成功返回(但模块不正常)
mac下如果遇到移入废纸篓问题,请
cd Plugins/Puerts/ThirdParty
find . -name "*.dylib" | xargs sudo xattr -r -d com.apple.quarantine
Published by github-actions[bot] 9 months ago
中文版本请查看 doc/unity/zhcn/changelog.md
null
.difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] 12 months ago
中文版本请查看 doc/unity/zhcn/changelog.md
PuerTS
to Tools/PuerTS
import()
) #1540difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] about 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
libwee8.a
and libpuerts.a
in android for xil2cpp mode @mingxxmingJsEnv
now have a public Isolate
field to get the pointer of v8::Isolate
@mingxxmingSnapshotBlob.h
. Use v8's builtin snapshot instead. #1477difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] about 1 year ago
mac下如果遇到移入废纸篓问题,请
cd Plugins/Puerts/ThirdParty
find . -name "*.dylib" | xargs sudo xattr -r -d com.apple.quarantine
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
函数参数是ts关键字导致的语法非法
解决重用外层esm标记导致的两次require间相互影响的问题
静态绑定如果构造函数没重载时,参数错误构造函数不执行也不抛异常的问题
解决元素为组件的容器识别为组件的问题
解决v8 fast api call下静态函数性能慢的问题
修复forceinject的时候可能重复setprototype导致的exception
ue5.2可能会生成重名的隐藏property,加个过滤
Published by github-actions[bot] about 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
link.xml
#1460out
parameters with ValueType might cause crash in xil2cpp mode. #1460difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] about 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
debugpath
was not work and make VSCode debug not availabledpuer.$genericMethod
cannot get the genericMethod from super class in xil2cpp mode #1417 @danij91GetFriendlyName is not a function
when generating extensionInfo #1437This is the first stable version of 2.0.0
. Shout out to everyone who attending the test.
If you need any help in upgrading. See upgrade guide
这个版本是2.0第一个正式版本。感谢所有参与过2.0内测的朋友。
若对升级有疑问可以参见升级指南
difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
mac下如果遇到移入废纸篓问题,请
cd Plugins/Puerts/ThirdParty
find . -name "*.dylib" | xargs sudo xattr -r -d com.apple.quarantine
容器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又太晚了),需要生成的代理蓝图上手动修改
修复在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
Published by github-actions[bot] over 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
object
. the number would be cut to a Int.difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
中文版本请查看 changelog-hans.md
difference between Node.js/Quickjs/V8: wiki
Contributors:
@xtutu
Published by github-actions[bot] over 1 year ago
中文版本请查看 changelog-hans.md
System.Object
.difference between Node.js/Quickjs/V8: wiki
Contributors:
@sesky4
Published by github-actions[bot] over 1 year ago
中文版本请查看 changelog-hans.md
IResolvableLoader
to implement node_modules loading and solve #1270.IBuiltinLoadedListener
to allow Loader to do some operations after the built-in script is executed, which is convenient for encapsulating third-party Loader.difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
breaking change since 1.x
System.DateTime
will no longer translate to Date
in Javascript #1145[0]
instead of ['value']
. (If all your code was using puer.$ref
or puer.$unref
, it will take no effect)require
by default in 2.0.difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
changelog since 1.4.0
object
. the number would be cut to a Int.EXPERIMENTAL_PUERTS_DISABLE_SLOWBINDING
. It will be useful in somewhere need to do access control. This feature is still experimental and will be changed in the future.difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
difference between Node.js/Quickjs/V8: wiki
Published by github-actions[bot] over 1 year ago
mac下如果遇到移入废纸篓问题,请
cd Plugins/Puerts/ThirdParty
find . -name "*.dylib" | xargs sudo xattr -r -d com.apple.quarantine
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代码的启动速度
无
解决刚创建蓝图但未保存,生成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都统一用默认值
Published by github-actions[bot] over 1 year ago
中文版本请查看 doc/unity/zhcn/changelog.md
difference between Node.js/Quickjs/V8: wiki