编程语言家族又添新人:Toit语言现已开源
Toit编程语言的共同创始人KasperLund正式宣布Toit编程语言开源。Toit是一种面向对象的物联网编程语言,具有现代、简单、易懂、声明、静态可分析等理想特性。
编程语言家族又添新人:Toit语言现已开源
前些年,基于智能Gadgets和支持Internet设备的功能和可靠性受到挫折,Toit编程语言的创始人小组决定开始考虑为IoT(IoT)开发软件,特别是嵌入式网络连接设备。
他们中的一位共同创始人KasperLund,曾在Google工作过12年,是一名编程语言和虚拟机老手。作为Crankshaft项目的技术领导者,他在Google工作期间与团队合作创建了V8和Dart项目,并最终使JavaScript实现了自适应优化,最终使网络更快。正是因为Kasper团队积累了大量的经验,在构建用于Flutter的V8JavaScript引擎和Dart语言的项目中,他们开始建造用于连接因特网的嵌入式设备,部署和维护软件,并开发最佳平台。
山东济南汉码未来了解到,随着Kasper团队开始构建这个平台,他们认识到他们需要一种高效率的、专为满足物联网需求的高级编程语言。但是这种高级的编程语言并不存在,因此Kasper团队开始寻找解决办法。通过对Python和JavaScript两种编程语言的研究,发现单片机上这两种语言的编写速度都很慢,从而阻碍了其性能。接着,团队启动了紧缩模式,几个月后开发了一种高级语言:Toit编程语言,它把内存分配抽象出来。
Toit语言在ESP32上执行代码的速度是MicroPython的30倍,而且Python开发人员只需几个小时就能学会。Toit平台允许将独立开发的应用程序并行安装到类似ESP32的小微控制器上。虚拟机内建支持在flash内建立基于码流和重定位信息的应用程序映像。重新定位信息很重要,因为它可以让设备自由选择安装应用程序在闪存中的位置。Kasper团队不会过分使用虚拟内存,让系统确信应用程序始终是从内存中的一个特定位置运行,所以他们必须将应用程序映像调整到闪存中的实际位置。
Toit平台以从CoAP流到TLS的应用程序图像流结束,该设备一次接收32个单词,在写入闪存前重新定位。Kasper小组设计了这个功能,所以他们不需要在RAM中保留完整的图片。在完成所有应用程序的图像后,他们会用校验和机制对其进行验证,最终提交头部,将应用程序转换成一个有效的、可运行的功能块。
一个典型的Toit应用程序映像总共大约有30KB。这些代码中的大多数都是用易于解释的形式描述个别方法行为的字节码。Kasper团队从程序的层次结构、类和接口中提取基本信息,并将其存储为压缩格式。同样,Kasper团队也通过将方法作为扁平字节序列集存储在类似于ELF文件的.text段中以节省空间。在图片中,只有一个结构化的对象是应用程序所附带的编译时量。
ToitVirtualMachineSystem类似于一个基于flash-flash的文件系统,其中包含了用于安装、升级和卸载可直接从闪存运行的应用程序映像。该应用是完全独立的,并且只共享设备上虚拟机提供的内容。
Kasper团队说,一开始就认识到Toit编程语言必须是开放源码的,“所有主要的编程语言都是开放源码的,你可以通过开放源码获得一个动态的生态系统来大量使用一种编程语言。
Kasper团队在经历了多次迭代并在实际环境中使用Toit之后,利用Toit语言为微处理器编写了一个非常有用的、功能强大的构建模块,他们也希望更多的开发者能从中获益。长期以来,它们一直在等待,所以很高兴开放源代码共享Toit语言,并通过GitHub实现。