Skip to content

Releases: Tencent/puerts

Unity_v2.0.0,ApiLevel:32

31 Jul 10:27
Compare
Choose a tag to compare

中文版本请查看 doc/unity/zhcn/changelog.md

  1. Fix: debugpath was not work and make VSCode debug not availabled
  2. Fix: puer.$genericMethod cannot get the genericMethod from super class in xil2cpp mode #1417 @danij91
  3. Fix: GetFriendlyName is not a function when generating extensionInfo #1437

This 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

Unity_v2.0.0-rc.1,ApiLevel:32

14 Jul 09:59
Compare
Choose a tag to compare
Pre-release

中文版本请查看 doc/unity/zhcn/changelog.md

  1. Fix: BlitableCopy was broken issue #1427
  2. Fix: two wrapper generation issue #1433 #1432

difference between Node.js/Quickjs/V8: wiki

Unity_v2.0.0-rc.0,ApiLevel:32

01 Jul 06:14
Compare
Choose a tag to compare
Pre-release

中文版本请查看 doc/unity/zhcn/changelog.md

  1. Fix: struct's paramless default ctor was unable to use #1301
  2. Fix: op_xxxx method was unable to use after generated #1399
  3. Fix: GetFriendlyName was not defined after generated
  4. Fix: the Constructor of BlittableCopy Type didn't invoked
  5. Optimization: isESM check optimize #1391

difference between Node.js/Quickjs/V8: wiki

Unreal_v1.0.4

19 Jun 11:56
Compare
Choose a tag to compare

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又太晚了),需要生成的代理蓝图上手动修改

bug修复

  • 修复在unity v2发现的问题:#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

Unity_v1.4.2,ApiLevel:19

16 Jun 08:25
Compare
Choose a tag to compare

中文版本请查看 doc/unity/zhcn/changelog.md

  1. fix: the crashed after getting a StackOverflowException #1208
  2. Fix: the Error message threw from JS to CS would have unexpected character.
  3. Fix: if an error is thrown in constructor, some valuetype would become null unexpectly.
  4. fix:when passing a JS number to C# object. the number would be cut to a Int.

difference between Node.js/Quickjs/V8: wiki

Unity_v2.0.0-pre.5,ApiLevel:32

16 Jun 07:01
Compare
Choose a tag to compare
Pre-release

中文版本请查看 changelog-hans.md

  1. Fix: Error occurs when generating classes with op_explicit #1363.
  2. Fix: Issue with ClearModuleCache causing a crash #1364.
  3. Fix: Error in generating when struct produces recursive definition through pointers in xil2cpp mode #1365.
  4. Fix: Crash when printing struct in xil2cpp mode #1376.
  5. Fix: Crash when assigning JSObject to numeric type C# Field/Property #1383.
  6. Fix: Issue with ineffective Filter.
  7. Optimization: Changed xil2cpp mode's c plugin code to be generated instead of being included in the package.
  8. Optimization: Added FAQHelper to optimize code generation and error prompts during build.
  9. Optimization: Improved error messages for reflection calls, compatible with trimmed interfaces.
  10. Optimization: Changed the separator for console.log elements from comma to space. #1373
  11. Optimization: Improved Node.js event loop #1093 #1279.
  12. Optimization: Suppressed warnings from DefaultMode's StaticWrapper.
  13. Feature: Added JSObject.Get(string) and refactored ExecuteModule to use this Get interface.
  14. Feature: Added Filter for xil2cpp valuetype declaration.

difference between Node.js/Quickjs/V8: wiki

Contributors:
@xtutu

Unity_v2.0.0-pre.4,ApiLevel:31

29 May 04:29
Compare
Choose a tag to compare
Pre-release

中文版本请查看 changelog-hans.md

[2.0.0-pre.4] - 2023-05-29

  1. Fix: the Error message threw from JS to CS would have unexpected character.
  2. Fix: doc generating fix #1322 #1329
  3. Fix: if an error is thrown in constructor, some valuetype would become null unexpectly.
  4. optimize: performance in WebGL is optimized.
  5. Fix: dts with Enumerable would throw compile error #1322
  6. To distinguish the meaning between Unity Il2cpp backend, we named the new il2cpp binding mode(v2 mode) to xIl2cpp mode.
  7. Fix: in xIl2cpp mode, create Puerts.ArrayBuffer in csharp would make its memory unstable. #1340
  8. Fix: in xIl2cpp mode, it would crash when returning a valuetype in a method with returntype System.Object.
  9. Fix: in xIl2cpp mode, it would crash when transfering nullable valuetype. #1320
  10. Fix: in xIl2cpp mode, it would crash when setting a valuetype to ref/out arguments. #1343
  11. Register logic refactor: #1317. Now we have a new access control ability.

difference between Node.js/Quickjs/V8: wiki

Contributors:
@sesky4

Unity_v2.0.0-pre.3,ApiLevel:31

19 Apr 10:57
Compare
Choose a tag to compare
Pre-release

中文版本请查看 changelog-hans.md

  1. Fix: ios Node.js cannot start for PuerTS's openupm version #1302
  2. Fix: the dependencies of DontBinding methods are still generated in DTS generation #1295
  3. Fix: some properties only have setters will report errors in wrapper generation #1298
  4. Fix: several problems with static fields in il2cpp binding mode #1288
  5. Fix: il2cpp binding mode + Unity2021 will crash when using structs reflecting #1288
  6. Fix: still cannot find generic classes after link.xml generation #1288
  7. Feature: add C# Enumerable forof support on JS side #1234
  8. Feature: refactor old ExecuteModule implementation to be consistent with il2cpp binding mode. At the same time, import 'csharp' and import 'puerts' are no longer supported, and it is recommended to use global variables.
  9. Feature: add IResolvableLoader to implement node_modules loading and solve #1270.
  10. Feature: add 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

Unity_v2.0.0-pre.1,ApiLevel:30

08 Mar 07:33
Compare
Choose a tag to compare
Pre-release

中文版本请查看 doc/unity/zhcn/changelog.md

  1. Add a new language binding directly based on il2cpp and there will be huge performance benifit. see our docsite for more information.
  2. The package layout of unity code in this repository is changed to UPM layout.
  3. Move the commonjs-support package into this repository.

breaking change since 1.x

  1. System.DateTime will no longer translate to Date in Javascript #1145
  2. TypedValue could pass to a object only. You will no longer use it to select overload.
  3. If a method has no overload and default param, PuerTS will not check the type of the params in ReflectionMode(SlowBinding).
  4. The accessor key of ref object change to [0] instead of ['value']. (If all your code was using puer.$ref or puer.$unref, it will take no effect)
  5. As what we mentioned in changelog of 1.4: there will be no require by default in 2.0.

difference between Node.js/Quickjs/V8: wiki

Unity_v1.4.1,ApiLevel:19

02 Mar 07:46
Compare
Choose a tag to compare

中文版本请查看 doc/unity/zhcn/changelog.md

changelog since 1.4.0

  1. fix: the crashed after getting a StackOverflowException #1208
  2. fix: could not get any log in inspector with Node.js backend. #1201
  3. fix: if a error is thrown in ESM and the message contains line ends, the error message could be incorrect. #1188
  4. fix: did not filt a obsoleted property setter/getter. #1152
  5. fix:when passing a JS number to C# object. the number would be cut to a Int.
  6. feature: JsEnv.ClearModuleCache can clear ESM module cache now.
  7. feature: now you can use JSObject to store a JS function. #1143 #1144
  8. feature: add 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.
  9. optimize: do not lock the mutex when destroying a JSFunction or JSObject.

difference between Node.js/Quickjs/V8: wiki