<< 前へ | ホーム | 次へ >>

prototype.js 1.6.0

prototype.js を使ったプログラミングの話ではありません。

Sapid の JSX-model 生成系を使って prototype.js 1.6.0 のソースコードを解析しました。新しい生成系を作っているところですが、13 倍ほど高速になっているようです。ただ、どっちの生成系を使っても SDB からタグを取り除いて元のソースコードに戻らないのでどこかバグっているみたいです。

と思ったら以前からある文字コードの問題ですね。UTF-8 が正しいけど、文字コード判定を行う先頭 4K 内の文字は ASCII なわけでうまくいってません。どうしたものか。

タグ :

ラベル付き continue

Sapid の JSX-model 生成系がラベル付き continue に対応していないことが今頃になって発覚しました。そもそも構文解析が間違っている(ラベル付き continue が定義されていない)んですが、ラベルが付いていてもたまたま解析をパスしてマークアップも(結果は間違っていますが)行われてしまうようです。直さないといけないんですが…。

タグ :

JavaScript で同名の仮引数を持つ関数

JavaScript の関数で仮引数を同名にした場合、どれを参照するのが正解でしょうか。例えば、


function f(x, x, x, x) {
  print(x);
}
f(0, 1, 2, 3);

では、Rhino1.6R3 だと 3 が表示されますが、一番後ろでいいのかな。仕様書をみても書いてないような気がします。誰か知っていたら教えてください。

SecureC: Control-flow Protection Against General Buffer Overflow Attack

バッファオーバーフローを用いた攻撃を防ぐための手法として、C 言語を対象としてソースコード変換とランタイムの提供による手法を提案。一つ目の手法は、配列を shadow stack と呼ぶ領域に確保して、スタックからその領域を指すようにする。これによってスタック上にコードを書き込まれたりリターンアドレスを変更されなくなる。Shadow stack には read-only な領域が続くようにしておいて配列長以上に書き込むと segmentation fault。二つ目の手法は、関数ポインタの指す先が正しいか確認するコードを挿入する。ポインタ変数のスタック上の位置が配列に続く位置の場合は、オーバーフローで変なところを指す可能性があるので、実行直前に代入時と変わっていないか検査する。実装もされていて、時間的性能の低下は約 6% らしい。

author="Hiroyasu Nishiyama",
title="{SecureC: Control-flow Protection Against General Buffer Overflow Attack}",
booktitle="COMPSAC'05",
publisher="IEEE Computer Society Press",
pages="149--155",
year="2005"

タグ : ,

Pointer Analysis for Structured Parallel Programs

並列プログラムのポインタ解析手法。論文では Cilk という C の拡張言語のように、どこが並列に動作するかプログラムを見ればすぐにわかるような言語が対象になっている。解析手法としては、ポインタがどこを指しているか表すグラフを構築する従来手法をストレートに並列プログラムに対応させた感じ。

author="Radu Rugina and Martin C. Rinard",
title="{Pointer Analysis for Structured Parallel Programs}",
journal="ACM Transactions on Programming Languages and Systems",
volume="25",
number="1",
pages="70--116",
year="2003"

タグ : ,

Refactoring Programs to Secure Information Flows

情報流解析に基づくリファクタリングの提案。機密データを扱うコンポーネントを分離し、境界を越えるところで declassify する。論文では例とリファクタリングする際に問題となる点に対して考察が行われているだけで、具体的なリファクタリングの定義などは何もなし。

author="Scott F. Smith and Mark Thober",
title="{Refactoring Programs to Secure Information Flows}",
booktitle="PLAS 2006",
publisher="ACM Press",
pages="75--84",
year="2006"

タグ : ,

JFlow: Practical Mostly-Static Information Flow Control

Javaの機能を極力削らないようにしながら情報流解析を導入して拡張した言語JFlowの論文。型システムとかの詳細は省かれていて、言語の解説がほとんど。Jifという後継(?)がある。

author="Andrew C.Myers",
title="{JFlow: Practical Mostly-Static Information Flow Control}",
booktitle="POPL'99",
publisher="ACM Press",
pages="228--241",
year="1999"

タグ : ,