2020-11-22 (日)
とても眠い..
OculusQuestのブラウザ,以前はBluetoothデバイスが見えてた気がしたのでそのうち使おうかと思ってたのだけど,気づいたらブラウザからBluetoothデバイスにアクセスできなくなってるような...Web Bluetooth API使ってる人はいないと思われて無効にされちゃったのかな.
* ESP32でJavaScriptを動かす日
ESP32,SRAMが512KiBも載ってるし,試しにJavaScriptで開発してみようと思ってたのだけど,QuickJSで遊んでるうちに別のもの作ってたりしたので,当初の目的に戻る.
とりあえず,QuickJS自体は素のC言語で書かれてるのでほとんど変更せずに普通にESP32でも動く.もともとlinuxとwin32のifdefが入ってるあたりを,ESP32用にいじるだけ.
ただ,malloc&freeが大量に呼ばれるのと,ほとんどの値をuint64_tで扱う必要があるのがメモリ少ない環境だと少ししんどい.あとUnicodeのテーブルがでかい.これは仕方ないけど,メモリリークさせると一瞬でメモリ食いつぶしてしまう.
QuickJS,基本的にJS_Get*/JS_Set*という名前の関数はメモリの所有権が移動して,受け取った側で使い終わったらリファレンスカウントを減らす思想っぽいけど,たまに例外があって困る.JS_SetPrototypeとかは渡す側で値を破棄しないといけないっぽい.