KryonOS: เปลี่ยน ESP32 ให้เป็น Mini Computer เขียนแอปด้วย JavaScript

ปกติอยากเปลี่ยนโปรแกรมบน ESP32 เรามักแก้ Code, Compile แล้ว Flash Firmware ใหม่ แต่ KryonOS ลองเปลี่ยนแนวคิดนั้น: Flash ระบบหลักครั้งหนึ่ง แล้วแยก Application ออกมาเป็น JavaScript App ที่ติดตั้งและอัปเดตภายหลังได้

ผลลัพธ์คือ ESP32 ที่มีหน้าจอ สามารถมี Launcher, File Manager, App Store, JavaScript Runtime และ Hardware API จนให้ประสบการณ์ใกล้เคียง Mini Computer มากกว่า Development Board ที่รัน Firmware โปรแกรมเดียว

KryonOS GUI ทำงานบนอุปกรณ์ ESP32 สองรูปแบบ
KryonOS ทำงานบนอุปกรณ์ ESP32 หลายรูปแบบ โดยระบบหลักมี GUI, Application Launcher และ JavaScript Runtime สำหรับรัน App แยกจาก Firmware หลัก
Key Takeaways
  • KryonOS เป็น Open-source GUI OS และ JavaScript App Runtime สำหรับ ESP32
  • Current Repository ฝัง Duktape 2.7.0 เป็น JavaScript Engine
  • แอปถูกแยกเป็น Folder ที่มี app.json และ main.js
  • มี App Store สำหรับติดตั้งและอัปเดต App ผ่าน Wi-Fi โดยไม่ต้อง Flash OS ใหม่ทุกครั้ง
  • Current Runtime ใช้ API หลักในรูป System.* และ FS.*
  • Official API Guide ระบุ Heap ใช้งานได้ประมาณ 90KB ต่อ Script เมื่อ Wi-Fi ปิด
  • System.delay() มีบทบาททั้ง Delay และ Trigger Garbage Collection ตาม API Guide
  • Default Reference Hardware คือ ESP32 + ILI9341 2.8" + XPT2046 Touch
  • Display/Touch ใช้ VSPI ขณะที่ microSD ใช้ HSPI
  • M5Stack Cardputer, CYD และ LilyGO T-HMI ยังถูกระบุเป็น Experimental Support

KryonOS คืออะไร?

KryonOS เป็น Open-source GUI Operating System และ JavaScript App Runtime ที่ออกแบบมาสำหรับ ESP32

ระบบมีองค์ประกอบที่ปกติเราอาจคุ้นจาก Computer หรือ Smartphone มากกว่า MCU เช่น:

  • Application Launcher
  • File Explorer
  • Text Editor
  • App Store / Installer
  • JavaScript Runtime
  • Hardware API
  • Touch UI

แต่ทั้งหมดนี้ยังทำงานอยู่บนข้อจำกัดของ ESP32 ทั้งเรื่อง RAM, Storage และ Processing Resource

KryonOS ไม่ใช่ Linux และไม่ใช่ Node.js: มันเป็น Embedded GUI OS ที่มี JavaScript Runtime ของตัวเอง และเปิด Hardware API ผ่าน C++ Binding ให้ JavaScript App เรียกใช้งาน

ต่างจาก Firmware ESP32 แบบเดิมยังไง?

Workflow แบบ Arduino / ESP32 ทั่วไปมักเป็น:

เขียน Firmware
↓
Compile
↓
Flash ลง ESP32
↓
Device รัน Application นั้น

หากต้องการเปลี่ยน Application ก็มักต้องแก้ Firmware และ Flash ใหม่

KryonOS แยก System Firmware ออกจาก Application:

