跳到主要内容

更新日志

版本历史

v1.3.1

修复 修复一个历史遗留bug

  • 当窗口设置为使用进程图标非页面图标时,无法正确设置窗口图标

v1.3.0

年终更新!

本次更新为本年度最后一次更新,如果你对26年度有什么想法可以提交问卷: https://wj.qq.com/s2/25628138/c3fd/

新增功能

对话框 API

新增了对话框 API,该 API 类似于 Electron 的 dialog 模块,支持在前端和 C 代码中使用,用于显示文件选择、保存文件、消息提示等对话框。

前端 API

C API

通知功能

新增了桌面通知功能,允许应用程序向用户显示系统通知,支持自定义标题、内容、图标、按钮等。目前仅在 Windows 平台上可用。

C API

改进与修复

  • 改进了错误处理机制

v1.2.0

重要改进! 不再只是简单的为编辑框元素放行右键菜单

  • 右键菜单控制增强:

新事件

  • 增加窗口事件:新增 window-fullscreen 事件,当窗口全屏状态改变时触发,可用于监听和响应全屏状态变化

修复

  • 修复了前端无法全屏的问题
  • 修复以及优化一些已知问题

v1.1.3

创建本地服务器增强

  1. SPA 路由支持

    • 修复了前端框架(如 Umi、Vue、React)打包的多路由应用刷新非首页路由时出现 404 的问题
    • 支持前端路由的 History 模式和 Hash 模式
    • 确保路由切换和页面刷新都能正常工作
  2. URL 大小写不敏感

    • 实现了 URL 路径大小写不敏感的处理
    • 无论用户输入什么大小写的 URL,都能正确访问对应的资源
    • 提升���用户体验,减少了输入错误的可能性
  3. 路径规范化和安全

    • 统一了路径格式,处理了各种路径分隔符和格式问题
    • 增强了路径安全,防止恶意路径访问
    • 确保应用只能访问指定目录内的资源

修复问题

  1. SPA 路由刷新 404

    • 解决了前端框架多路由应用刷新页面时的 404 错误
    • 确保所有路由路径都能正确处理
  2. 窗口标题同步 窗口标题未设置的情况下自动跟随页面标题

    • 修复了页面多次更新标题时窗口标题不同步的问题
    • 确保窗口标题始终与页面标题保持一致

v1.1.2

API增强

修复由窗口库引起的以下问题

我自己实现了固定边框去除标题栏同时开启时的逻辑代码 重做了无边框窗口的实现

  • 修复固定边框且去除标题栏后边框异常
  • 修复无边框窗口时出现windows7风格边框的异常

全新的无边框窗口优化

不再使用窗口样式完成无边框窗口

  • 以往的无边框窗口,在这��操作最小化最大化还原无法享受系统动画 但是我们的方式可以让这些操作,享受系统动画。

其它修复

  • 无法收到window-state-changed的问题

优化已知问题

v1.1.0

**新增功能 **

  • 内容保护功能

    • WebViewWindowOptions 结构体中添加 content_protection 字段,支持创建窗口时设置内容保护
    • 新增 set_content_protection 函数,可动态设置窗口内容保护状态,防止��口被截图捕获
  • WebView 缩放控制

    • 新增 set_webview_zoom 函数,支持动态设置 WebView 的缩放级别,范围通常为 0.1 到 5.0

**其它更新 ** 优化了和修复了一些功能

v1.0.5

增加两个核心Api

功能说明: 这两个函数用于在 Rust 和 C 之间安全传递字符串,解决了跨语言内存管理问题,避免了因内存泄漏或重复释放导致的程序崩溃。

适用场景

  • 当需要在 C 代码中创建可被 Rust 释放的字符串时
  • 解决之前循环发送消息导致的乱码问题
  • 确保跨语言字符串传递的内存安全

这组 API 提供了可靠的跨语言文本内存管理方案,适合任何需要在 Rust 和 C 之间频繁传递字符串的场景。

  • 优化一些内存释放问题

