QBS 2.0 コンパイル システムの新バージョンが登場

QbS

Qbs は、コミュニティ主導の言語に依存しないビルド自動化システムです。 高速で、QML に基づいた学習しやすい言語を提供します。

ソフトウェア開発プロセスを管理するための、無料かつオープンソースのクロスプラットフォームソフトウェアであるQbs 2.0のリリースが先日発表されました。これは、主にC/C++をはじめとする様々なプログラミング言語で記述された、大規模かつ複雑なプロジェクトをサポートするように設計されています。

新バージョン2.0は、そのバージョン番号自体に意味があり、 Qt 6で廃止されたQtScriptに代わる新しいJavaScriptバックエンドの実装と関連付けられています。

Qbsをご存知ない方のために説明すると、QbsはQML言語の簡略版を使用してプロジェクトのビルドスクリプトを定義します。これにより、外部モジュールを接続したり、JavaScript関数を使用したり、任意のビルドルールを作成したりできる、かなり柔軟なビルドルールが可能になります。

Qbsのユニークな点は、内部ビルドのメカニズムを持たないことで、単一のソースツリーから複数のビルドを作成できることを保証している点です。これには、単一のコマンド呼び出しによるビルドや、並列ビルドも含まれます。

これは重要な機能であり、ビルドディレクトリが削除されてもソースファイルが影響を受けず、出力成果物がソースディレクトリに書き込まれないことを保証します。Qbs自体はあらゆるプロジェクトのアセンブリを整理するように設計されていますが、QbsをビルドするにはQtが依存関係として必要です。

Qbs で使用されるスクリプト言語は、IDE によるビルド スクリプトの生成と解析を自動化するように調整されています。 さらに、Qbs は makefile を生成せず、make ユーティリティのような仲介者なしで、コンパイラとリンカーのリリースを制御し、すべての依存関係の詳細なグラフに基づいてビルド プロセスを最適化します。

プロジェクト内の構造と依存関係に関する初期データの存在により、複数のスレッドで操作の実行を効果的に並列化できます。 多数のファイルとサブディレクトリで構成される大規模なプロジェクトの場合、Qbs を使用した再構築のパフォーマンスは make よりも数倍優れている場合があります。再構築はほぼ瞬時に行われ、開発者が待機する時間を無駄にしません。

QBS 2.0の主な新機能

冒頭で述べたように、今回のQBS 2.0のリリースは、Qt 6で廃止されたQtScriptに代わる新しいJavaScriptエンジンが搭載されている点で注目に値します。QtScriptはJavaScriptCoreへの複雑なバインディングのため、単独でメンテナンスを続けることは非現実的だと考えられたからです。

複雑な依存関係を持つ QtScript を維持するという見通しは、特に魅力的ではありませんでした。 ただし、どちらの候補もプロパティ アクセスをインターセプトする API を提供していませんでした。これは、開発者がパフォーマンス上の理由から絶対に必要だと言っています。

ユーザーの観点からは、顕著な変化はないはずです。 特に、パフォーマンスはほぼ同じようです。 ただし、QtScript は、必要のないコンテキストで未定義の値を受け入れることにかなり寛容だったため、新しい実装によってプロジェクトのバグが明らかになる可能性があります。

このエンジンはES2019仕様に準拠しており、既存のエンジンと比べて大幅に優れたパフォーマンスを発揮します(XSは35%、DukTapeは2倍以上、JerryScriptは3倍、MuJSは7倍)。ビルドスクリプト開発の観点から見ると、新しいエンジンへの移行によって目立った変更が生じることはありません。

パフォーマンスもほぼ変わりません。違いとしては、新しいエンジンではnull値の使用に関する要件が厳しくなっており、QtScriptを使用していた時には気づかなかった既存プロジェクトの問題が明らかになる可能性があります。

さらに、qmakeプロジェクトファイルが削除されたことで、開発者のメンテナンス作業が軽減されたことも言及されている。

最後に、バージョン 2.1 ではコードが書き直され、開発者はいくつかの新機能と一般的なパフォーマンスの向上を想定していることが言及されています。

さらに詳しく知りたい場合は、以下のリンクから詳細をご確認いただけます。


Googleで優先ソースとして追加する