Flash KryonOS
ติดตั้ง Runtime + GUI + System Services
↓
ติดตั้ง JavaScript App
↓
เปิด App จาก Launcher
↓
เปลี่ยน / Update App ได้โดยไม่ต้อง Flash OS ใหม่ทุกครั้ง
Concept สำคัญ: สิ่งที่ KryonOS พยายามเปลี่ยน คือ Application Lifecycle ไม่ใช่การทำให้ ESP32 กลายเป็น PC ประสิทธิภาพสูง

Flash ครั้งเดียว แล้วลง JavaScript App ได้ยังไง?

KryonOS มี Duktape JavaScript Runtime อยู่ใน System Firmware ทำให้ App ไม่จำเป็นต้องถูก Compile เข้าไปเป็น C++ Firmware ชุดใหม่ทุกครั้ง

เมื่อผู้ใช้เปิด App OS จะโหลด JavaScript Entry Point แล้ว Runtime เป็นตัว Execute Application

Hardware Function ที่ปกติต้องเรียกผ่าน C++ ถูก expose เป็น JavaScript API เช่น:

  • วาด Graphics
  • อ่าน Touch
  • ควบคุม GPIO
  • อ่าน Analog Input
  • ใช้ PWM
  • อ่าน/เขียน File
  • ดูข้อมูล System

App หนึ่งตัวประกอบด้วยอะไร?

Official App Development Guide กำหนดโครง App เป็น Folder ที่มีอย่างน้อยสองไฟล์หลัก:

KryonOS App Structure
MyAwesomeApp/
├── app.json
└── main.js

app.json

เป็น Metadata ของ Application ใช้บอกชื่อ, Package Name, Version, Author, Category, API Level และข้อมูลสำหรับตรวจ Update

main.js

เป็น Entry Point ของ Application ที่ถูกโหลดเมื่อผู้ใช้เปิด App จาก Launcher

Official Hello World — app.json
{
  "name": "Hello World",
  "packageName": "com.kryonos.helloworld",
  "version": "1.0.0",
  "metaUrl": "https://raw.githubusercontent.com/Haris16-code/KryonOS-AppStore/refs/heads/main/categories/Demos/hello_world/app.json",
  "api": 1,
  "author": "KryonOS Team",
  "type": "App",
  "category": "Utility",
  "description": "A simple Hello World application.",
  "changelog": ""
}

Current App Development Guide ระบุว่า API Level ปัจจุบันของ Application ควรเป็น 1

Duktape 2.7.0 รัน JavaScript แบบไหน?

CNX ระบุว่า KryonOS ใช้ Duktape 2.x ขณะที่ Current Source Repository มี Duktape Header ที่ระบุ Version 2.7.0

Duktape ทำหน้าที่เป็น Embedded JavaScript Engine ภายใน ESP32 และ KryonOS ใช้ C++ Binding เชื่อม JavaScript เข้ากับ Hardware และ System Service

main.js
Application Logic
↓
Duktape 2.7.0
JavaScript Runtime
↓
KryonOS C++ Bindings
↓
ESP32 Hardware / Display / File System

ES5, ES6 และ Syntax ที่ต้องระวัง

Official JavaScript API Guide วางพื้นฐาน Runtime ไว้ที่ ECMAScript 5 / 5.1 และระบุว่ามี ES6 Built-in บางส่วน

Guide ระบุว่า Syntax สมัยใหม่บางประเภทไม่รองรับ เช่น:

  • Arrow Function
  • let
  • const
  • ES6 Class Syntax
  • Template Literal
แต่ Official Project มีข้อมูลไม่ตรงกัน: Current KryonOS App Store มี Application บางตัวที่ใช้ const อยู่จริง ดังนั้นไม่ควรตีความ Documentation ข้อนี้ เป็นข้อจำกัดตายตัวของทุก Runtime Revision

ถ้าต้องการ Compatibility สูงสุด วิธีที่ปลอดภัยกว่าคือเขียน App ด้วย Syntax แบบ ES5 และตรวจ Application ตัวอย่าง ที่ตรงกับ Runtime Version ที่กำลังใช้งาน

