近日,深度 deepin 正式公开了自研全新通用目的编程语言——Unilang,包括相关的文档和一个解释器。
deepin 方面表示,虽然业界虽然已经有了很多较为成熟的桌面应用开发方案,例如 Qt、Electron、PySide 和 Flutter 等,但各个方案均有着各自的痛点,没有任何一种现有方案能兼顾各种不同的问题,而成为没有疑义、众望所归的桌面开发首选方案。
造成这种局面的一个技术理由是,许多方案设计过于专注具体需求而缺乏考虑语言长期演进的普遍因素,使其在预期目标领域之外的适用性急剧下降,通用性不足。当应用领域和预期略有偏差或暴露原有设计的局限性时,用户即便懂得如何改进一个语言,也会在语言二次开发上遇到困难,从而被迫放弃。
因此,deepin 希望有一种语言可以尽快解决各个方案中存在的痛点,能极大程度帮助到因语言二次开发遇到困难而被迫放弃的开发者,以更深刻的方式、真正实现“通用性”。
于是在 2020 年 4 月,deepin 决定开发“自己的语言”,进一步往上做 GUI 框架;2020 年 6 月,经调研分析后,deepin 创建 Unilang 仓库,提交了第一行代码;2021 年 3 月,deepin 基本实现了 2020 年决定设计的主要特色内容,着手研究目标代码生成方案;今年 9 月,deepin 正式公开了全新的通用目的编程语言 Unilang。
根据官方介绍,Unilang 的主要特点包括:
作为动态语言,提供相对其它语言更强的语言层次上的可扩展性。
支持类似 C++ 的对象模型和(当前不被检查的)不安全所有权语义。
不要求全局 GC ,同时语言的一个子集允许和 C++ 同等层次的“不安全”但能确保确定性的资源分配。
支持正式意义上的 PTC ,而不需要用户程序内对栈溢出等未定义行为进行变通。
使用隐式的潜在类型 (latent typing) 而非显式的清单类型 (manifest typing) 。
为了保持通用性,Unilang 不内建提供 GUI 功能,而通过库提供相关 API 。当前计划中,Unilang 将会支持基于 Qt 绑定的库,以便衔接过渡现有的一些桌面应用项目。Unilang 的语言设计保持足够的抽象能力和可扩展性,未来支持直接实现 GUI 框架。
另外,Unilang 在语言特性的层次上被设计为能支持不同的应用开发场景,但原则上对这些场景保持中立。这意味着,它可以同时支持服务端和客户端应用的开发,不需要用户切换思维范式或者大幅更改对语言的使用习惯。
更多资料:
https://github.com/linuxdeepin/unilang/blob/master/README.zh-CN.md
点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!
NGINX 局限太多,Cloudflare 最终放弃它并用 Rust 自研了全新替代品