摘要:月日,編程語(yǔ)言聯(lián)合創(chuàng)始人正式宣布編程語(yǔ)言開源。在研究了和兩種編程語(yǔ)言后,發(fā)現(xiàn)這兩種語(yǔ)言在微控制器上的編寫速度不夠快,存在性能不佳的障礙。
11 月 22 日,Toit 編程語(yǔ)言聯(lián)合創(chuàng)始人 Kasper Lund 正式宣布 Toit 編程語(yǔ)言開源。Toit 是一種面向?qū)ο蟮奈锫?lián)網(wǎng)編程語(yǔ)言,它具有現(xiàn)代、簡(jiǎn)單、易理解、聲明性和靜態(tài)可分析性等理想特性。
前幾年,基于對(duì)智能小工具和支持互聯(lián)網(wǎng)設(shè)備的功能性和穩(wěn)健性的挫敗,Toit 編程語(yǔ)言的創(chuàng)始團(tuán)隊(duì)決定開始考慮為物聯(lián)網(wǎng)(IoT)開發(fā)軟件,尤其是嵌入式網(wǎng)絡(luò)連接設(shè)備。
其中聯(lián)合創(chuàng)始人 Kasper Lund 在 Google 工作了 12 年,擔(dān)任高級(jí)工程師和站點(diǎn)負(fù)責(zé)人,是一位編程語(yǔ)言和虛擬機(jī)老手。他在 Google 任職期間和團(tuán)隊(duì)共同創(chuàng)建了 V8 和 Dart 項(xiàng)目,并作為 Crankshaft 項(xiàng)目的技術(shù)負(fù)責(zé)人為 JavaScript 帶來(lái)了自適應(yīng)優(yōu)化,最終讓網(wǎng)絡(luò)變得更快。正由于 Kasper 團(tuán)隊(duì)在 Google 為 Flutter 構(gòu)建 V8 JavaScript 引擎和 Dart 語(yǔ)言的項(xiàng)目中積累的豐富經(jīng)驗(yàn),他們開始為了連接到互聯(lián)網(wǎng)的嵌入式設(shè)備構(gòu)建、部署和維護(hù)軟件,研發(fā)最佳平臺(tái)。
當(dāng) Kasper 團(tuán)隊(duì)開始構(gòu)建平臺(tái)時(shí),他們意識(shí)到他們需要一種高效的、專門為滿足物聯(lián)網(wǎng)的需求而設(shè)計(jì)的高級(jí)編程語(yǔ)言。但這種高級(jí)編程語(yǔ)言不存在,于是 Kasper 團(tuán)隊(duì)開始探尋解決方案。在研究了 Python 和 JavaScript 兩種編程語(yǔ)言后,發(fā)現(xiàn)這兩種語(yǔ)言在微控制器上的編寫速度不夠快,存在性能不佳的障礙。隨后團(tuán)隊(duì)開啟緊縮模式,幾個(gè)月后開發(fā)出了一種將內(nèi)存分配抽象出的高級(jí)語(yǔ)言:Toit 編程語(yǔ)言。
Toit 語(yǔ)言在 ESP 32 上執(zhí)行代碼的速度比 MicroPython 快 30 倍以上,且 Python 開發(fā)人員可以在幾個(gè)小時(shí)內(nèi)學(xué)會(huì)。Toit 平臺(tái)允許在像 ESP 32 這樣的小型微控制器上并排安裝獨(dú)立開發(fā)的應(yīng)用程序。虛擬機(jī)內(nèi)置支持基于比特流和重定位信息在閃存中構(gòu)建應(yīng)用程序映像。重定位信息至關(guān)重要,因?yàn)樗试S設(shè)備在閃存中自由選擇安裝應(yīng)用程序的位置。Kasper 團(tuán)隊(duì)沒(méi)有奢侈地使用虛擬內(nèi)存讓系統(tǒng)相信應(yīng)用程序總是從內(nèi)存中的特定位置運(yùn)行,因此他們必須使應(yīng)用程序映像適應(yīng)它最終存儲(chǔ)在閃存中的實(shí)際位置。
Toit 平臺(tái)通過(guò) CoAP 到 TLS 流式傳輸應(yīng)用程序圖像結(jié)束,設(shè)備一次接收 32 個(gè)字,并在它們寫入閃存之前重新定位它們。Kasper 團(tuán)隊(duì)設(shè)計(jì)了它,所以他們永遠(yuǎn)不必將完整圖像保存在 RAM 中。一旦他們完成了所有應(yīng)用程序圖像位,他們就使用校驗(yàn)和機(jī)制驗(yàn)證它們,最后提交標(biāo)頭,將應(yīng)用程序轉(zhuǎn)換為有效且可運(yùn)行的功能塊。
典型的 Toit 應(yīng)用程序映像總共約為 30 KB。其中絕大多數(shù)是以易于解釋的形式描述各個(gè)方法的行為的字節(jié)碼。Kasper 團(tuán)隊(duì)從程序的層次結(jié)構(gòu)、類和接口中提取基本信息,并以緊湊的形式存儲(chǔ)它們。類似地,Kasper 團(tuán)隊(duì)通過(guò)將方法作為一個(gè)扁平的字節(jié)序列集中存儲(chǔ)在類似于 ELF 文件的 .text 段的東西中來(lái)節(jié)省空間。圖像中唯一的結(jié)構(gòu)化對(duì)象是應(yīng)用程序附帶的編譯時(shí)常量。
Toit 虛擬機(jī)最終就像一個(gè)基于閃存的文件系統(tǒng),帶有動(dòng)態(tài)重定位鏈接器,用于安裝、升級(jí)和卸載可以直接從閃存運(yùn)行的應(yīng)用程序映像。應(yīng)用程序是完全獨(dú)立的,僅共享設(shè)備上虛擬機(jī)提供的內(nèi)容。
Kasper 團(tuán)隊(duì)表示一開始就意識(shí)到在某些時(shí)候 Toit 編程語(yǔ)言必須開源,“所有主要的編程語(yǔ)言都是開源的,你可以從開源中獲得充滿活力的生態(tài)系統(tǒng),這樣才能大規(guī)模采用一種編程語(yǔ)言?!?/p>
經(jīng)過(guò)多次迭代和在實(shí)際環(huán)境中使用 Toit 的大量經(jīng)驗(yàn),Kasper 團(tuán)隊(duì)運(yùn)用 Toit 語(yǔ)言為微控制器編寫了強(qiáng)大軟件非常有用的構(gòu)建塊,他們也希望更多的開發(fā)人員能夠從中受益。他們等待這一天已經(jīng)很久了,因此很高興能開源分享 Toit 語(yǔ)言,并通過(guò) GitHub (https://github.com/toitlang/toit)來(lái)提供它。
Toit 語(yǔ)言的開源,也為編程語(yǔ)言屆再添新銳,其不管是對(duì)編程語(yǔ)言屆、開源屆,還是物聯(lián)網(wǎng)屆都是一大利處,眾多編程語(yǔ)言爭(zhēng)寵,而你最喜歡誰(shuí)呢?
參考鏈接:
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
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125321.html
摘要:編程語(yǔ)言開源了是一種面向?qū)ο蟮奈锫?lián)網(wǎng)編程語(yǔ)言,在設(shè)備上能夠?qū)崿F(xiàn)秒級(jí)代碼部署注如果使用語(yǔ)言,一個(gè)簡(jiǎn)單的代碼更改需要幾分鐘才能重新部署同時(shí),也是一種現(xiàn)代的內(nèi)存安全的編程語(yǔ)言,集成了先進(jìn)的編輯器功能,如語(yǔ)法高亮代碼自動(dòng)補(bǔ)全等等。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px...
摘要:目前首個(gè)測(cè)試版是針對(duì)環(huán)境的,社區(qū)宣稱在未來(lái)幾個(gè)月內(nèi)會(huì)為虛擬機(jī)和等其他環(huán)境增加支持。查看下在上的更新時(shí)間,截止年月日所有項(xiàng)目均更新于小時(shí)內(nèi)。核心項(xiàng)目最近更新于一個(gè)月乃至數(shù)月前。所有項(xiàng)目均更新于分鐘內(nèi)。目前對(duì)比來(lái)看,則顯得稍遜下來(lái)。 showImg(https://segmentfault.com/img/remote/1460000010953149); 在 Kubernetes 容器云...
摘要:摘要今年的先知白帽大會(huì),與會(huì)者將能夠親身感受到非常多有趣的技術(shù)議題,如在國(guó)際賽事中屢奪佳績(jī)的團(tuán)隊(duì),其隊(duì)長(zhǎng)將親臨現(xiàn)場(chǎng),分享穿針引線般的漏洞利用藝術(shù)。從數(shù)據(jù)視角探索安全威脅阿里云安全工程師議題解讀本議題討論了數(shù)據(jù)為安全人員思維方式帶來(lái)的變化。 摘要: 今年的先知白帽大會(huì),與會(huì)者將能夠親身感受到非常多有趣的技術(shù)議題,如HITCON在國(guó)際賽事中屢奪佳績(jī)的CTF團(tuán)隊(duì),其隊(duì)長(zhǎng)Orange將親臨現(xiàn)場(chǎng)...
摘要:所做的最重要的事情,就是對(duì)成千上萬(wàn)的網(wǎng)頁(yè)進(jìn)行排序,所以它存在的意義是基于網(wǎng)頁(yè)的。確實(shí)有很多非常成功的產(chǎn)品,比如,,,但是它們其實(shí)都是收購(gòu)來(lái)的。為什么呢因?yàn)橐龅綐O簡(jiǎn)主義,需要深刻思考用戶需求以及產(chǎn)品價(jià)值。 摘要: Chrome改變世界。 《JavaScript深入淺出》系列: JavaScript深入淺出第1課:箭頭函數(shù)中的this究竟是什么鬼? JavaScript深入淺出第2課:...
摘要:簡(jiǎn)潔直觀強(qiáng)悍的前端開發(fā)框架,讓開發(fā)更迅速簡(jiǎn)單。是一套基于的前端框架。首個(gè)版本發(fā)布于年金秋,她區(qū)別于那些基于底層的框架,卻并非逆道而行,而是信奉返璞歸真之道。 2017-1209 ZanUI (Vue) 2017-1218 Onsen UI(Vue, React, Angular) 2017-1215 增加 Vuetify, Weex UI, Semantic UI React,ele...
閱讀 3859·2023-01-11 11:02
閱讀 4350·2023-01-11 11:02
閱讀 3183·2023-01-11 11:02
閱讀 5283·2023-01-11 11:02
閱讀 4838·2023-01-11 11:02
閱讀 5648·2023-01-11 11:02
閱讀 5438·2023-01-11 11:02
閱讀 4162·2023-01-11 11:02