Skip to content

RustMusic v0.5.3

Choose a tag to compare

@LingyunStudio LingyunStudio released this 04 Oct 06:10
· 5 commits to main since this release

RustMusic v0.5.3

修复

  • 桌面歌词卡「纯音乐,请欣赏」:桌面歌词窗口启动时握手先于监听注册,
    主窗口补推的歌词帧在注册完成前到达而丢失——窗口(重)打开时歌词已就绪的
    场景(在线字幕/缓存歌词秒回时最常见)整首歌都不显示歌词。现改为监听
    注册完成后再握手,补推必然送达

重构:整体结构模块化(行为零变化)

  • 后端:commands.rs(3152 行 / 130 个命令)按业务域拆为 13 个子模块;
    engine.rs(1411 行)拆为播放核心 / 输出设备 / WASAPI 独占 / 在线缓存
    四块;main.rs 拆出 WebView 挂起、托盘、监控循环;对外命令名称与
    注册路径不变
  • 前端:store.ts(2708 行)按领域切为 zustand slices(播放队列 / 在线
    音源 / 歌单 / 设置 / UI);两个在线音源大视图拆出弹窗、右键菜单、
    行组件等 9 个子组件
  • 引擎句柄去掉多余的 Mutex 包装:Engine 内部本就以细粒度锁 + 原子量
    管理状态,命令层克隆句柄后在锁外操作,不存在全局串行点

性能:阻塞操作全部移出异步运行时

  • 在线音源的搜索 / 取链 / 扫码轮询 / 歌单导入 / 下载等约 50 个命令此前直接在
    tokio worker 线程上执行同步网络调用,并发请求一多整个运行时会卡顿;现在
    统一放到专用阻塞线程池执行,UI 与其他命令不再被网络操作拖住
  • 拖拽导入、皮肤图压缩的图片解码、封面取色同步网络同样处理

性能:数据库写入优化

  • 扫描入库由逐条独立事务改为每批单事务提交,fsync 开销降一个数量级,
    大库扫描更快、与 UI 查询的互相干扰更小
  • 新库启用 synchronous = NORMAL(WAL 推荐档位)与 busy_timeout 兜底

维护

  • tauri / ureq / keyring 等关键依赖锁到 minor 版本,CI 启用 --locked,
    依赖变更必须显式评审