Graphics.* หรือ System.*? Official Docs มี Conflict

CNX และ App Development Guide มี Hello World ตัวอย่างที่เรียก:

Graphics.fillScreen()

แต่เมื่อตรวจ Current Runtime Source จะพบว่า Drawing Function ถูก Register อยู่ใต้ Global Object:

System

เช่น:

  • System.fillScreen()
  • System.drawString()
  • System.setTextColor()
  • System.createSprite()
  • System.gpio.pinMode()

Current Official App Store ก็ใช้ System.* ตรงกับ Runtime Source

บทความนี้จึงใช้ Current Runtime เป็นหลัก: จะไม่ใช้ Graphics.* จาก Documentation ตัวอย่างเก่า เป็น Code แนะนำ และไม่ใช้ System.exit() เพราะ Current Runtime Source ที่ตรวจ ไม่พบ Binding ดังกล่าว

Hello World จาก Current Official App Store

แทนที่จะใช้ Hello World จาก Documentation ที่ API Naming ไม่ตรงกับ Runtime ปัจจุบัน ตัวอย่างด้านล่างมาจาก Current Official KryonOS App Store

Official Hello World — main.js
// Hello World Test App
// Clears the screen to blue, then writes white text

System.fillScreen(0x001F); // TFT_BLUE

System.drawString("Hello from HarixOS JS!", 20, 50);
System.drawString("JavaScript is working!", 20, 80);
System.drawString("This is running natively", 20, 110);
System.drawString("on your ESP32!", 20, 140);

Concept สำคัญคือ Application ไม่ต้องมี Arduino setup() และ loop() แบบ Sketch ทั่วไป แต่เขียน Logic ลงใน main.js สำหรับ Runtime ของ KryonOS

RAM ประมาณ 90KB หมายความว่าอะไร?

CNX ระบุว่า KryonOS App มี Memory ใช้งานค่อนข้างจำกัด และ Official JS API Guide ให้รายละเอียดเพิ่มว่า:

ประมาณ 90KB ของ usable free RAM ต่อ Script เมื่อ Wi-Fi ปิด

90KB ไม่ใช่ Guarantee ในทุกสถานการณ์: ตัวเลขใน Official Guide มีเงื่อนไขว่า Wi-Fi Disabled และ Free Heap จริงยังขึ้นกับ Runtime State, Fragmentation, Buffer และ Resource ที่ App ใช้อยู่

สิ่งที่ผู้พัฒนา App ต้องระวังคือ:

  • Array ขนาดใหญ่
  • String ขนาดใหญ่
  • Image Buffer
  • Animation Loop ที่ Allocate Object ซ้ำ ๆ
  • Sprite ที่ต้องการ Contiguous Memory จำนวนมาก

ทำไม System.delay() เกี่ยวกับ Garbage Collection?

ใน KryonOS System.delay(ms) ไม่ได้มีไว้หยุดโปรแกรมอย่างเดียว

Official API Guide ระบุว่า Function นี้ยังสั่ง C++ Kernel ให้ทำ Garbage Collection เพื่อช่วยลด Memory Fragmentation

Guide ยังเตือนว่า หาก Application มี Infinite Loop ควรมี System.delay() อยู่ใน Loop เพื่อลดความเสี่ยง Heap Exhaustion

นี่คือความต่างจาก JavaScript บน PC: บน MCU ที่มี RAM จำกัดมาก Memory Management กลายเป็นส่วนหนึ่งของ Application Design โดยตรง

Graphics และ Mini-Sprites ทำงานยังไง?

Documentation มีถ้อยคำเรื่อง Rendering ที่ดูเหมือนขัดกันระหว่าง Direct-to-glass กับ Double Buffering แต่ Current Runtime Source ช่วยแยกได้ชัดขึ้น

Default

Drawing Function เช่น System.fillScreen() หรือ System.drawLine() จะวาดไปยัง TFT โดยตรง เมื่อยังไม่ได้เปิด Sprite Buffer

