問題タブ [incremental-compiler]

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.

0 投票する
4 に答える
10404 参照

java - 標準のSunjavacはインクリメンタルコンパイルを実行できますか?

最近、Eclipseのjavaコンパイラを使い始めました。これは、標準のjavacよりも大幅に高速であるためです。インクリメンタルコンパイルを実行するので高速だと言われました。しかし、eclispseとsunの両方のコンパイラの「インクリメンタル機能」に関する信頼できるドキュメントが見つからないため、これについてはまだ少しわかりません。Sunのコンパイラは常にすべてのソースファイルをコンパイルし、Eclipseのコンパイラは変更されたファイルとそのような変更の影響を受けるファイルのみをコンパイルするというのは本当ですか?

編集:Eclipseの自動ビルド機能を使用していませんが、代わりに設定しています

私のアリのビルドのために。

0 投票する
1 に答える
1511 参照

c# - 誰かがJavaのようなac#インクリメンタルコンパイラをどのように作ることができますか?

数年前、誰かがc#がJavaのようなインクリメンタルコンパイルを許可しない理由を尋ねました。El Skeetは、Javaがアセンブリではなく.classファイルを出力することに関係していると述べました。

2011年のMonocompiler-as-a-serviceのようなグルーヴィーなものがリリースされたので、c#用のインクリメンタルコンパイラを作成するには何をする必要がありますか?

編集:これがどのように問題ではないかについて強打しているすべての人に、ここに私がリンクしたスレッドからのJon Skeetからの引用があります:

ビルドを待っていることに気付かないことを示唆していますか?15秒でも?ビルドに15秒かかり、1時間に20回ビルドしたい場合(これは確かにTDDで行います)、これは5分を無駄にしていることを意味します。5分間の休憩を取ることは1つのことです-それはリラックスするのに良い方法です-しかし15秒間20回保持されることは非常にイライラすることがあります。(たぶん飲み物を飲む以外に)何か役に立つことをするのに十分な長さではありませんが、イライラするのに十分な長さです。

2つの要因が、他の人が明らかに感じていない不快感のレベルに寄与していると思います。1)TDDは実際にはより速いターンアラウンドに依存しています。2)EclipseでJavaを使用する場合、このような遅延は非常にまれです。

0 投票する
1 に答える
592 参照

eclipse-plugin - Eclipse を使用して DSL を構築するときのインクリメンタル コンパイルへの最良のアプローチは何ですか?

Eclipse のドキュメントで示唆されているように、org.eclipse.core.resources.IncrementalProjectBuilder各ソース ファイルをコンパイルする があり、個別にorg.eclipse.ui.editors.text.TextEditor各ソース ファイルを編集できる もあります。各ソース ファイルは独自のコンパイル ユニットにコンパイルされますが、他の (既にコンパイルされた) ソース ファイルから型を参照できます。

これが重要な 2 つのタスクは次のとおりです。

  1. コンパイル (使用している型が実際に存在することを確認するため)
  2. オートコンプリート (タイプを調べて、そこに存在するプロパティ/メソッドを確認できるようにするため)

これを実現するために、コンパイルされたすべての型の表現をメモリに格納します (以下、「型ストア」と呼びます)。

私の質問は 2 つあります。

  1. 上記のタスク 1 はビルダーによって実行され、タスク 2 はエディターによって実行されます。両方がこの型ストアにアクセスできるようにするには、両方がアクセスできる静的ストアをどこかに作成する必要がありますか、または Eclipse はこの問題に対処するためのより適切な方法を提供しますか? 必要なときにビルダーとエディターをインスタンス化するのは、私ではなくEclipseであることに注意してください。

  2. Eclipse を開くときに、タイプ ストアを再作成できるようにするためだけに、プロジェクト全体を再構築する必要はありません。これまでの私の最善の解決策は、このデータをどこかに保持し、そこからストアを再作成することです (おそらくプロジェクトを開いたときに)。これは、他のインクリメンタル コンパイラが通常行う方法ですか? Java のアプローチは、クラス ファイルからこのデータを効率的に抽出する特別なパーサーを使用することだと思います。

どんな洞察も本当に高く評価されます。これは私の最初の DSL です。

0 投票する
3 に答える
1859 参照

parsing - インクリメンタルコンパイル設計の学習

一度にすべてのコンパイルジョブを実行するコンパイラの作成に関する本や記事がたくさんあります。そして、IDEで使用されるインクリメンタルコンパイラ/パーサーの設計についてはどうでしょうか。私は最初のクラスのコンパイラに精通していますが、2番目のクラスのコンパイラを使用したことはありません。

Eclipse Java開発ツールに関するいくつかの記事を読み込もうとしましたが、内部設計(つまり、内部での動作)ではなく、完全なインフラストラクチャ(つまり、API)の使用方法について説明しています。

私の目標は、自分のプログラミング言語用のインクリメンタルコンパイラを実装することです。どの本や記事をお勧めしますか?

0 投票する
1 に答える
460 参照

llvm - llvm: JIT コンテンツを段階的に構築するための戦略

言語バックエンドで関数と型を段階的にビルドする必要がありますが、(ユーザー入力の問題が原因で) 関数と型が正常にビルドされない場合にメイン モジュールとコンテキストを汚染しないようにします。

