写点什么

深度 deepin 开源自研编程语言 Unilang

  • 2022-09-20
    北京
  • 本文字数:963 字

    阅读完需:约 3 分钟

深度deepin开源自研编程语言 Unilang

近日,深度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

2022-09-20 15:004029

评论 2 条评论

发布
用户头像
谁用谁知道
2022-09-21 08:31 · 浙江
回复
用户头像
牛!去试试
2022-09-20 16:59 · 北京
回复
没有更多了
发现更多内容

Pulsar 分级存储 -- S3 演示

Apache Pulsar

大数据 架构 云原生 分布式存储 Apache Pulsar

彻底搞懂访问者模式的静态、动态和伪动态分派

Tom弹架构

Java 架构 设计模式

Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了

热爱java的分享家

Java 面试 分布式 编程语言 经验分享

The Data Way Vol.6|我不是开发者,但我依然向往开源

SphereEx

开源 开发者 播客 ShardingSphere SphereEx

微服务的灾难:拆的很爽,但服务太小...

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

Aeron是如何实现的?—— Ipc Publication

BUG侦探

Aeron Ipc Publication

Micro Focus Fortify 最新能力发布,应用安全进入“一切皆代码”新时代

CSS布局(四)之文本布局

Augus

CSS 11月日更

艾媒报告:百度输入法AI功能领跑行业 用户满意度第一

百度开发者中心

百度 AI

24 K8S之Service资源及其模型

穿过生命散发芬芳

k8s 11月日更

在牛客逮到一个阿里10年老Java开发,聊过之后收益良多...

Geek_1df311

Java 编程 架构 面试 计算机

微帧Film Grain编码技术,致敬电影胶片颗粒的独特魅力

微帧Visionular

视频编解码

外卖跑腿系统专业开发外卖跑腿app源码开发

风行无疆

行业分析| 为什么uni-app在音视频领域这么火?

anyRTC开发者

uni-app 音视频 移动开发 语音通话 视频通话

论文解读丨无参数的注意力模块SimAm

华为云开发者联盟

卷积神经网络 视觉 注意力模块 SimAm 神经元

帧彩视界之Pseudo HDR:为普通SDR设备用户提供HDR体验

微帧Visionular

视频编码 HDR

会声会影编辑面板常用功能介绍

懒得勤快

趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突

热爱java的分享家

Java 架构 编程语言 经验分享 哈希表

DAS易用性设计

赫杰辉

多商户入驻系统开发多商户入驻app源码开发

风行无疆

又一次漏洞复现与分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

pringBoot + Mybatis Plus + ClickHouse增删改查入门教程

程序员万金游

MySQL 数据库 mybatis Clickhouse

元气部落盲盒软件原生开发芒趣盲盒app源码

风行无疆

为何每次用完ThreadLocal都要调用remove()?

热爱java的分享家

Java 程序人生 编程语言 经验分享

你的web知识有所欠缺。

喀拉峻

Web 安全

工具 | 一条 SQL 实现 PostgreSQL 数据找回

RadonDB

数据库 postgresql RadonDB

Go语言学习查缺补漏ing Day6

Regan Yue

Go 语言 11月日更

掌握Java的内存模型,你就是解决并发问题最靓的仔

华为云开发者联盟

Java 内存模型 线程 并发 工作内存

优秀!阿里甩出GC面试小册,仅7天Github获赞96.9K

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

干货必收藏!墨天轮最受DBA欢迎的250份学习文档合集

墨天轮

MySQL 数据库 oracle postgresql

深度deepin开源自研编程语言 Unilang_文化 & 方法_褚杏娟_InfoQ精选文章