2020 年 5 月,笔者有了设计一款与众不同编程语言的想法,后于 2020 年 7 月提出了 HVML 编程语言并公开了第一份规范草案。一年后,即 2021 年 7 月,我们成立了一个攻坚团队并正式开始了 HVML 解释器(PurC)的开发。2021 年 12 月 27 日,第一个 HVML 程序成功运行,标志着 HVML 的正式诞生。约八十日后,在 2022 年 3 月 11 日,HVML 解释器完成和渲染器的对接。至此,我们可以直观看到 HVML 程序的运行效果了。

从 2021 年 8 月起,我们通过“考鼎录”公众号发表 HVML 的开发月报,向关注 HVML 的各位朋友汇报相关研发进展。本文是 HVML 开发月报的第十期。

在笔者发表于 2018 年的《三谈操作系统》一文中提到,一个操作系统区别于其他操作系统最为重要的技术特征就是围绕某个特定编程语言形成的应用框架和编程接口。我将这个技术特征比喻为操作系统的基因。要设计一个全新的操作系统,就必须在某个编程语言基础上设计一套完备的、可扩展的、易用的应用编程接口,而 HVML 就是笔者为正在开发中的下一代操作系统——合璧操作系统——设计的全新编程语言。

本文是 HVML 开发月报的第十期,主要包括如下内容:

  • HVML 1.0 发布计划
  • HVML 规范 1.0 RC3 发布
  • HVML 预定义变量规范 1.0 RC2 发布
  • 2022 年 4 月完成的工作内容
  • 下一步计划
  • 欢迎赞助 HVML
  • HVML 兴趣小组
  • 常见问题及解答

第一次听说 HVML 的朋友,可以访问 HVML 专题页面以了解其背景。

HVML 1.0 正式版发布计划

截止 2022 年 4 月底,开发团队已经实现了对除 load 和 exit 之外的所有 HVML 动作元素的支持,图形渲染器的设计也已完成,团队将在接下来的五月和六月完成既定的所有开发工作,并计划在 2022 年 7 月正式对外发布 HVML 1.0。这次发布预计包含如下重磅内容:

  1. HVML 规范 1.0。
  2. HVML 预定义变量规范 1.0。
  3. HVML 解释器(PurC)。
  4. HVML 外部数据获取器(PurC Fetcher):用于支持 HTTP 等协议以独立进程形式运行的外部数据获取器。
  5. HVML 字符渲染器(PurC Midnight Commander):基于 GNU Midnight Commander 的 HVML 字符渲染器,运行在字符终端上。
  6. HVML 图形渲染器(xGUI Pro):基于扩展 WebKit 的 HVML 图形渲染器,支持多窗口、多页面的自动布局,首期将支持 Linux 桌面和 macOS 平台。

以上软件仓库的代码行数目前已超过一百万行(不含 WebKit 引擎本身的代码)。

HVML 规范 1.0 RC3 发布

按计划,我们于 2022 年 5 月 1 日发布了 HVML 规范 1.0 RC3 版本。

2022 年 4 月份,我们围绕 HVML 语言规范主要做了如下调整及增强:

  1. 移除 connectsend 和 disconnect 标签,相关功能调整为使用 $STREAM 动态对象实现。
  2. 调整 init 和 define 标签中 at 属性的作用:at 属性现在用于定义变量或者操作组名称的名字空间。
  3. observe 和 forget 标签的 for 属性值中,可使用通配符或者正则表达式。
  4. 详细定义了 define、 include、 call、 returnback 等标签的行为。
  5. 详细定义了 load、 exit 等标签的行为。
  6. 简化了外部执行器相关的规范;init 和 update 标签不再支持外部执行器。
  7. 新增虚无目标文档类型:void,配合内置的 $STREAM.stdin$STREAM.stdout 等,可让 HVML 程序用于非 GUI 应用。
  8. 可使用元素的锚点名称定位前置栈帧,从而可在 JSONEE 中指定前置栈帧中的上下文变量。
  9. eJSON 描述语法的增强:
    • 可使用 0x 前缀,用十六进制表达有符号长整数和无符号长整数。
    • 可定义空字节序列。

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

HVML 预定义变量规范 1.0 RC2 发布