Optional Sprite Buffer

หาก App เรียก:

  • System.createSprite(width, height)
  • System.bindSprite(true)

Drawing Command จะถูกส่งไปยัง Off-screen Sprite Buffer และใช้:

System.pushSprite(x, y)

เพื่อส่ง Frame ไปยังหน้าจอ

Full-screen Buffer ใช้ RAM สูง: Official Guide ยกตัวอย่าง 240 × 320 ที่ 16-bit color ใช้ประมาณ 153.6KB ซึ่งอาจมากเกิน Contiguous Heap ที่มีอยู่ในบางสถานการณ์

Project จึงแนะนำแนวคิด Sliced Rendering คือแบ่ง Buffer เป็นส่วนเล็ก ๆ แทนการ Allocate Full-screen Framebuffer ก้อนเดียว

Current Runtime ยังพยายาม Fallback จาก 16-bit ไป 8-bit Sprite หาก Allocation แบบ 16-bit ไม่สำเร็จ

File System /local/ และ /sd/

KryonOS มี Unified File System ที่แยกพื้นที่ออกเป็นสองกลุ่มหลัก:

Path หน้าที่
/local/ พื้นที่ File System ภายในที่ KryonOS เปิดให้ Application ใช้
/sd/ ไฟล์บน microSD Card

JavaScript API มี Function เช่น:

  • FS.exists()
  • FS.readTextFile()
  • FS.writeTextFile()
  • FS.appendTextFile()
  • FS.listDir()
  • FS.mkdir()
  • FS.getFileSize()
  • FS.getFreeSpace()
  • FS.mountSD()
อ่านไฟล์ใหญ่ต้องระวัง RAM: Official API Guide เตือนว่า FS.readTextFile() โหลด File ทั้งก้อนเข้า RAM และไม่ควรใช้กับ File ใหญ่กว่า ประมาณ 20KB ตามคำแนะนำในเอกสารปัจจุบัน

Reference Hardware ต้องใช้อะไร?

Current README ระบุ Stable Reference Setup เป็น:

  • ESP32 Development Board
  • ILI9341 2.8-inch TFT Display
  • XPT2046 Resistive Touch Controller
  • microSD Card Module
  • Breadboard / Jumper Wire สำหรับ Reference Build
Display / Touch ESP32 Pin
TFT CS GPIO17
TFT RESET GPIO5
TFT DC GPIO16
TFT MOSI GPIO23
TFT SCK GPIO18
TFT LED GPIO32
TFT MISO GPIO19
Touch CLK GPIO18
Touch CS GPIO21
Touch DIN GPIO23
Touch DO GPIO19
Touch IRQ ไม่ต่อใน Default Pinout

microSD ผ่าน HSPI

microSD ESP32 Pin
MOSI GPIO13
MISO GPIO26
SCK / CLK GPIO14
CS GPIO15

README ยังระบุว่า Default Display / Touch Pinout ตรงกับ ESP32 Marauder v4, v6 และ v6.1

ทำไม Display กับ SD แยก SPI Bus?

Official README ระบุ Architecture ว่า:

  • VSPI — Display + Touch
  • HSPI — microSD

Project อธิบายว่าแยก Bus เพื่อประสิทธิภาพที่ดีขึ้น และลดปัญหา Bus Collision ระหว่าง Display/Touch กับ Storage

นี่เป็นส่วนที่ทำให้ KryonOS เกินกว่าแค่ JavaScript Interpreter: OS ต้องจัดการทั้ง Display, Touch, Storage และ Application Runtime พร้อมกันบน MCU ที่มี Resource จำกัด

Board ไหน Stable และ Board ไหน Experimental?

