Die Ausgabe des Projekts PikaScript 1.8 wurde veröffentlicht, das einen kompakten Motor zur Erstellung von Anwendungen für Mikrocontroller in Python entwickelt. PikaScript ist nicht von externen Abhängigkeiten abhängig und kann auf Mikrocontrollern mit 4 KB RAM und 32 KB Flash, wie z.B. STM32G030C8 und STM32F103C8, betrieben werden. Im Vergleich dazu benötigt MicroPython 16 KB RAM und 256 KB Flash, während Snek 2 KB RAM und 32 KB Flash benötigt. Der Projektcode ist in der Programmiersprache C geschrieben und wird unter der MIT-Lizenz vertrieben.
PikaScript bietet eine Teilmenge der Programmiersprache Python 3 und unterstützt Syntaxelemente wie Verzweigungs- und Schleifenoperatoren (if, while, for, else, elif, break, continue), grundlegende Operatoren (+ — * / ), Module, Kapselung, Vererbung, Polymorphismus, Klassen und Methoden. Python-Skripte werden auf Geräten nach einer Vorabkompilierung ausgeführt - PikaScript wandelt zunächst den Python-Code in den internen Bytecode Pika Asm um, der auf dem Endgerät in einer speziellen virtuellen Maschine Pika Runtime ausgeführt wird. Der Betrieb wird direkt über die Hardware oder in RT-Thread-, VSF (Versaloon Software Framework) und Linux-Umgebungen unterstützt.

Besonders bemerkenswert ist die einfache Integration von PikaScript-Skripten mit C-Code - Funktionen, die in C geschrieben sind, können an den Code gebunden werden, was es ermöglicht, vorhandene Arbeiten aus älteren Projekten, die in C geschrieben sind, bei der Implementierung von PikaScript zu nutzen. Zur Entwicklung von C-Modulen können bestehende Entwicklungstools wie Keil, IAR, RT-Thread Studio und Segger Embedded Studio verwendet werden. Die Bindungen werden automatisch während der Kompilierungsphase generiert; es reicht aus, die API in der Datei mit dem Python-Code zu definieren, und die Bindung der C-Funktionen an die Python-Module wird während des Starts des Pika Pre-compilers durchgeführt.

In PikaScript wird Unterstützung für 24 Mikrocontroller ausgegeben, einschließlich verschiedener Modelle stm32g*, stm32f*, stm32h*, WCH ch582, ch32*, WinnerMicro w80*, Geehy apm32*, Bouffalo Lab bl-706, Raspberry Pico, ESP32C3 und Infineon TC264D. Für einen schnellen Entwicklungsstart ohne Hardware steht ein Simulator zur Verfügung oder es wird das Entwicklerboard Pika-Pi-Zero auf Basis des Mikrocontrollers STM32G030C8T6 mit 64 KB Flash und 8 KB RAM angeboten, das gängige Peripherieschnittstellen (GPIO, TIME, IIC, RGB, KEY, LCD, RGB) unterstützt. Die Entwickler haben auch einen Online-Projektgenerator und einen Paketmanager PikaPackage vorbereitet.
In der neuen Version wurde ein speichermanagement auf Basis von Referenzzählung implementiert, und die Unterstützung für virtuelle Konstruktoren (Factory-Methode) wurde hinzugefügt. Eine Diagnose von Speicherproblemen wurde mithilfe des Werkzeugs valgrind durchgeführt. Die Unterstützung für die Kompilierung von Python-PC-Dateien in Bytecode und deren Verpackung in die Firmware wurde hinzugefügt. Es wurde die Möglichkeit umgesetzt, mehrere Python-Dateien in Firmwares zu verwenden, ohne ein Dateisystem nutzen zu müssen.
Quelle: opennet.ru
