投稿

ラベル(v8)が付いた投稿を表示しています

Node.jsとAddon

以下のNode.jsのAddonチュートリアルはとてもわかりやすく、しかも、ほぼC++を利用方法を網羅し説明してある。 本来v8に必要なドキュメントだと思うが、このようなものは現時点ではすぐに探せないか、存在しない。きっとNode.jsを作った人たちが書いたときに苦労したため、現実的にわかりやすく書くことができたのではないか。 http://nodejs.org/api/addons.html http://code.google.com/p/waf/ 以下にAddonパターン Addon patterns Function arguments Callbacks Object factory Function factory Wrapping C++ objects Factory of wrapped objects Passing wrapped objects around 以下にNODE_MODULE内容をWIN32部分を取り除いて載せておく #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) #define NODE_STRINGIFY_HELPER(n) #n #endif /** * When this version number is changed, node.js will refuse * to load older modules. This should be done whenever * an API is broken in the C++ side, including in v8 or * other dependencies */ #define NODE_MODULE_VERSION (1) #define NODE_STANDARD_MODULE_STUFF \ NODE_MODULE_VERSION, \ NULL, \ __FILE__ #define NODE_MODULE(modname, regfunc) ...

v8cgi

v8cgiのソースを2日ほど眺めた。v8の現実的な使い方を知るのにはシンプルな構成になっていると感じたためである。本来はNode.jsのコードをチェックしたいがイベントループ(イベントドリブン)ベースであるため、私のようなv8初心者にはコードを読むにはキツイと感じたのもある。実際にサーバーとして使うのならばNode.jsのほうが高速を考慮した設計なのでそちらが理想である。v8cgiに慣れたらNode.jsも解析したいと思う。 v8cgiに話を戻すが単純な処理を行うだけで特にトリッキーなところは少ないと思う。しかもNode.jsと同じくCommonJSに合わせたプラットフォームなので参考になる。尚、非同期機能中心のNode.jsはCommonJSに合わせにくいと読んだことがある。人気のNode.jsにの対応させるためCommonJSも変わっていくのではないか? 参考: http://code.google.com/p/v8cgi/ http://nodejs.org/ http://www.commonjs.org/ まずは macro.hをプリントアウトを横におきながら app.h, app.ccを読み v8cgi.ccを読む コアのclass v8cgi_App base class(super)   | v8cgi_CGI 各モジュールはjsとnativeでそれぞれ分かれている。 私はsocketの経験が多いのでそれを解析 src/lib/socket/socket.cc 多くのnative構成は... ------------------------------------------------------- [最終処理] ------------------------------------------------------- [JS_METHOD() 各エントリーの実装] ------------------------------------------------------- [SHARED_INIT() エントリーを登録] ------------------------------------------------------- その他。 src/内 ...

Gypにgypされた。

v8をandroid用にコンパイルする際、クロスプラットフォームプロジェクトツールの Gyp に騙された(笑) $ make android -j16 CC="/usr/local/android-ndk-r7/ toolchain/bin/arm-linux- androideabi-gcc" \ build/gyp/gyp --generator-output="out" build/all.gyp \               -Ibuild/standalone.gypi --depth=. -Ibuild/android.gypi \               -S-android  -Dv8_can_use_vfp_ instructions=true Traceback (most recent call last):   File "build/gyp/gyp", line 18, in <module>     sys.exit(gyp.main(sys.argv[1:] ))   File "/usr/lib/pymodules/python2.7/ gyp/__init__.py", line 457, in main     options.circular_check)   File "/usr/lib/pymodules/python2.7/ gyp/__init__.py", line 101, in Load     depth, generator_input_info, check, circular_check)   File "/usr/lib/pymodules/python2.7/ gyp/input.py", line 2275, in Load     [dependency_nodes, flat_list] = BuildDependencyList(t...