HVML 是由中国首款开源基础软件 MiniGUI 的作者魏永明设计的描述式编程语言,也是世界首款可编程标记语言。

从 2020 年 5 月开始构思算起,魏永明带领团队历经两年多的时间,于 2022 年 7 月 31 日正式开源发布了 HVML 规范文档以及解释器、渲染器等软件,总代码行数逾百万!

面向未来多屏协同场景下的应用开发需求,HVML 为应用的跨端运行提供了全新的技术框架。HVML 蕴含了大量新颖的设计和独创的思想,是魏永明及其团队近三十年基础软件开发经验的结晶,一经发布便获得了业界的广泛关注。2022 年底,HVML 项目获评 CSDN 2022 “年度开源影响力项目”。

本文将向读者介绍 HVML 社区的近期动态。

软件及文档的更新

HVML 解释器 PurC 0.9.8

2023 年 03 月 31 日,HVML 社区发布 PurC 0.9.8,这也是 PurC 1.0.x 的第八个 alpha 版本。

在这个版本中,开发团队增强了 PurC 中内置的 Foil 字符渲染器并增加了对内嵌 Python 的支持。

值得特别指出的是:使用 PurC 0.9.8 版本中新增的对 Python 的支持,我们可以非常方便地在 HVML 程序中调用 Python 模块,利用 Python 生态中的丰富软件包或模块开发自己的 HVML 应用。与此同时,由 HVML 提供的跨平台、统一 GUI/CLI 应用开发框架以及跨端运行的能力,将弥补 Python 生态和 Web 生态之间几十年来难以跨越的鸿沟,从而极大提升 Python 应用的表现力以及和用户交互的能力。

三维随机游走示例程序

对 HVML 内嵌 Python 的技术细节感兴趣的读者,可点击阅读:《在 HVML 中内嵌 Python》一文。

PurC 0.9.8 版本中一些主要的变化说明如下:

  • 接口变化:
    • 重命名 purc_variant_is_mutable()purc_variant_is_container()
    • 重命名 purc_variant_object_remove_by_static_ckey()purc_variant_object_remove_by_ckey()
    • 使用 purc_ejson_parsing_tree 替代 purc_ejson_parse_tree;使用 purc_ejson_parse_ 替代 purc_variant_ejson_parse_.
    • 新增若干接口。
  • 增强:
    • 可装载动态对象 $PY 的初步实现;HVML 现可和 Python 程序实现互操作。
    • Foil 渲染器支持绘制边框。
    • Foil 渲染器支持浮动及绝对定位。
  • 缺陷修正:
    • 修复有关时区的一些缺陷(来自社区贡献者 @bkmgit)。
    • 修复其他一些缺陷。
  • 整理或清理:
    • 移除重复的测试用例(来自社区贡献者 @bkmgit)。
  • 示例程序:
    • 新增示例程序 embedded-python-find-primes.hvml:使用内嵌 Python 代码寻找素数。
    • 新增示例程序 embedded-python-animated-3d-random-walk.hvml:使用内嵌 Python 代码展示三维随机游走动画。

若发现任何错误、不兼容性和问题,请向 https://github.com/HVML/PurC/issues 报告。

HVML 渲染器 xGUI Pro 0.6.4

最新发布的 xGUI Pro 0.6.4 版本,主要提供了如下增强:

  1. 可和标准的 WebKit2 Gtk 开发包配合使用,不再强制要求使用定制的 WebKit 引擎(对性能有略微影响)。
  2. 除 Linux 之外,同时支持 macOS 系统(需使用 macPorts 提供的 webkit2gtk-devel 包)。

若发现任何错误、不兼容性和问题,请向 https://github.com/HVML/xGUI-Pro/issues 报告。

HVML 规范 1.0 RCa

我们于 2023 年 03 月 31 日发布了 HVML 规范 1.0 RCa 版本,并进入到 HVML 规范的 1.0 RCb 版本。

在 RCa 版本中,我们围绕 HVML 语言规范主要做了如下调整及增强:

  1. 当使用 DOCTYPESYSTEM 标识符规则装载外部模块时,将对应的动态对象绑定到行者级变量上。

有关详情,可点击阅读如下链接:

HVML 预定义变量规范 1.0 RCa

