問題タブ [dynamic-language-runtime]
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.
c# - DLRを使用してC#スニペットをロードして実行することは可能ですか?
DLRに関して私が見つけた資料の大部分は、IronPythonに関連しています。DLRを使用してC#を解析および実行できますか?もしそうなら、約30人のユーザーがいるWebサーバーでこれを試みることを妨げる頭上がありますか?
具体的には、ユーザーが最初にワークフローを開始するときに、ワークフローオブジェクトの構成をスクリプト化したいと思います。年間を通じて変化する条件に応じて、ワークフローはさまざまなステップで開始される可能性があるため、構成スクリプトを実行することは、変化を処理するための良い方法のように思われます。
c# - .NET 4.0の動的言語ランタイムの制限は何ですか?
動的メソッド呼び出しの引数として無名関数がサポートされていないことは知っています。.NET 4.0でのDLRの他のそのような制限は何ですか?
.net - スクリプト言語を DLR に切り替える主な利点は何ですか?
Antlr を使用して DSL を作成し、文法ファイルからレクサーとパーサーを生成しました。パーサーは、計算可能なさまざまなノード (関数ノードなど) を含む抽象構文ツリーを生成します。関数ノードのコードでは、バインドを処理します。つまり、関数のライブラリから一致する関数名とパラメーターの型をチェックします。関数のルックアップを最適化するために、ここにいくつかの単純なキャッシュがあります (2 つの int で A+B を呼び出すと、次に plus 演算子を使用するときに 2 つの int になる可能性が高くなります)。
最近、DLR について読んでいますが、このタイプのスクリプト言語の実装に対応するように設計されているようです。一見したところ、パーサーまたはレクサーを生成するようには見えませんが、実装の他の部分を支援しているようです。DLR の使用に切り替えることの主な利点は何だろうと考えていました。
c# - .Net 4.0でMEFでDLRを使用する方法は?
MEFチームから、MEFが.Net4.0でDLRプラグインをサポートするという約束がありました。それはすでに起こっていて、いくつかのIronPythonオブジェクトを[インポート]できますか?
はいの場合、トピックへのリンクが役立ちます。
.net - ECMAScript の .NET CLR/DLR 実装はありますか?
.NET CLR/DLRを対象とする ECMAScript の実際の(つまり、ベーパーウェアではない) 実装を知っている人はいますか? 理想的には Rhino for Java のようなものです。.NET Framework / Mono Framework で動作する Rhino の確実な移植は完璧です。
言及されたプロジェクトはほんの一握りしか見たことがありませんが、実際にスクリプトを実行できたプロジェクトは見たことがありません。これが私がすでに知っていることです:
MSScriptControl ActiveX コントロール: 私の知る限り、これは Microsoft の最後の実際の ECMAScript 準拠の実装 (JScript 5.7 を実行) でした。私は MSScriptControl と統合しましたが、COM 相互運用がこの質問に対する答えになるとは考えていません。x64 は、このオプションのキラーです。
JScript.NET : JScript.NET は、実際のスクリプトを正常に解析できなかったため、数えません。閉鎖に問題があるようです。
マネージ JScript : 私が望むもののように聞こえますが、水中で死んでいるように見えます。これは DLR の主要な実装例でしたが、その後 SilverLight と絡み合い、2007 年以降は優先順位が薄れているようです。これに関する信頼できる情報源が役立ちます。
MyJScript : DLR のチュートリアル実装として構築されています。これがどれほど完全な実装か知っている人はいますか?
Jint : .NET 用の JavaScript インタープリター。
現在のところ、カリー化または--をサポートしていません。try
catch
finally
RemObjects Script for .NET : 興味深い候補がまだ開発中です。それが実際にどうなるかについては、彼らのマーケティングに混乱していますが、最終的には適合するように思えます. 誰かがそれについてもっと知っていれば、それも役に立ちます。
V8 for .NET : 誰かが V8 を .NET に移植した場合、これは素晴らしいことです。私の知る限り、これについても大きな努力はありません。このリンクは、マネージ C++ ラッパーから呼び出すためのアイデアへのリンクです。
背景として、.NET 内から JavaScript を実行できるようにしたいと考えています。つまり、一連のスクリプトをコンテキストにロードし、そのコンテキストを呼び出して、実行結果を取得します。現在、面倒な COM 相互運用機能を介して MSScriptControl を使用するためにフープをジャンプしています。COM には一貫性がないため、デプロイと一貫した実行の確保が非常に難しくなっています。
かなり複雑な JavaScript テスト ハーネスを .NET 内から実行できるようにしたいと考えています。これは、ユーザー マクロや単純な小さなスクリプトを作成するためのものではありません。Rhino のような実際の JavaScript 環境が必要です。実装が (COM ではなく) CLR の上で実行されている場合、これは現在の問題のいくつかを解決するのに非常に役立ちます。
silverlight - DLR 以上の Iron Python は Silverlight で動作しますか?
DLR またはさらに優れた Iron Python は Silverlight で動作しますか?
ironruby - 実行中のDLR/IronPython / IronRubyスクリプトを停止することは可能ですか?
ユーザーが生成したIronRubyスクリプトを実行するアプリケーションがあり、各スレッドは独自のスレッドで実行されます。私が抱えている問題は、IronRubyスクリプトをスクリプトの任意のポイントで停止する必要がある特定のイベントが発生する可能性があることです。
スクリプトが実行されているスレッドを中止することでそれを行うことができますが、そのアプローチにより、アプリケーションにメモリリークが発生しました。何ヶ月にもわたる調査の結果、申請プロセスの自動再起動をスケジュールする以外に修正することができませんでした。その結果、私はThread.Abortの使用から離れることに熱心です。
スクリプトの外部からIronRubyスクリプトを停止する方法はありますか?
私が考えることができる他の唯一のアイデアは、各ユーザーのスクリプトを別々の行に分割し、各スクリプト行の後に新しい行を挿入して、スクリプトを停止する必要があるかどうかを確認することですが、構文エラーが発生する可能性があります。
.net - PowerShell 実行空間と DLR の比較
.NET 4.0 ベータ版が利用可能になり、.NET 動的言語ランタイムがより広く利用できるようになったことで、この種のトピックは「ホット」になると思います。
DLR と PowerShell の概念的な違いについて混乱しています。.NET アプリでスクリプト機能を提供したい場合は、DLR を使用する (したがって、IronPython や IronRuby、または DLR で使用できるその他の Iron* 言語でスクリプトを有効にする) か、PowerShell をホストすることができます。実行空間。
各方法の長所と短所は何ですか? どちらか一方を選択できるのはなぜですか? 動的言語自体として、また最上級の .NET 言語として、なぜ PowerShell は DLR もターゲットにしないのでしょうか?
c# - C# コード (Python ではない) を使用して静的クラス (または静的メソッド) を IronPython (または DLR) にインポートする方法は?
scope.SetVariable("数学", ?? typeof(System.Math) ??);
それともモジュールを作成する必要がありますか?
c# - DLR 戻り型
DLR の助けが必要です。IDynamicMetaObjectProvider と DynamicMetaObject を実装していますが、予期される戻り値の型を取得する際に問題が発生しています。メタオブジェクトで BindInvokeMember をオーバーライドしています。すべての引数の型を確認できますが、戻り値の型は確認できません。可能であれば、私がそれに到達する方法を知っている人はいますか?戻り値の型が動的であることは知っていますが、呼び出しているものが戻り値の型に依存している場合はどうでしょうか。消費者が期待している戻り値の型がわからない限り、DynamicMetaObject で実行するアクションはわかりません。
アップデート 2
あらゆる種類の作業を呼び出すため、実際のコードをここに貼り付けることはできません。サンプルの動的オブジェクト コードを以下に示します。
使っているところはこちら。
コンパイラが作成するコードは次のとおりです。