これに関して先程質問させていただきます。これについて私が見ることができる1つの戦略は、すべてを一時モジュールで構築し、LLVMContext成功した後にのみメインコンテキストに移行することですが、現在のAPIでそれが可能かどうかはわかりません. たとえば、LLVM 機能の孤立した島を表すと想定されているため、異なるコンテキスト間でそのコンテンツを移行する方法を知りませんが、すべてを .bc に保存して別の場所にロードする代替手段が常にあるのでしょうか?

これを達成するために他にどのような戦略を提案しますか?

0 投票する
2 に答える
604 参照

c++ - LLVMのコンパイルユニットの正しい抽象化は何ですか?

LLVMには、LLVMContextストレージの単位でllvm::Moduleあるがあり、新しいシンボル(関数とタイプ)が構築される場所にあります。

私の質問は; コンパイルユニットに使用する正しいllvm抽象化は何ですか?Module?_ または、これは実際にはより広い範囲を対象としています。つまり、共有ライブラリターゲット

コンパイルユニットは、オールオアナッシングの結果を満たさなければならないように思えます。エラーなしですべてのコンテンツをコンパイルするか、エラーがあり、CU内のシンボルを使用する前に、修正して再構築する必要があります。私の頭の中では、これはコンパイルユニットが表すべきものの定義です

モジュールがCUの正しい抽象化である場合、他の(正しくコンパイルされた)Moduleオブジェクトのシンボルを、ビルドしようとしている新しいモジュールに提示して、それらを見つけることができるようにするにはどうすればよいですか?宣言を追加する必要がありますか、それとも他の迅速な方法がありますか?

の関連する行へのポイントclangは非常に役立ちます

0 投票する
1 に答える
1038 参照

scala - ワイルドカードのインポートは、インクリメンタルコンパイルに関してScalaで悪いですか?

Scalaでは、インクリメンタルコンパイラ(sbt、Eclipseのsbt、IntelliJ)の有効性と速度の観点から、ワイルドカードインポートを使用するのは悪いことですか?これらのインクリメンタルコンパイラが変更の場合に何を再コンパイルするかを決定する方法に悪影響を及ぼしますか?

たとえば、新しいクラスの場合、クラスをXインポートするだけで、パッケージから(ではなく)インポートする必要がある場合、これを作成するとペナルティが発生しますか?ABCpack

これの代わりに?

に依存しないと仮定するAと、変更時に、より具体的なインポートではなく、ワイルドカードインポートを使用して再コンパイルされますか、それとも、依存関係追跡システムは、ワイルドカードインポートにもかかわらず使用されないことを理解するのに十分スマートですか?BCXCCX

0 投票する
1 に答える
262 参照

scala - コンパイルを高速化するには...持っている特性が少なくなりますか?

編集
複雑なことに、ルートファイルの変更が群れのスタンピング効果、つまりコントローラーと依存関係の再コンパイルをトリガーする可能性があるという問題 (Play 2.1 スナップショットで取り組んでいる) があるようです。それが解決され、Scala 2.10 + SBT 0.12.1 のパフォーマンス強化が統合されると、特性ベースの DAO リポジトリでどれだけ自分を撃っているのかがより明確になります...

オリジナル
私は英語を話す人で、多くの有能な人がいますが、心配する必要はありません。

次に、コントローラーで、DAO コンポーネントを mixin します。

上記のコントローラーに変更を加えると、DAOプロバイダーに依存するすべてのソースの再コンパイルがトリガーされるようです。私の場合、これは一連のコントローラーです。正味の影響として、アプリケーションの 3/4 近くが再コンパイルされ、煩わしいことがよくあります。

現在、SBT 0.12.1 はコンパイル速度の点で改善されていますが、再コンパイルの点では、私の DAO リポジトリの実装は明らかに問題を解決していません。

それで、私の質問は、この場合、特性を廃棄して DaoRepo オブジェクトをコントローラーに直接公開するだけでよいのでしょうか? Player コントローラーは次のようになります。

変更された Player コントローラーに変更を加えても、アプリケーションの 3/4 の再コンパイルがトリガーされないという仮定は正しいですか? DaoRepo オブジェクトを直接使用してテストすることは不可能であることはわかっていますが、それを待っていてもあまり生産的ではありません。

フィードバックをお寄せいただきありがとうございます。

0 投票する
1 に答える
276 参照

php - 100 万リンクの実行可能な php スクリプトを含める

私はフロントエンド開発者 (html、css、Wordpress) で、.js と .php に手を出し始めています。

www.milliondollarhomepage.com に似たページを作成したい

これらの百万ピクセルのすべてが一連のリンクを指すようにします。

HTML

---まで---->

CSS

これは長すぎです。notepad ++でクラッシュします。

次のような .php インクルード スクリプトを作成するにはどうすればよいですか。

そして、そのファイルは次のようになります

私のphpはまだ十分ではありません。私は自分自身をよく説明したことを願っています。ありがとう。アーチー。

0 投票する
1 に答える
448 参照

scala - SBT プラグイン: インクリメンタル再コンパイルによって出力されたファイルを一覧表示する方法

Scala コンパイラの最後の実行によって生成されたクラス ファイルのリストを必要とする SBT 用のプラグインを作成しています。

このクラス ファイルのリストは、バイトコード変換を実行するプログラムに渡されます。この変換プロセスは遅くなる可能性があるため、出力ディレクトリ内のすべてのクラス ファイルではなく、Scala コンパイラの最後の実行によって書き込まれたクラス ファイル (つまり、そこで変更されたもの) のみが必要です。

compileタスクによって最後に生成されたファイルのリストを取得するにはどうすればよいですか?