跳到內容

套件

每個套件都是用 Cella 寫的函式庫,以編譯好的模組包發布。程式的 JSON 決定用哪個套件:看它的 lang,C++ 再看有沒有 board。

套件 模型
@cella-lang/machine 和語言無關的執行層:IEEE 754 二進位浮點數(正確捨入)、固定寬度的二補數整數、標準串流
@cella-lang/cfamily C 與 C++ 共用的核心:語法、把錯誤標在節點上的型別檢查、同一份記憶體模型上的小步語意、除錯工作階段
@cella-lang/c C11
@cella-lang/cpp C++17:class、template、多載、參考、例外、lambda,以及用 C++ 寫的標準函式庫 vector 與 string
@cella-lang/arduino C++ 上的 Arduino 與 ESP32/ESP8266 板子:照 C++ 原始碼寫的 core 與函式庫、模擬的時鐘、隨時間給的感測器輸入
@cella-lang/python Python:堆積上的值、和 CPython 一致的運算與印法、例外
@cella-lang/programlogic 和語言無關的程式邏輯:語言的一步與資源的分離代數上的最弱前置條件

每個模型都和真的工具做差分:clang 加上 UndefinedBehaviorSanitizer 與 AddressSanitizer、avr-gcc 與 simavr 模擬器、CPython。每條規則都有一對只差一處、落在判決兩側的最小程式;從模型拿掉那條規則,這一對就翻邊。