【Rust日报】2023-06-27 Zellij 支持使用 Rust Sdk 来开发 WebAssembly 插件

2023-09-26 17:35:22 浏览数 (2)

Zellij 支持使用 Rust Sdk 来开发 WebAssembly 插件

Zellij 是一个类似 tmux 的终端复用器,并且提供了插件的能力。

插件可以编程式地管理用户的工作区(窗格、选项卡、命令、编辑器),并在特定事件(文件访问、按键、命令结束等)时被唤醒。

其近日发布了最新的插件系统,提供了一个 Rust SDK(zellij-tile)来开发 Rust 插件(其他语言即将推出!)。

与传统的终端应用程序不同,Zellij 插件不需要管理自己的输出缓冲区,相反,它可以在需要呈现其 UI 组件的位置进行渲染; Zellij 还为插件提供了访问后台工作程序以执行长时间运行的任务(例如大型搜索查询)的功能。

  • 原文链接:https://zellij.dev/news/new-plugin-system/
  • 示例插件 monocle:https://github.com/imsnif/monocle
  • 示例插件 multitask

Rust 中的代码覆盖率

代码覆盖率是一种度量代码保护程度的指标,一般而言,覆盖率越高代表着代码越值得信赖。

根据测量单元的不同,可以有下面几种级别划分:

  1. 函数覆盖率:衡量定义的函数在程序执行期间实际调用的程度的重要指标
  2. 语句覆盖率:用于评估程序运行时执行语句的程度的基本指标。
  3. 分支覆盖率:评估测试套件执行代码分叉的程度的关键指标。
  4. 条件覆盖率:用于评估测试在涵盖布尔子表达式的所有可能结果方面的充分性的指标。

本文介绍了,在 1.60 版本之后,如何使用 Rust 和 LLVM 工具来生成代码覆盖率报告,包括启用编译时代码覆盖率、执行性能测试程序等步骤,并使用例如 grcov 这样的工具生成可视化报告。

文章还提到了一个名为 Tarpaulin 的强大工具,可以帮助开发者更加便捷地生成代码覆盖率报告,下面是使用 cargo-tarpaulin 运行覆盖率报告的示例:

代码语言:javascript复制
cargo tarpaulin
Jun 18 16:54:56.341  INFO cargo_tarpaulin::config: Creating config
Jun 18 16:54:56.433  INFO cargo_tarpaulin: Running Tarpaulin
Jun 18 16:54:56.433  INFO cargo_tarpaulin: Building project
Jun 18 16:54:56.433  INFO cargo_tarpaulin::cargo: Cleaning project
   Compiling rust_sandbox v0.1.0 (/home/imrubensi/rust_sandbox)
    Finished test [unoptimized   debuginfo] target(s) in 0.35s
Jun 18 16:54:56.907  INFO cargo_tarpaulin::process_handling::linux: Launching test
Jun 18 16:54:56.907  INFO cargo_tarpaulin::process_handling: running /home/imrubensi/rust_sandbox/target/debug/deps/rust_sandbox-0bab96c8aa79a774

running 1 test
test tests::it_works ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

Jun 18 16:54:57.137  INFO cargo_tarpaulin::report: Coverage Results:
|| Uncovered Lines:
|| Tested/Total Lines:
|| src/lib.rs: 4/4
|| 
100.00% coverage, 4/4 lines covered
  • 原文链接:https://rrmprogramming.com/article/code-coverage-in-rust/
  • grcov
  • tarpaulin

Slint 发布 1.1 版本

伴随着更加友好的协议,Slint 这个广受欢迎的 UI 库发布了 1.1 版本。

这个版本中,带来了一系列更新和改进,例如:

  1. 通过 tr 宏可以轻松完成翻译的功能(基于 gettext),例如 Text { text: @tr("Hello, World"); }
  2. 基于 Microsoft 发布的 fluent2 手册进一步对齐 fluent UI 风格
  3. 引入新的 widget 组件,例如 SwitchProgressIndicator
  4. OpenGL 的集成

同事,Slint 的协议在 GPLv3 协议的基础上进一步开放,允许在桌面或者 web 应用中集成并发布,但不允许单独发布而不将其集成到应用程序中。

  • Slint 更新日志:https://slint.dev/blog/slint-1.1-released
  • Slint 协议更新

-- From 日报小组 RustPlumber

0 人点赞