KryonOS ทำงานบน M5Stack Cardputer ในสถานะ Experimental
KryonOS บน M5Stack Cardputer ซึ่ง Current Official README ระบุเป็น Experimental Support
Hardware สถานะใน Current README
ESP32 + ILI9341 2.8" Touch Stable
M5Stack Cardputer Experimental
CYD / Cheap Yellow Display Experimental
LilyGO T-HMI Experimental

README ยัง List MCU Family ที่รองรับ ได้แก่:

  • ESP32 WROOM-32
  • ESP32-S2
  • ESP32-S3
  • ESP32-C3
Supported MCU ไม่ได้แปลว่า Binary เดียวใช้ได้ทุกบอร์ด: Current Default PlatformIO Configuration ที่ตรวจใน Repo ใช้ esp32doit-devkit-v1 และ Stable Reference Hardware ยังเน้น Classic ESP32 + ILI9341

CNX ยังกล่าวถึง Experimental Support สำหรับ Display Controller อื่น เช่น ST7789V2 แต่ Current Official Repository ที่ตรวจรอบนี้ไม่พบรายละเอียดดังกล่าว จึงไม่ถือเป็น Official Support ที่ล็อกไว้ในบทความนี้

Flash KryonOS ด้วย Binary หรือ PlatformIO

Official README ให้สองแนวทางหลัก

วิธีที่ 1 — Precompiled Binary

Download Binary จาก Releases แล้วใช้ esptool.py หรือ Official ESP Flash Download Tool

Official README — esptool.py Example
esptool.py --chip esp32 --port COM3 --baud 921600 write_flash -z \
  0x1000 bootloader.bin \
  0x8000 partitions.bin \
  0x10000 firmware.bin
Official README — PlatformIO Upload
pio run -t upload
COM3 เป็นเพียง Example จาก README: Serial Port จริงขึ้นกับ Computer และ Hardware ที่ใช้งาน และ Precompiled Binary ควรตรงกับ Board / Build Target ที่ Project ระบุ

App Store ช่วยลดการ Flash Firmware ยังไง?

KryonOS มี App Store / Installer สำหรับ Download และ Install JavaScript Application ผ่าน Wi-Fi

Metadata ใน app.json มีทั้ง:

  • packageName
  • version
  • author
  • description
  • api
  • metaUrl

App Development Guide ระบุว่า metaUrl ใช้สำหรับตรวจ Version ใหม่ของ App

นี่ทำให้ App Update สามารถเกิดแยกจาก OS Firmware แทนที่จะต้อง Recompile KryonOS ทั้งระบบ

สำหรับ Maker นี่คือแนวคิดที่น่าสนใจมาก: Firmware กลายเป็น Platform ส่วนสิ่งที่ทดลองบ่อย ๆ ย้ายขึ้นมาอยู่ใน JavaScript Application

KryonOS ต่างจาก Espruino ใน Concept ไหน?

CNX เปรียบเทียบ KryonOS กับ Espruino เพราะทั้งคู่เปิดทางให้ Microcontroller ใช้ JavaScript ได้

ความต่างที่บทความ CNX เน้นคือ KryonOS พยายามรวม Environment แบบ OS มากขึ้น:

  • GUI
  • Launcher
  • File Explorer
  • App Store
  • Application Package

ในขณะที่ Espruino ถูกยกเป็นตัวอย่าง ของ JavaScript Interpreter / Platform สำหรับ Microcontroller

บทความนี้ไม่ได้ทำ Performance Comparison: Source ไม่ได้ให้ Benchmark ระหว่าง KryonOS และ Espruino จึงไม่สรุปว่า Platform ใดเร็วกว่า หรือใช้ RAM น้อยกว่า

Maker ได้อะไรจาก Project นี้?

1. ESP32 ไม่จำเป็นต้องรัน Application เดียวตลอดชีวิต

KryonOS แสดงให้เห็นแนวคิด แยก Platform Firmware ออกจาก User App

2. JavaScript ทำ Hardware Control ได้ผ่าน Native Binding

