今組み込み言語を制作中で、Cから言語へのインターフェイスを考えてるところなんだけど、
どういうのがいいのか悩んでる。
二つ案があって、ひとつはLuaと同じくスタックを介する方法。
もうひとつは、オブジェクトハンドルを経由してアクセスする方法で、

Handle globalhash, funcobj, symbol;
globalhash = getglobal( state );
symbol = intern( state, "globalfunc" );
funcobj = getfield( globalhash, symbol );

arg_pushinteger( funcobj, 10 );
call( funcobj );

handle_drop( funcobj );
handle_drop( symbol );
handle_drop( globalhash );

という感じになる。ちょっと長いけど、グローバルハッシュから特定シンボ
ルの値を得るというのはありそうな処理なので、実際には専用のAPIを用意する。
ただこちらのほうはスタックに比べて、
・ハンドル開放処理を忘れるとメモリリーク
・遅い
という問題がある。

前者はスタック操作でも同じ(スタックトップを戻し忘れるのがそれにあたる)だけど、
後者は頻繁に行う処理な分、結構致命的。

ただ後者の方法のほうがスタックの状態を覚えなくてよい分、直感的といえば直感的
なんだよな。
両方用意したほうがいいかな?