按计划,我们于 2022 年 5 月 1 日发布了 HVML 预定义变量 1.0 RC2 版本。

2022 年 4 月份,我们围绕 HVML 预定义变量主要做了如下调整及增强:

  1. 将 $STREAM 变量调整为必要变量。
  2. 原设计为 $STREAM 方法的 readstruct 等,全部调整为流实体的方法。
  3. 原设计为 $FS 方法的 readdir 和 rewinddir 方法,调整为目录流实体的方法。
  4. 调整接口,使用字符串选项而非布尔标志:
    • $SYSTEM.time_us
    • $SYSTEM.timezone
  5. 使用 regexp 关键词替代 reg
    • $STR.streq
    • $STR.strne
  6. 新增方法
    • $SYSTEM.sleep
    • $EJSON.pack
    • $EJSON.unpack
    • $STR.scan_c
    • $STR.scan_p
  7. 新增方法
    • $HVML.target
    • $HVML.lang

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

2022 年 4 月完成的工作内容

在研发团队的努力下,2022 年 4 月,我们按照预期完成了所有研发目标,包括:

  1. 梳理 HVML 程序异常的处理,包括 catch 标签的实现。
  2. HVML 标签的实现:firebindrequestdefineinclude、 call 和 return 等。
  3. 根据 HVML 规范的调整完善 init 等标签的支持。
  4. CJSONEE 的支持以及对 eJSON 增强的支持。
  5. 预定义变量的重构及新增接口的开发。
  6. 新增使用 Bootstrap 前端框架的 HVML 示例程序。

下一步计划

2022 年 05 月的主要目标有:

  1. 对 HVML 最后三个动作标签(requestload 和 exit)的支持。
  2. HVML 解释器 PurC 对 void 目标文档类型的支持。
  3. 图形渲染器 xGUI Pro 的开发。
  4. 更多示例程序。

一句话,2022 年 5 月底,大家就能看到 HVML 程序的输出展示到图形渲染器上的效果了!

欢迎赞助 HVML

作为全球首款可编程标记语言,HVML 语言的诞生是全球性的,对中国来讲,更是历史性的。

要详细了解 HVML 的价值,可阅读笔者以小说形式撰写的文章:《七爷访谈:且看魏森特如何把 HVML 吹破天》

目前,HVML 规范、解释器、渲染器等的开发,在飞漫软件的组织下开展,其主要资金来源于飞漫软件的拳头产品 MiniGUI 的许可收入。另外,除飞漫软件的团队之外,另有两支神秘的团队加入了 HVML 相关的开发工作,我们期待这些团队做出自己的贡献。

为加速 HVML 的开发和推广,我们希望获得来自全球的赞助,尤其是曾受益于 MiniGUI 为代表的国产开源软件的中国企业,参与并助推 HVML 的正式发布。

有意者,请致信 tobesponsor@fmsoft.cn 或者通过点击“Contact”在后台留言。

我们也欢迎个人小额打赏来鼓励我们,您可以点击此处或文后的原文链接访问打赏页面。

HVML 兴趣小组

HVML 兴趣小组是一个虚拟小组,主要成员是对 HVML 及相关技术感兴趣的业内人士,这个小组主要通过微信群聊沟通。

如有兴趣加入该群聊,您可以通过点击“Contact”在后台留言,留下您的微信号,小编加您好友之后拉您入群。

目前 HVML 兴趣小组正在围绕如下前述的两个规范文档展开工作。

常见问题及解答

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。

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

A:个人打赏性质的赞助,您可以点击文后的阅读原文。大额的赞助,可点击“Contact”留下联系方式,我们的小编会联系您。

原文链接

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

附:商标声明

本文提到的产品、技术或者术语名称,涉及北京飞漫软件技术有限公司在中国或其他地区注册的如下商标:

  1. 飛漫

飛漫

  1. FMSoft

FMSoft

  1. 合璧

合璧 合璧 合壁

  1. HybridOS

HybridOS

  1. HybridRun

HybridRun

  1. MiniGUI

MiniGUI

  1. xGUI

xGUI

  1. miniStudio

miniStudio

  1. HVML

HVML

  1. 呼噜猫

呼噜猫

  1. Purring Cat

Purring Cat

  1. PurC

PurC