V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chai2010
V2EX  ›  程序员

OSDT2022 分享: 凹语言项目起源及现状

  •  
  •   chai2010 ·
    chai2010 · 2023-03-04 11:06:48 +08:00 · 892 次点击
    这是一个创建于 617 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文是凹语言发起人之一丁尔男,受 OSDT 组织邀请做的“凹语言项目起源及现状”的报告讲稿整理。完整的视频已经上传到 B 栈: https://www.bilibili.com/video/BV1EY411i7Tt/?buvid=0b2292c44489d352f3de21b6058a05a6

    大家好,很荣幸受吴老师的邀请参加 OSDT2022 大会,借此机会跟各位介绍一下 凹语言 项目的起源、发展过程和目前所取得的一些进展。

    事情得从 2018 年开始说起,因为工作的缘故,在工程实践中,需要一门具备这些特征的编程语言:

    • 首先对 WebAssembly 友好,能生成便于使用的 WASM 模块
    • 其次要对开发者友好,容易上手,使用的心智负担不能太重
    • 对团队开发友好,具备类似于包管理的模块化功能

    当时满足这些条件的语言不说寥寥无几吧,至少也是屈指可数。于是在 2018 年底,柴树杉和我启动了凹语言项目,项目名称有这些寓意:最显著的是音形双关,wa 字的发音是 WASM 的前半段,字型和 WASM 图标非常相似;从字形的角度上还可以解读成平台的 C 等等。

    2019 年我们开始了语法定义之类的前期准备工作;

    2020 年的重大进展是我们邀请到了 Go 编译器和 LLVM 的代码贡献者史斌加入创始团队。他的到来大大的提高了团队信心。5 月我们举行了第一次工作组会议,把“不做玩具车,要做可以跑的车”作为项目目标给确定了下来。

    2021 年,我们合作出版了《 Go 语言定制指南》这本书。其实在这个时候,凹语言 的技术路线已经成型了:前端部分以 Go 语法为蓝本,删除与并发相关的特性,然后创建一个后端和运行时,显然,后端部分需要针对 WASM 进行针对性的设计。

    2022 年 1 月,凹语言 项目的开发正式启动,在规划中,它将支持 wa 语法和 wago 语法,经过基于 Go1.17 修改的前端处理为 AST ,然后通过 3 个不同的后端输出 C++代码、LLVMIR 以及 WASM 模块。

    2022 年 7 月对凹语言来说是一个里程碑。编译器的框架搭起来了,C 后端取得了一些阶段性的成果,验证了 RC 等运行时行为,于是我们启动了 WASM 后端的开发工作。更重要的是,7 月 20 号我们开源了,并且公布了线路图。

    开源动作给项目的带来了两个变化,一是无形中对创始团队形成了压力,二是有更多身怀不同技能的小伙伴加入,二者结合使开发进度有了显著的提升。

    于是在 9 月份的时候,结合 WASM 后端的阶段性成果,我们上线了一个纯网页的编译和运行环境 Playground ,里面内置了一些简单的凹语言的例子程序;是一个很直观、便捷的了解凹语言语法的入口。

    11 月迎来了一波小高潮。原本计划在 2023 年春节开始的 LLVM IR 后端提前启动,点亮了 AVR 单片机;经过开发组多轮讨论确定了使用 AGPLv3 协议,并且把主库迁移到了 gitee ;官网网站改版了;通过 Arduino-wasm 项目点亮了 Arduino Nano33 ;增加了 VIM 、Fleet 的语法高亮插件; WASM 后端支持切片、结构体、方法、闭包、自动 RC 等等,从大特性角度来说,除了接口之外,WASM 后端基本已经覆盖了语言设计目标。

    近期我们准备用凹语言写一个网页版的贪吃蛇,其中涉及图形显示、UI 交互操作、和 js 宿主环境交换数据等一些功能,把这个能实际运行的小游戏作为年底的一个小里程碑。另外,在明年年初,接口支持有望完成,这样就补全了 WASM 后端的大特性列表。

    凹语言官网地址是 https://wa-lang.org

    • 碎碎念栏目记录了项目中一些有趣的事情和进展;
    • 社区栏目里有微信群和微信公众号二维码,以及开发组例会的会议纪要
    • Play 栏目就是刚才提到的 Playground ,目前内置了 helloworld 、计算素数、用字符打印心形、图灵完备的 brainfuck 虚拟机的实现、和四种类型的闭包的例子。

    这是凹语言目前的开发组成员,所有人在项目中都是业余参与用爱发电。我们大多都不是编译器从业者,因此从理论水平角度来说非常需要各位大佬的指正和支持,谢谢大家!

    vsyf
        1
    vsyf  
       2023-03-04 14:20:47 +08:00 via Android
    👍👍👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   951 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:41 · PVG 03:41 · LAX 11:41 · JFK 14:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.