11 月 22 日,Toit 编程语言联合创始人 Kasper Lund 正式宣布 Toit 编程语言开源。Toit 是一种面向对象的物联网编程语言,它具有现代、简单、易理解、声明性和静态可分析性等理想特性。

图片: https://uploader.shimo.im/f/ZjC4n7doqp1hxRgX.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc3MzMwNjIsImciOiJUSldLY3JSaHJ3M2RDdFg4IiwiaWF0IjoxNjM3NzMyNzYyLCJ1c2VySWQiOjc0MjE1Mzg0fQ.AxnTsUcQsp9arPR7gwKXUBAPgT0LkYDgUP0q-UAI91c
前几年,基于对智能小工具和支持互联网设备的功能性和稳健性的挫败,Toit 编程语言的创始团队决定开始考虑为物联网(IoT)开发软件,尤其是嵌入式网络连接设备。

其中联合创始人 Kasper Lund 在 Google 工作了 12 年,担任高级工程师和站点负责人,是一位编程语言和虚拟机老手。他在 Google 任职期间和团队共同创建了 V8 和 Dart 项目,并作为 Crankshaft 项目的技术负责人为 JavaScript 带来了自适应优化,最终让网络变得更快。正由于 Kasper 团队在 Google 为 Flutter 构建 V8 JavaScript 引擎和 Dart 语言的项目中积累的丰富经验,他们开始为了连接到互联网的嵌入式设备构建、部署和维护软件,研发最佳平台。

图片: https://uploader.shimo.im/f/IHwi7RHetB9LCT9T.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc3MzMwNjIsImciOiJUSldLY3JSaHJ3M2RDdFg4IiwiaWF0IjoxNjM3NzMyNzYyLCJ1c2VySWQiOjc0MjE1Mzg0fQ.AxnTsUcQsp9arPR7gwKXUBAPgT0LkYDgUP0q-UAI91c

当 Kasper 团队开始构建平台时,他们意识到他们需要一种高效的、专门为满足物联网的需求而设计的高级编程语言。但这种高级编程语言不存在,于是 Kasper 团队开始探寻解决方案。在研究了 Python 和 JavaScript 两种编程语言后,发现这两种语言在微控制器上的编写速度不够快,存在性能不佳的障碍。随后团队开启紧缩模式,几个月后开发出了一种将内存分配抽象出的高级语言:Toit 编程语言

Toit 语言在 ESP 32 上执行代码的速度比 MicroPython 快 30 倍以上,且 Python 开发人员可以在几个小时内学会。Toit 平台允许在像 ESP 32 这样的小型微控制器上并排安装独立开发的应用程序。虚拟机内置支持基于比特流和重定位信息在闪存中构建应用程序映像。重定位信息至关重要,因为它允许设备在闪存中自由选择安装应用程序的位置。Kasper 团队没有奢侈地使用虚拟内存让系统相信应用程序总是从内存中的特定位置运行,因此他们必须使应用程序映像适应它最终存储在闪存中的实际位置。

Toit 平台通过 CoAP 到 TLS 流式传输应用程序图像结束,设备一次接收 32 个字,并在它们写入闪存之前重新定位它们。Kasper 团队设计了它,所以他们永远不必将完整图像保存在 RAM 中。一旦他们完成了所有应用程序图像位,他们就使用校验和机制验证它们,最后提交标头,将应用程序转换为有效且可运行的功能块。

典型的 Toit 应用程序映像总共约为 30 KB。其中绝大多数是以易于解释的形式描述各个方法的行为的字节码。Kasper 团队从程序的层次结构、类和接口中提取基本信息,并以紧凑的形式存储它们。类似地,Kasper 团队通过将方法作为一个扁平的字节序列集中存储在类似于 ELF 文件的 .text 段的东西中来节省空间。图像中唯一的结构化对象是应用程序附带的编译时常量。

Toit 虚拟机最终就像一个基于闪存的文件系统,带有动态重定位链接器,用于安装、升级和卸载可以直接从闪存运行的应用程序映像。应用程序是完全独立的,仅共享设备上虚拟机提供的内容。

Kasper 团队表示一开始就意识到在某些时候 Toit 编程语言必须开源,“所有主要的编程语言都是开源的,你可以从开源中获得充满活力的生态系统,这样才能大规模采用一种编程语言。”

经过多次迭代和在实际环境中使用 Toit 的大量经验,Kasper 团队运用 Toit 语言为微控制器编写了强大软件非常有用的构建块,他们也希望更多的开发人员能够从中受益。他们等待这一天已经很久了,因此很高兴能开源分享 Toit 语言,并通过 GitHub (https://github.com/toitlang/toit)来提供它。

图片: https://uploader.shimo.im/f/DFwmpQwkdtesx1jq.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc3MzMwNjIsImciOiJUSldLY3JSaHJ3M2RDdFg4IiwiaWF0IjoxNjM3NzMyNzYyLCJ1c2VySWQiOjc0MjE1Mzg0fQ.AxnTsUcQsp9arPR7gwKXUBAPgT0LkYDgUP0q-UAI91c

Toit 语言的开源,也为编程语言届再添新锐,其不管是对编程语言届、开源届,还是物联网届都是一大利处,众多编程语言争宠,而你最喜欢谁呢?

参考链接:
https://docs.toit.io/language
https://medium.com/@kasper.lund?p=71dc6e2d8f5c
https://blog.toit.io/the-toit-language-is-now-open-source-14bdcb1604d9?gi=170695569ed0

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