問題タブ [embedded-v8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-2.7 - CPython PyDateTime_FromTimestampを呼び出すsegfault
私は cpython と v8 を一緒に埋め込んでおり、javascript データを via に変換するときに segfault が発生していPyDateTime
ますPyDateTime_FromTimestamp
:
実行すると、次の出力が得られます。
エラーtimeTuple
の原因と思われる理由についての洞察はありますか?PyDateTime_FromTimestamp
文字列、数値、ブール値、配列、辞書などの変換はすべて正常に機能します。
c++ - Node.js / v8 代入演算子のオーバーロード
私の質問は簡単です.v8 / Node.jsで代入演算子の動作をどのように定義しますか?
メソッドを持つ C++ ドメインのクラスがあるとしますset
。通常、このJSを書くとき:
の 2 番目の呼び出しは、 の内容を新しいものにnew CppWrappedClass(...)
完全に置き換えます。jsInstance
私が達成したいのは、2 番目の呼び出しが発生したときに、C++ バックエンドでset
メソッドが呼び出されることです。別名、代入演算子の動作を定義します。
これは可能ですか?
c++ - コール ハンドラ データのガベージ コレクション
関数呼び出しハンドラにデータを提供しようとしていますが、ガベージ コレクションを適切に行うことができません。
tpl->SetCallHandler(callFn, external);
" "を含む行をコメントアウトすると、 ObjWeakCallbackが呼び出されます。ただし、関数が収集されることはありません (少なくともFnWeakCallbackは何があっても呼び出されません)。
プロセスごとに複数の分離に備える必要があるため、静的データはオプションではないことに注意してください。
isolate->setData
もオプションではありません。私は何かを完全に見逃していますか?内部v8::Function
にデータを保存する適切な方法は何ですか?
編集:私の意図をよりよく説明するために質問を言い換えましょう...
関数テンプレートを作成したいと思います (JS 側でコンストラクターとして使用する必要があるため)。void* をコール ハンドラに送信する方法が必要ですが、このデータはガベージ コレクション可能でなければなりません。
私がこれまでに試したことに関するいくつかのメモ:
の使用
Function::New(isolate, callHandler, External::New(isolate, data))
は機能しますが、JS 側のコンストラクター機能を提供しません (作成されたオブジェクトの SetInternalFieldCount を実行することはできません)。FunctionTemplate::New(isolate, callHandler, External::New(isolate, data))
コール ハンドラにデータを渡す機能を提供しますが、ガベージ コレクションは行われません (<not> 以下の動作例)。単純な関数を使用して、新しく作成した を返そうとしました
Object
が、次の仮定new Fn() instanceof Fn
は失敗します
arangodb - すでにインストールされている v8 で ArangoDB を構成およびコンパイルする方法
Armhf 用に Debian を実行している Cubietruck ボードで ArandoDB 2.2.3 をコンパイルしようとしています。3rdParty V8 はコンパイルされず、「#error ターゲット アーキテクチャ ia32 は ia32 ホストでのみサポートされています」というエラーがスローされるため、libv8-dev をインストールすることにしました。私のシステムには、ArangoDB に必要なすべてのヘッダーとライブラリがあります。現在の v8 ヘッダーと lib ファイルを使用するように ArangoDB 構成ユーティリティに指示するにはどうすればよいですか?
動作しませんでした。次のエラーが発生しました。
...
助けてくれてありがとう。
c# - V8.NET (v8dotnet) モノラル
Mono で V8.Net を使用する方法を説明する時間があれば幸いです。ubuntu マシンで mono 3.10 で V8.Net を使用しようとしています。これまでのところ、次のことを行いました。
codeplex のコンテンツを使用してサンプル プロジェクトを作成する
/li>V8.Net.dll と V8.NetSharedTypes を参照に追加
/Release/NET 4.0/x64 フォルダーの内容をビルド ディレクトリの /bin/Debug/x64 にコピーしました。
この例を実行しようとすると、次のエラーが発生します: A system.DllNotFoundException was throw.
Build type を Debug から ( Debug | Any cpu ) に変更しました。私が正しいと理解した場合、ライブラリは正しいdllを選択するはずです。
6 このモードでプログラムを再実行すると。プログラムは次の場所で停止します: 読み込まれたアセンブリ: /Build/v8dotnet/testv8/testv8/bin/test/x64/V8.Net.Proxy.Interface.x64.dll [外部]
コール スタックは、V8.Net.V8NetProxy.CreatehandleProxyTest() を示しています。
うまくいけば、それを実行するために私にいくつかの入力を与えることができます.
c++ - V8 を静的にリンクする
V8 で動的に完全に動作するプロジェクトがありますが、それを静的に埋め込みたいと考えています。V8 を静的として正常にコンパイルできますが、結果のライブラリを C++ プロジェクトに含めると (これも静的リンクに変更しました)、次のようなエラーが発生します。
他にもたくさんのエラーがあります。v8.lib について言及している投稿を見たことがありますが、存在しません。ただし、v8.obj ファイルがあります。
どんな洞察も大歓迎です、ありがとう。
multithreading - マルチスレッド環境で不変のオブジェクト/関数を共有する (組み込み v8)
N00b 質問です。v8/SpiderMonkey をサーバー コードに埋め込むことを考えています。サーバーは毎秒数千のリクエストを処理しています。したがって、マルチスレッドは必須です。異なるスレッドがコンパイルされた不変の js 関数とオブジェクトを共有できるかどうか疑問に思っていますか? そのため、新しいスレッドを開始するときに、それらを何度も再開する必要はありません。ありがとう!