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

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

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

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

软件及文档的更新

HVML 解释器 PurC 0.9.0

2022 年 10 月 31 日,HVML 社区发布 PurC 0.9.0,这也是 PurC 1.0.x 的第三个 alpha 版本。若发现任何错误、不兼容性和问题,请向 https://github.com/HVML/PurC/issues 报告。

在这个版本中,主要完成了如下两个重要的增强:

首先,为方便构建,我们将 DOM Ruler、PurC Fetcher 等组件整合到了 PurC 仓库中,以方便解释器及其主要组件的构建和维护。这些组件的原有代码仓库将同步废弃。

其次,提供了内建字符渲染器 Foil 的初步支持,目前可在字符终端上展示简单的 HTML 文档内容。Foil 渲染器作为解释器命令行工具 purc 的组件开发,以 purc 进程的单个线程(行者)运行。这展示了基于 HVML 的应用框架的灵活性,跨端运行 HVML 应用的可行性。我们计划在 Foil 中支持 CSS 2.2 的绝大部分属性和部分 CSS Level 3 的样式和布局属性,最终,HVML 将统一 CLI(命令行界面)和 GUI(图形用户界面)的开发。也就是说,一个 HVML 程序,使用 Foil 这样的字符渲染器时,可通过字符终端展示内容并实现和用户的交互,而使用 xGUI Pro 这样的图形渲染器时,可通过图形界面展示内容并实现和用户的交互,而无需做任何修改。

本版本全部的错误修复、增强、优化和调整罗列如下:

  • 错误修正(暂无)
  • 功能增强
    • bind 元素 constantly 属性的支持。
    • 对替代表达式(substituting expression)的支持。
    • 对元组(tuple)的基本支持。
    • FS 动态对象对 macOS 的完整支持。
    • init 元素支持创建行者级变量。
    • 增强 PurC Fetcher 以支持数据获取进度。
    • 增强 archetypearchedataexceptinitdefineupdate 元素,以支持从外部获取器中获取数据。
    • 增强动作元素,以支持 idd-by 介词属性,用于定义元素的标识符。
    • $~ 上下文变量作为 $< 的别名。
    • 支持 HVML 规范定义的副词属性的简写或者等价名称。
    • PURCMC 协议支持 THREAD 通讯方式。
  • 优化(暂无)
  • 改进
    • 改进异常处理机制。
    • 改进抽象文档对象(purc_document_t)的接口。

截止 0.9.0 版本,PurC 仓库中的单元测试程序数量已超过 100 个,测试用例数量超过 1000 个。

HVML 规范 1.0 RC7

我们于 2022 年 10 月 31 日发布了 HVML 规范 1.0 RC7 版本,并进入到 HVML 规范的 1.0 RC8 版本。

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

  1. 允许在需要避免使用尖括号作为上下文变量的情形下,可使用 $~ 替代 $<
  2. 使用 [!] 定义元组;保留 ( ... ) 用于定义类似其他高级语言的数学或者逻辑表达式。
  3. 增加了 constantlyconcurrentlyresponsively 等副词属性的简写形式。
  4. 增加了 noreturnnosetotail 的等价书写形式。
  5. 增加了 idd-by 介词属性,用于设定动词元素的标识符,以避免在动词元素中使用名词属性 id

我们将在 RC8 版本中,围绕如下特性做一些微调:

  1. 设计用于表示字符串常量的语法,以方便定义异常和错误名称。

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

社区活动

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

  1. 对 macOS 平台上构建系统的增强,由 @chf007 提交拉取请求。

下一步计划

2022 年 11 月底,我们将发布 PurC 0.9.4 版本,预期功能包括:

  1. 对元组的完整支持。
  2. 对字符串常量的支持。
  3. 在复合表达式中支持行注释。
  4. request 元素的完整支持。
  5. 增强 update 元素以支持 intersectsubtractxor 操作。
  6. 继续增强 Foil 渲染器,完成对表格布局的支持以及全屏模式下的多页面支持。

2022 年 12 月底,我们将发布 PurC 0.9.6 版本,预期功能包括:

  1. 支持 CSS Level 3 选择器规范,完善预定义 $DOC 变量各属性获取器及设置器。
  2. 增强文档定位功能。
  3. 将来自外部数据源的 text/html 类型装载为原生实体对象,以方便对网页内容的处理和操作。
  4. 全功能的 Foil 字符渲染器,支持多窗口、构件及交互。

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

  1. 内存及性能的初步优化。
  2. 预定义变量规范中定义的,但尚未完成的动态对象属性及方法。

2023 年 3 月底,我们将发布 PurC 0.9.9 版本(PurC 1.0.0 Beta 版本),预期功能包括:

  1. 对 Windows 平台的支持。
  2. 预定义动态对象的完整实现。

常见问题及解答

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