Skip to main content

Module console_math_json

Module console_math_json 

Source

Statics§

RNG_SEED 🔒

Functions§

console_log 🔒
display_inner_with 🔒
display_value 🔒
console 表示用(文字列はクォート無し、オブジェクトは簡易 JSON 風)。 structuredClone/JSON.stringify にあったのと同じ「循環参照で無限再帰」バグが ここにもあった。console.log(a)a.self = a)は特に日常的にありうる操作のため、 この no_std 環境でのクラッシュ/ハングとしては最も踏みやすいケースだった。祖先追跡を 追加し、循環を検出したら(ブラウザ devtools と同じ慣習で)[Circular] と表示する。
display_value_inner 🔒
internalize_json_property 🔒
json_is_raw_json 🔒
JSON.isRawJSON(value)(ES2025)。json_raw_jsonが作る形状 (frozenかつproto: Noneかつ own プロパティがrawJSON(文字列)1個のみ) と一致するかで判定する簡略実装。
json_parse 🔒
JSON.parse(text, reviver)。以前は reviver(各キーをボトムアップで巡り値を 差し替える/undefined を返せば削除する変換関数)を完全に無視していた。
json_quote 🔒
json_raw_json 🔒
JSON.rawJSON(text)(ES2025)が丸ごと未対応だった。数値精度を保ったまま (例: Numberの安全整数範囲を超える巨大な整数)JSON文字列へ埋め込むための マーカーオブジェクトを作る。内部スロットが無い簡略実装のため、frozenproto: NonerawJSONという1個の own プロパティのみを持つ、という形状 そのものを「rawJSONオブジェクトである」印として扱う(JSON.isRawJSONも 同じ形状チェックで判定する)。2026-07-18 発見・実装。
json_stringify 🔒
JSON.stringify(value, replacer, space)。以前は space(インデント整形)と replacer(キーのフィルタ用配列、または値を差し替える関数)の両方を完全に無視していた。
json_to_value 🔒
math_abs 🔒
math_ceil 🔒
math_cos 🔒
math_exp 🔒
math_floor 🔒
math_log 🔒
math_max 🔒
math_min 🔒
math_pow 🔒
math_random 🔒
math_round 🔒
math_sign 🔒
math_sin 🔒
math_sqrt 🔒
math_trunc 🔒
value_to_json_string 🔒
Value を JSON 文字列へ(undefined/関数は省略)。indent が空でなければ depth 段の インデント付き整形出力にする(JSON.stringify(v, null, 2) 等)。key_filterSome なら(replacer が配列指定のとき)オブジェクトのキーをそれで絞り込む (配列要素自体には適用しない。仕様どおり)。replacer_fnSome なら各値を replacer_fn(key, value)this はプロパティの持ち主)で差し替えてから直列化する。
value_to_json_string_inner 🔒
ancestors は現在の再帰パス上にある(まだ直列化を終えていない)オブジェクトの一覧 (循環参照検出用のスタック。同一オブジェクトへの「兄弟」参照は問題ない — 構造共有として 正しく複数回直列化される — が、自分自身が祖先に含まれていれば真の循環参照)。 以前はこの追跡が無く、循環参照を渡すと無限再帰に陥っていた(structuredClone に あった既知のバグと同種。この no_std 環境ではクラッシュ/ハングになり得る)。仕様どおり TypeError"Converting circular structure to JSON")を投げるようにした。