GPIO, Display, Touch และ File System ถูกเปิดให้ JavaScript เรียกผ่าน C++ Binding แทนการให้ App จัดการ Hardware Driver เองทั้งหมด

3. RAM คือข้อจำกัดจริงของ Embedded JavaScript

Heap ระดับหลักสิบ KB ทำให้วิธีเขียน Application ต่างจาก Web JavaScript บน Computer อย่างชัดเจน

4. Graphics ต้องออกแบบตาม Memory

Full-screen Double Buffer อาจใหญ่เกิน Heap จึงเกิดแนวทาง Mini-Sprite และ Sliced Rendering

5. Documentation Version สำคัญ

Conflict ระหว่าง Graphics.* กับ System.* และเรื่อง const เป็นตัวอย่างชัดว่า Project ที่พัฒนาเร็วควรตรวจ Current Runtime Source และ Current App Store ควบคู่กับ Guide

โปรเจกต์นี้มีหลายส่วน แนะนำอ่าน Official Source ควบคู่กัน

โดยเฉพาะ JavaScript API, Hardware Pinout, Board Compatibility และ App Development ควรตรวจ Repository ปัจจุบัน ก่อนสร้าง Application จริง

FAQ: คำถามที่พบบ่อย

1. KryonOS คืออะไร?

เป็น GUI Operating System และ JavaScript App Runtime แบบ Open-source สำหรับ ESP32

2. KryonOS เป็น Linux หรือไม่?

ไม่ Source อธิบาย KryonOS เป็น Embedded GUI OS และ JavaScript Runtime ไม่ใช่ Linux Distribution

3. ใช้ JavaScript Engine อะไร?

Current Repository ฝัง Duktape 2.7.0

4. App ของ KryonOS เขียนด้วยไฟล์อะไร?

Standard App Folder มี app.json สำหรับ Metadata และ main.js สำหรับ Application Logic

5. ต้อง Flash Firmware ใหม่ทุกครั้งที่เปลี่ยน App ไหม?

แนวคิดของ KryonOS คือแยก App ออกจาก OS และรองรับการติดตั้ง/อัปเดต JavaScript App โดยไม่ต้อง Flash System Firmware ใหม่ทุก App

6. ใช้ Arrow Function ได้ไหม?

Official JS API Guide ระบุว่า Arrow Function ไม่รองรับ และแนะนำ Syntax ที่เข้ากับ ES5/ES5.1

7. ใช้ let หรือ const ได้ไหม?

JS API Guide ระบุว่า let/const ไม่รองรับ แต่ Current Official App Store มีบาง App ที่ใช้ const จึงควรตรวจ Runtime Version และยึด ES5 Syntax หากต้องการ Compatibility สูงสุด

8. Graphics API ใช้ Graphics.* หรือ System.*?

Current Runtime Source และ Current Official App Store ใช้ System.* เป็นหลัก แม้ App Development Guide บางตัวอย่าง ยังใช้ Graphics.*

9. แต่ละ App มี RAM 90KB แน่นอนหรือไม่?

ไม่ Official Guide ระบุประมาณ 90KB ของ usable free RAM ต่อ Script ภายใต้เงื่อนไขว่า Wi-Fi ปิด

10. System.delay() ทำอะไร?

นอกจาก Pause JavaScript Official API Guide ระบุว่า System.delay() ยัง Trigger Garbage Collection ใน Kernel ด้วย

11. KryonOS รองรับ microSD ไหม?

รองรับ และ Reference Hardware ใช้ microSD ผ่าน HSPI

12. Default Display คือรุ่นอะไร?

Stable Reference Setup ใช้ ILI9341 2.8-inch TFT ร่วมกับ XPT2046 Resistive Touch Controller

13. M5Stack Cardputer รองรับไหม?

Current Official README ระบุ Cardputer เป็น Experimental Support

14. Cheap Yellow Display รองรับไหม?

มี Experimental Support ตาม Current README