v1.0.2

WebViewSettings 结构体增强

说明 :用于限制可接收的 PostMessage 消息来源,提高安全性

当 WebView 接收到 PostMessage 消息时触发,仅当消息来源在白名单中时才会触发

兼容性警告! 通讯Api发生变更,以前的前端Api不再支持,请使用新的Api 现在DevTools网络 选项页面中,可以直接查看通讯过程

基于我们对前后端通信机制的调整,从传统的消息队列/事件模型改为基于自定义协议的invoke/event模型,预期在以下方面带来性能提升:

1. 通信延迟优化

  • 旧模型:基于事件或postMessage,涉及浏览器安全检查、事件循环调度等额外开销,延迟通常在 10-30ms 范围
  • 新模型:直接通过自定义协议(http://jade.{appname}/invoke/)通信,绕过了浏览器事件队列,延迟可降低至 0.3-0.6ms
  • 提升幅度70%-90% 的延迟降低

2. 吞吐量提升

  • 旧模型:事件驱动模型在高并发下易出现事件队列阻塞,吞吐量约为 100-200 请求/秒
  • 新模型:基于HTTP请求的并行处理,支持浏览器的连接池复用,吞吐量可提升至 500-1000 请求/秒
  • 提升幅度200%-400% 的吞吐量提升

3. 资源消耗降低

  • CPU利���率:减少了事件循环调度和消息序列化/反序列化的开销,CPU消耗降低约 30%-50%
  • 内存占用:简化了中间层数据结构,内存占用降低约 20%-40%
  • GC压力:减少了临时对象创建,垃圾回收频率降低约 40%-60%

4. 异步处理效率

  • 旧模型:依赖事件监听器,易出现回调地狱和内存泄漏
  • 新模型:基于Promise/async-await的异步模型,更高效的内存管理和执行流程
  • 提升幅度:异步操作的整体效率提升约 40%-60%

5. 具体表现

  • 前端调用jade.invoke()的响应时间从平均 8ms 降至 1ms 以内
  • 支持的并发IPC请求数量从约 150 提升至 800 以上

6. 理论验证 这种基于自定义协议的IPC模型与现代框架的通信机制一致,已被证明在性能和可靠性上优于传统的事件驱动模型。通过直接利用浏览器的HTTP请求机制,避免了额外的中间层开销,实现了更高效的前后端通信。

这些性能提升数据基于理论分析和类似架构的行业数据,实际表现可能因硬件环境、网络条件和具体应用场景有所差异,但整体提升趋势是明确的。

v0.5.0

重大性能优化

本次内部基层彻底重写,多个维度提升效率,预计整体提升250%-300%:

之前是单车道 + 红绿灯 + 大货车(JSON)+ 每车必检�� 优化后是多车道 + 智能交通灯 + 小客车 + 批量安检,整体通行效率大幅提升。

  1. 通道优化: 减少线程切换开销,提升约30%-50%
  2. 消息批处理:1ms延迟合并多条消息,减少系统调用次数,高并发下提升约40%-60%
  3. 序列化优化:序列化速度提升约2-3倍,数据体积减小约50%
  4. 锁机制优化:全局锁拆分为细粒度锁,减少锁竞争,提升约30%-40%
  5. 前后端通讯提升:提升约20%-30%,由原来的6-10ms降低至5-2ms

v0.3.3

性能优化

显著提高应用程序的性能,特别是在空闲状态下的CPU使用率,同时保持事件处理的响应性。

  • CPU使用率:空闲状态下降低90%以上

  • 事件处理延迟:降低15-25%

  • 并发性能:提高10-20%

事件优化

v0.3.2

  • 修复高分DPI时,窗口位置与尺寸不正确的问题
  • 重做execute_javascript方法
  • 修复一些Api,在x86程序下堆栈错误

v0.3.1

优化

重要优化!不再使用C约定API,请及时修改Api引入方式

例如@JadeView_init 改为 JadeView_init 引入方式

  • 优化发行文件大小

Api增强

修复

  • 修复某些事件重复触发两次的问题

v0.2.1

API增强

  • WebView窗口选项扩展 :
    • 在 WebViewWindowOptions 结构体中新增 borderless 字段
    • 功能:支持无边框窗口设置,1为无边框,去除边框和系统阴影
    • 默认值:0
  • 新增C API函数 :
    • set_window_fullscreen :设置指定窗口的全屏状态
    • is_window_maximized :获取窗口是否处于最大化状态
  • WebView设置增强 :
    • 在 WebViewSettings 结构体中新增 allow_fullscreen 字段
    • 功能:控制是否允许页面全屏,0=false,1=true

API调整

  • 移除set_window_event_handlers事件处理方法

v0.2.0

重要更新 本次更新对 WebView 事件处理和窗口管理架构进行了重要改进,引入了更高效的事件通信模型。

功能增强

  • webview-will-navigate 事件增强
    为该事件添加了阻止导航的能力,允许应用在页面跳转前进行拦截和控制。

  • 新增 C API 函数
    添加 reload_webview_window 函数,支持通过 C API 刷新 WebView 页面内容。

架构优化

  • 事件通信模型重构
    将原先基于传统的轮询模型升级为唤醒的组合模式,实现更高效的事件传递。
    • 现在程序稳定性大幅度提升
    • 顺便修复了窗口启动偶尔掉速的情况

性能提升

下表展示了在典型 GUI 高负载场景下(如:每秒处理 500 个 IPC 消息 + 同时进行窗口缩放),两种架构的性能对比:

性能指标旧方案 (Mutex + Vec 轮询)新方案 (MPSC Channel + 批量处理)预期性能提升
单次消息处理耗时~50ms (受限于锁竞争等待)~0.2μs (无锁/微锁推入)约 250 倍
UI 线程阻塞 (Jank)频繁阻塞,容易导致掉帧和卡顿几乎不阻塞,保持稳定帧率流畅度提升 3-5 倍
消息处理吞吐量低 (逐条加锁,上下文切换频繁)极高 (一次唤醒处理成百上千条)10 倍以上
CPU 资源开销高 (空转轮询和锁争用消耗)低 (仅在有消息时精准唤醒)降低 40% - 60%
架构稳定性/安全存在死锁风险 (锁依赖循环)架构级规避死锁 (读写完全解耦)安全性质变
用户直观感受拖拽窗口有延迟、程序偶尔假死丝滑顺畅、响应迅速质的飞跃

v0.1.2

新增功能
  • 实现了窗口隐藏/最小化时自动开启webview的效能模式
    • 背景限速策略

    • 默认策略 (值为0): 窗口隐藏或最小化时自动开启webview的效能模式
    • 禁用背景限速 (值为1): 窗口状态变化不影响webview的效能模式
    • 支持根据background_throttling设置控制webview的行为
修复问题
  • 改进了日志记录
ZIP 包

发行文件具体说明:JadeView发行文件说明

  • JadeView_win_x86_dynamic_v0.1.2.zip - 32位动态链接版本打包
  • JadeView_win_x86_static_v0.1.2.zip - 32位静态链接版本打包
  • JadeView_win_x64_dynamic_v0.1.2.zip - 64位动态链接版本打包
  • JadeView_win_x64_static_v0.1.2.zip - 64位静态链接版本打包
  • JadeView_win_arm64_dynamic_v0.1.2.zip - ARM64位动态链接版本打包
  • JadeView_win_arm64_static_v0.1.2.zip - ARM64位静态链接版本打包

v0.1.1

  • 添加了文件拖拽事件支持
  • 修复一些问题

v0.1.0

  • 初始版本发布
  • 完整的 C API 接口
  • WebView 窗口管理
  • 事件系统
  • 主题管理
  • IPC 通信
  • 本地服务器支持

版权信息

© 2025 JadeView. 保留所有权利。