2020 年 5 月,笔者有了设计一款与众不同编程语言的想法,后于 2020 年 7 月提出了 HVML 编程语言并公开了第一份规范草案。一年后,即 2021 年 7 月,我们成立了一个攻坚团队并正式开始了 HVML 解释器(PurC)的开发。2021 年 12 月 27 日,第一个 HVML 程序成功运行,标志着 HVML 的正式诞生。约八十日后,在 2022 年 3 月 11 日,HVML 解释器完成和渲染器的对接。又八十日后,HVML 图形渲染器 xGUI Pro 完成。至此,我们可以直观看到 HVML 程序的运行效果并通过图形用户界面和 HVML 程序交互了。
从 2021 年 8 月起,我们通过”考鼎录“公众号发表 HVML 的开发月报,向关注 HVML 的各位朋友汇报相关研发进展。本文是 HVML 开发月报的第十一期。
在笔者发表于 2018 年的《三谈操作系统》一文中提到,一个操作系统区别于其他操作系统最为重要的技术特征就是围绕某个特定编程语言形成的应用框架和编程接口。我将这个技术特征比喻为操作系统的基因。要设计一个全新的操作系统,就必须在某个编程语言基础上设计一套完备的、可扩展的、易用的应用编程接口,而 HVML 就是笔者为正在开发中的下一代操作系统——合璧操作系统——设计的全新编程语言。
本文是 HVML 开发月报的第十一期,主要包括如下内容:
- 图形渲染器 xGUI Pro 就绪
- HVML 规范 1.0 RC4 发布
- HVML 预定义变量规范 1.0 RC3 发布
- 2022 年 5 月完成的工作内容
- 下一步计划
- HVML 社区
- 常见问题及解答
第一次听说 HVML 的朋友,可以访问 HVML 专题页面 以了解其背景。
图形渲染器 xGUI Pro
HVML 技术栈的完美拼图
截止 2022 年 5 月底,HVML 的跨平台图形渲染器 xGUI Pro 完成初步版本,从而补上了 HVML 技术栈的最后一块拼图。至此,我们不仅可以直观看到 HVML 程序的运行效果,还可以通过图形用户界面和 HVML 程序交互。
HVML 技术栈
xGUI Pro 是针对桌面系统设计的 HVML 图形渲染器,目标是支持主流的桌面系统,包括 Windows、macOS 和 Linux。xGUI Pro 基于定制的 WebKit 浏览器引擎开发,支持使用 HTML5 和 CSS3 来渲染图形用户界面。下面的视频给出了使用 HVML 编写的任意精度计算器在 xGUI Pro 中的渲染和交互的效果。
HVML 程序在 xGUI Pro 中的渲染和交互的效果
HVML 规范 1.0 RC4 发布
按计划,我们于 2022 年 6 月 1 日发布了 HVML 规范 1.0 RC4 版本。
2022 年 5 月份,我们围绕 HVML 语言规范主要做了如下调整及增强:
- 重构基本原理一节:
- 增加对 HVML 栈式虚拟机的描述。
- 增加对各类元素的概要介绍,补充了各种元素和虚拟机栈帧及上下文变量的关系。
- 增加对协程状态的描述。
- 新增如下动作标签:
- 为方便代码块的分组书写,新增
inherit
标签。inherit
标签创建的动作元素不使用任何介词和副词属性,继承前置栈帧的上下文变量。 - 新增
sleep
标签用于休眠当前协程。 - 增强
test
标签使用with
属性简化分支处理。
- 为方便代码块的分组书写,新增
- 增强或调整
call
以及load
动作标签:- 新增
within
属性,用于在load
元素中指定渲染器的页面信息,在call
中用于指定行者名称。 - 在
call
标签中使用concurrently
副词属性表示并发调用。 - 新增
differ
标签定义test
的二选一分支。
- 新增
有关详情,可点击阅读如下的链接:
HVML 预定义变量规范 1.0 RC3 发布
按计划,我们于 2022 年 6 月 1 日发布了 HVML 预定义变量 1.0 RC3 版本。
2022 年 5 月份,我们围绕 HVML 预定义变量主要做了如下调整及增强:
- 新增接口:
$SESSION.app
:返回当前会话的应用名称。$SESSION.runner
:返回当前会话的行者名称。
- 移除全局级动态变量的提法。
- 将
$SYSTEM
调整为会话级动态变量。 - 调整
$FS.rename
方法返回值类型(boolean)。
有关详情,可点击阅读如下的链接:
2022 年 5 月完成的工作内容
在研发团队的努力下,2022 年 5 月,我们按照预期完成了所有研发目标,包括:
- xGUI Pro V0.8 的开发:
- 实现了对普通窗口的支持。
- 实现了所有的文档操作请求。
- 实现了对交互事件的支持。
- 实现了对渲染器内嵌资产(CSS/JS)的支持,HVML 程序基于此利用 Bootstrap 等前端框架。
- 增强用于管理渲染器页面分组信息的基础函数库
DOMLayout
。 - HVML 解释器的增强:
- 实现新增的
differ
和sleep
等动作标签。 - 增强
test
动作标签以支持differ
二选一分支。 - 初步实现对并发调用的支持。
- 实现同一会话中多协程的运行。
- 实现新增的
- 新增使用 Bootstrap 前端框架的 HVML 示例程序。
下一步计划
2022 年 06 月是为期一年的 HVML V1.0 开发周期的最后一个月,我们的主要目标是:
- HVML 解释器实现 HVML 规范 V1.0 要求的所有技术特性,主要包括:
- 完善对
load
和call
标签的支持,尤其是对并发调用的支持。 - 对
void
目标文档类型的支持。
- 完善对
- 完成 xGUI Pro V1.0 的开发,提供对页面组的支持。
- 更多示例程序。
尽管受到疫情的影响,但 HVML 1.0 相关的开发工作正在精确地按照预期推进,原定 2022 年 7 月正式发布 HVML 的计划不会改变。2022 年 7 月开始,团队将陆续开放 HVML 相关的源代码仓库,进入技术生态的建设阶段;团队将围绕跨平台应用以及合璧操作系统两个主题开展后续工作,并联合各方力量共同打造 HVML 相关的技术,同时推进 HVML 的应用。
HVML 社区
作为全球首款可编程标记语言,HVML 语言的诞生是全球性的,对中国来讲,更是历史性的。
要详细了解 HVML 的价值,可阅读笔者以小说形式撰写的文章:《七爷访谈:且看魏森特如何把 HVML 吹破天》。
随着 HVML 软件栈最后一块拼图的完成,HVML 后续的开发将通过开源协作的形式开展,这是打造 HVML 技术生态的第一步。
作为 HVML 技术生态的一部分,我们将成立 HVML 社区。欢迎各单位或者个人加入 HVML 社区。同时,为加速 HVML 的开发和推广,我们希望获得来自全球的赞助,尤其是曾受益于 MiniGUI 为代表的国产开源软件的中国企业,参与并助推 HVML 的发展!
有意者,请致信 hvml@fmsoft.cn
或者通过点击“Contact”在后台留言。
我们也欢迎个人小额打赏来鼓励我们,您可以点击此处或文后的原文链接访问打赏页面。
常见问题及解答
Q:HVML 是针对嵌入式和物联网使用的吗?
A:不仅仅是。HVML 是一种通用的胶水语言,主要用来开发跨平台的 GUI 应用,因此,HVML 的目标平台包括传统的桌面、智能手机、平板、嵌入式设备和物联网设备。
Q:HVML 是打算取代现有的 Web 前端开发技术,比如 JavaScript 吗?
A:没有这个计划。HVML 的渲染器会用到 Web 前端技术,但 HVML 的目的并不是取代现有的 Web 前端开发技术,而是为跨平台 GUI 应用的开发提供另外一种技术框架,同时作为合璧操作系统的首选编程语言。
Q:在哪里可以看到 PurC 和 xGUI 的源代码。
A:PurC 和 xGUI 仍然处在开发状态,暂时不向公众开放其代码仓库。
Q:未来会开源 PurC 和 xGUI 吗?
A:会的,而且我们会使用商业友好的宽松许可证(如 LGPL)发布 PurC 和 xGUI。按照计划,我们将从 2022 年 7 月开始陆续公开如下源代码仓库:
- HVML 解释器(PurC):HVML 核心代码仓库,实现了 HVML 解释器相关的 API,HVML 预定义变量,以及一个标准的 HVML 解释器可执行程序。
- HVML 外部数据获取器(PurC Fetcher):用于支持 HTTP 等协议以独立进程形式运行的外部数据获取器。
- HVML 字符渲染器(PurC Midnight Commander):基于 GNU Midnight Commander 的 HVML 字符渲染器,运行在字符终端上。
- 扩展 WebKit 引擎(Tailored WebKit):用于支持 HVML 定义的若干 HTML 属性。
- DOM 布局库(DOMLayout Engine):一个使用 CSS 技术实现 DOM 布局的函数库。
- HVML 图形渲染器(xGUI Pro):基于扩展 WebKit 的 HVML 图形渲染器,支持多窗口、多页面的自动布局,首期将支持 Linux 桌面和 macOS 平台。
Q:如何赞助 HVML 相关的项目?
A:个人打赏性质的赞助,您可以点击文后的原文链接。大额的赞助,可以通过点击“Contact”在后台留言,或者致信 hvml@fmsoft.cn
,我们会及时联系您。
原文链接
https://store.fmsoft.cn/campaign/denoteoss-lt
附:商标声明
本文提到的产品、技术或者术语名称,涉及北京飞漫软件技术有限公司在中国或其他地区注册的如下商标:
- 飛漫
- FMSoft
- 合璧
- HybridOS
- HybridRun
- MiniGUI
- xGUI
- miniStudio
- HVML
- 呼噜猫
- Purring Cat
- PurC