我们于 2023 年 03 月 31 日发布了 HVML 预定义变量 1.0 RCa 版本。

在这个版本中,我们围绕 HVML 预定义变量主要做了如下调整及增强:

  1. 新增必要动态变量 $SOCK
  2. 新增可选动态变量 $PY

有关详情,可点击阅读如下链接:

社区活动

2023 年 02 月 26 日,HVML 社区举办了第三次线上研讨会,主题为“HVML 应用之实现爬虫”,介绍了 HVML 项目的最新进展,并为大家讲解了如何使用 HVML 实现爬虫。视频回放如下:

2023 年 03 月,社区小伙伴们围绕如下方面做出了贡献:

  1. 修复有关时区的一些缺陷;移除重复的测试用例。由 @bkmgit 提交拉取请求。

  2. 添加 PurC/README_zh.md 中 Python 的具体版本号,由 @taotieren 提交拉取请求

    2023 年 04 月 02 日 19:00 ~ 20:30,我们将举办 HVML 社区的第四次线上研讨会,主要内容是讲解如何在 HVML 中内嵌使用 Python 以及 Foil 渲染器的最新进展。欢迎大家积极参加!

    第四次研讨会.png

下一步计划

2023 年 04 月底,我们将发布 PurC 0.9.10 版本,预期功能包括:

  1. 增强 Foil 字符渲染器以支持文档内容的动态更新。
  2. 增强 Foil 字符渲染器以支持表格(table)布局。
  3. 增强 Foil 字符渲染器以支持网格(grid)盒子布局。
  4. 增强 Foil 字符渲染器以支持弹性(flex)盒子布局。
  5. 新增对预定义变量 $SOCKET 的支持,以便 HVML 程序可以作为服务器程序运行。

2023 年 05 月底,我们将发布 PurC 0.9.12 版本,预期功能包括:

  1. 增强 Foil 字符渲染器以支持全屏模式,支持多窗口。
  2. 增强 Foil 字符渲染器以支持 selectinput 等基本输入构件。

2023 年 06 月底,我们将发布 PurC 0.9.14 版本(相当于 1.0.0 Beta),预期功能包括:

  1. Foil 字符渲染器的完整实现。
  2. 预定义动态对象的完整实现。

预计我们将在 2023 年 07 月底发布 PurC 0.9.16 版本(相当于 1.0.0 PR),预期功能包括:

  1. 内存及性能的初步优化。
  2. 对 Windows 平台的支持。

常见问题及解答

Q:HVML 是针对嵌入式和物联网使用的吗?

A:不仅仅是。HVML 是一种通用的胶水语言,HVML 的目标平台包括传统的桌面、服务器、智能手机、平板、嵌入式设备和物联网设备。

Q:HVML 是打算取代现有的 Web 前端开发技术,比如 JavaScript 吗?

A:没有这个计划。HVML 的渲染器会用到 Web 前端技术,但 HVML 的目标并不是取代现有的 Web 前端开发技术,而是面向未来的多屏协同场景下的需求,为应用的跨端运行提供全新的技术框架,同时作为合璧操作系统(HybridOS)的首选编程语言。

Q:在哪里可以看到 HVML 相关的源代码?

A:HVML 相关文档及代码仓库在 https://github.com/HVML 上开源发布,其中包括:

  1. HVML 解释器(PurC):https://github.com/HVML/PurC
  2. HVML 图形渲染器(xGUI Pro):https://github.com/HVML/xGUI-Pro
  3. 扩展 WebKit 引擎(仅源代码包)
  4. 开发用 HVML 字符渲染器(PurC Midnight Commander):https://github.com/HVML/PurC-Midnight-Commander

Q:有可以直接下载安装的软件包吗?

A:因开发团队精力有限,目前尚没有制作针对各个操作系统的安装包,但来自开源社区的小伙伴们已经积极行动,帮助我们完成了一些 Linux 发行版的安装包。我们将这些软件包收集到了如下页面,可访问查看:

https://hvml.fmsoft.cn/software

Q:如何赞助 HVML 相关的项目?

A:个人打赏性质的赞助,您可以点击文后的阅读原文。大额的赞助,可通过“联系我们”留下联系方式,或者致信 hvml@fmsoft.cn,我们会及时联系您。

原文链接

https://store.fmsoft.cn/campaign/denoteoss-lt