更新日志#
0.6.1(待发布)#
- 优化 JS 高频读取 Python list/dict:内置容器通过原生路径读取,减少重复生命周期检查及 Python 分发。
- 读取操作改用数字操作码,数组下标以 number 传递;普通内置标量直接返回,嵌套容器复用已有代理,减少临时句柄分配和延迟释放。
- 保留实时共享、代理身份、子类与 awaitable 行为、整数安全范围及 Unicode 语义;补充键比较和析构回调重入、绑定撤销等回归测试。
- 新增可复现的容器读取性能基准,比较实时代理、预先复制与包含复制成本的路径;记录本地测量及高频计算的快照选择建议。
0.6.0#
- Breaking:可变容器默认双向共享。Python list/dict 在 JS 中支持索引、length、原生 Array 方法、Object 枚举与直接 JSON 序列化;JS Array/普通对象在 Python 中为 JSArray/JSObject 容器视图。
- evaluate、evaluate_async、ScriptPage.evaluate 和 to_python 增加 copy=True,显式生成独立的 Python list/dict;默认共享路径支持别名、循环引用和跨语言混合容器。
- Python list 保持稠密,空位使用 undefined 填充;dict 的 JS 属性仅对应字符串键,非字符串键通过高级 Python 接口访问。
- list/dict 属性不再暴露 Python 方法,改用 Python.getattr;JSON.stringify 无需 Python.to_value。迁移细节见 对象桥接。
- 容器视图独立保留句柄,身份缓存使用弱引用,保留绑定隔离、文档失效与线程检查。
0.5.0#
- Windows wheel 修复时排除由系统加载器解析的
ext-ms-win-*API set,避免分析 AppCore DLL 依赖时因找不到对应文件而失败。 - 将 API 和 AppCore 按职责拆分为公开子模块,支持
api.runtime、api.view、api.values、appcore.application和appcore.window导入。 -
错误、资源和页面事件类型统一由
ultralight_py根入口导出;进程退出清理在首次创建 Runtime 或 Application 时注册。 -
新增 AppCore Application/Window:系统字体、DPI、原生输入与 IME,复用 Runtime、View、资源加载和 Session。
- 新增独立 API 注册表与
@api.register,支持对象代理、加载前附着、导航恢复及即时更新与撤销。 -
提供同步/asyncio 应用循环和手动步进;统一窗口关闭、页面等待、异步投递与 Python 引用清理,wheel 包含 AppCore。
-
新增原生 Session API:创建、查询、复用、持久化和关闭;View 可指定 Session,支持关联 View 占用检查和强制关闭。
-
增加独立 RGBAImage 与原生 BGRA/stride/去预乘转换;提供延迟加载的可选 Pillow/NumPy 输出,转换可在线程池中执行。
-
增加多订阅事件与主框架页面状态;旧回调槽替换不影响内部等待和独立订阅。
- 提供被动
wait_ready/wait_settled/wait_until/wait_for_selector、结构化 PageLoadError,处理导航、关闭、超时和取消。 - 增加可选 ScriptDriver:宿主注入推进回调,或显式启用共享的按需循环;脚本导航跟随未完成的引擎导航链。
- 增加
ScriptPage.expect_navigation,在点击/提交前登记等待;动作与新页面就绪共用超时预算。 - Runtime 支持
cache_path,配置磁盘缓存及浏览器持久化存储目录,遵循首次初始化冻结规则。 - 支持 Python 实例和容器实时代理、绑定隔离及撤销。
- 提供
Python.to_value(),将 Python 容器复制为普通 JS Array/Object。 - 支持 JS Promise 等待、异步求值和调用,以及 Python awaitable 转 JS Promise。
- 提供 asyncio 定时驱动入口;await 不隐式调用
Runtime.update()。 - 取消、解绑、导航、关闭及驱动器失败时清理相关等待和投递。