6

Dartは独自のDartVMで実行されますが、最新の最適化されたJavaScriptにコンパイルできます。しかし、それはどのように機能しますか?そのプロセスを説明するオンラインの記事や論文はありますか?

それが要素と要素の簡単で直接的なマッチングであり、開発、処理に時間がかかるだけなのか、それともJavaScriptにコンパイルできなかったDartの要素/側面があるのか​​疑問に思います。

http://www.dartlang.org

編集:あなたの2つの答えのためのthx。重要なのは、私の同僚にdartについて話し、dartをJavaScriptにコンパイルできるということです。彼はそれをJavaScriptにコンパイルできることを認めましたが、それはmumbojumbaコードになり、単純なものに対してのみ機能します。最後に彼は言った:'''わかりました、私を説明してください。このコンパイルは重要なコードでどのように機能しますか?」

だから私は尋ねています。私は彼をリンクできるいくつかの資料がオンラインにあることを望んでいました。

4

3 に答える 3

6

Dart Editorは、dart2jsを使用してDartコードをJavaScriptにコンパイルします。

質問の2番目の部分については、dart:ioライブラリはサーバー/コマンドライン専用であるため、dart2jsでコンパイルすることはできません。

「dart2jsをどのように実行するか」ではなく、「エンジニアはどのようにdart2jsコンパイラを設計および実装したか」という質問をされていると思います。

dart2jsの発表に関するブログ投稿は次のとおりです。http://news.dartlang.org/2012/05/new-dart-to-javascript-compiler-ready.html

エンジニアの1人であるKasperLundは、「技術的に興味がある人のために、新しいコンパイラはSSA形式(静的単一代入)の内部表現を使用し、コンパイラは完全にDartで実装されていると言えます」と付け加えています。

ソースコードはhttp://code.google.com/p/dart/source/browse/#svn%2Fbranches%2Fbleeding_edge%2Fdart%2Flib%2Fcompiler%2Fimplementationにあります

于 2012-05-12T13:22:14.793 に答える
1

そのプロセスを説明するオンラインの記事や論文はありますか?

フロントエンドは、クラシックな手巻きレクサーと再帰下降パーサーです。バックエンドは、一連の型推論を行うことだと思います(Dartの型アノテーションは緩すぎて、信頼できる静的型分析を実行できず、ランタイムセマンティクスでは型アノテーションを真剣に受け止められないため)。「コンクリート型推論」に関する論文を探すと、探している文献がいくつか見つかると思います。また、SSAフォームへのコンパイル(およびそのフォームからコード生成を実行すること)に関する参照が役立つはずです。

于 2012-05-12T21:32:37.243 に答える
1

Kasperは、中間表現と実装された最適化について説明します。https://www.youtube.com/watch?v=GwBb_nqQLuc

于 2013-11-09T19:37:14.883 に答える