15. LilyGO T-HMI รองรับไหม?

Current README ระบุเป็น Experimental

16. รองรับ ESP32-S3 หรือไม่?

README List ESP32-S3 อยู่ใน MCU ที่รองรับ แต่ Default Stable Build Configuration และ Reference Hardware ที่ตรวจยังเน้น Classic ESP32 + ILI9341

17. Flash ด้วยอะไรได้บ้าง?

Official README ระบุ Precompiled Binary ผ่าน esptool.py หรือ ESP Flash Download Tool และสามารถ Build/Upload จาก Source ผ่าน PlatformIO ได้

18. มี App Store จริงไหม?

มี Official KryonOS-AppStore Repository และ README ของ KryonOS ระบุ App Store / Installer สำหรับดาวน์โหลดและอัปเดต App ผ่าน Wi-Fi

19. KryonOS รองรับ Bluetooth, I2C หรือ Deep Sleep API ครบแล้วหรือยัง?

README ปัจจุบันวาง Bluetooth, I2C, SPI Sensors และ Deep Sleep บางส่วนไว้ใน Roadmap ของ Hardware API จึงไม่ควรถือว่าทุกส่วนพร้อมใช้งานแล้ว

20. Source ระบุ Performance หรือ FPS ไหม?

Source ไม่ได้ให้ Benchmark หรือ FPS ที่ใช้เปรียบเทียบแบบมาตรฐาน จึงไม่สามารถระบุตัวเลข Performance เพิ่มได้

References / แหล่งข้อมูลต้นฉบับ

ESP32 ไม่ได้มีไว้รันแค่ Firmware โปรแกรมเดียวเสมอไป

KryonOS เป็นตัวอย่างที่น่าสนใจของการเอา GUI, JavaScript Runtime, File System และ App Model มาวางบน Microcontroller โดยยังเปิดให้ App ควบคุม GPIO, Display และ Hardware ผ่าน API ได้

หากกำลังเลือก ESP32, Display หรือ Development Board สำหรับ Embedded GUI / JavaScript / IoT Project สามารถสอบถามทีม Globalbyte เรื่องบอร์ดและอุปกรณ์ที่เหมาะกับ Project ได้

Disclaimer: บทความนี้เป็นการสรุปและเรียบเรียงจากแหล่งข้อมูลภาษาอังกฤษ อาจมีความคลาดเคลื่อน กรุณาตรวจสอบ Source ต้นฉบับก่อนลงมือทำ KryonOS ยังเป็น Project ที่มีการพัฒนาอย่างต่อเนื่อง และ Documentation บางส่วนไม่ตรงกับ Current Runtime โดย App Development Guide มีตัวอย่าง Graphics.* และ System.exit() ขณะที่ Current Runtime Source และ Official App Store ใช้ System.* และไม่พบ System.exit() Binding ใน Runtime ที่ตรวจรอบนี้ JS API Guide ยังระบุว่า let/const ไม่รองรับ แต่ Current Official App Store มี Application บางตัวที่ใช้ const จึงควรตรวจ Runtime Version, App Store และ Documentation ที่ตรง Revision ก่อนพัฒนา App จริง ค่า usable free RAM ประมาณ 90KB มีเงื่อนไขว่า Wi-Fi ปิดและไม่ใช่ค่ารับประกันในทุก Runtime State ส่วน M5Stack Cardputer, CYD และ LilyGO T-HMI ยังถูกระบุเป็น Experimental Support ขณะที่ Stable Reference Setup คือ ESP32 + ILI9341 2.8-inch Touch Source ไม่ได้ให้ Benchmark, FPS, Boot Time, App Launch Time, Power Consumption, Battery Runtime, Maximum App Count, Maximum SD Card Capacity หรือ Performance Comparison กับ Espruino จึงไม่ควรสร้างค่าดังกล่าวขึ้นเอง

 

แท็ก


Blog posts