QML エンジンの内部構造(バインディングの詳細)

先月作成した「Qt Quick 2 のスピード」という記事ですが、こちらの予想以上に読んでいただいているようです。その記事では紹介していませんでしたが、QML エンジンの内部構造については KDAB が “QML Engine Internals” というシリーズの記事を作成しています。興味の有る人は是非そちらも読んでみてください。

今回はその中の “QML Engine Internals, Part 3: Binding Types” を基に 「Qt Quick 2 のスピード」の補足をしてみようと思います。

“QML エンジンの内部構造(バインディングの詳細)” の続きを読む

Windows Runtime 向け Qt5 のポーティングがスタート

Windows Runtime(WinRT) とは Windows 8 のモダン UI のベースとなるプラットフォームです。今までは WinRT への Qt のポーティングは調査中と言うことでしたが、その開始が Digia の Qt blog で宣言されました。

まずは QPainter(QtWidgets) を動かすところからはじめて、ANGLE のポーティングによる OpenGL および QtQuick への対応、また、Qt Creator のプラグインなどを計画しているそうです。コメントによると QtWidgets は既に動いているようです。

詳しいことは Wiki の記述をチェックしてみてください。

こうなると気になってくるのが Windows Phone 8(Windows Phone Runtime)への対応でしょうか。Window Runtime と Windows Phone Runtime の API は共通の部分もあるものの、全く同じものではありませんので、これをそのまま用いることは出来ないかもしれませんが、これをベースに Windows Phone 8 で Qt5 を動かそう としている人もいるようです。

なお、ポーティングが始まったとはいえまだまだリサーチプロジェクトの段階で、今年の後半に予定されている Qt 5.2 である程度の形になることを目標にしているそうです。

Qt 5.0.1 リリース

Qt 5.0.1 がリリース されました。基本的には 5.0.0 のバグ修正版になりますが、それ以外にも以下の違いがあります。

  1. QtMultimedia モジュールに対するバイナリ互換性の変更
  2. MinGW 版バイナリパッケージの追加

Qt では本来は同じメジャーバージョン内ではバイナリ互換性を維持することになっていますが、QtMultimedia モジュールで見つかったミス(インターフェースとなる基底クラスのデストラクタが virtual ではない)のため、メモリリークが発生することから今回は例外としてバイナリ互換性を破壊する修正を取り込んでいます。QAudioSystemFactoryInterface や QMediaServiceProviderFactoryInterface を継承したコードを 5.0.0 で書いていた人は 5.0.1 で再コンパイルしてください。

また、MinGW 用バイナリが用意されました。最新の MinGW が必要となったことから、4.7 プレリリース版を同梱しているため 800MB を超える巨大なパッケージとなってしまいましたが……。

今回から変更履歴が各モジュールごとに分割されています。なお、5.0.0 のパッケージにあったメンテナンスツールでのアップデートは出来ませんので、アップデートには 5.0.0 のアンインストールと 5.0.1 のインストールが必要になります。

Qt Quick 2 のスピード

Qt5 の目玉である Qt Quick 2 は OpenGL や QML Scene Graph、V8 JavaScript エンジンの採用でパフォーマンスを Qt Quick 1 から大幅に向上させています。とは言うものの、バグや Mesa のようなソフトウェア 3D エンジンの利用などで Qt Quick 1 よりも遅くなることもあります。

は Qt Quick 2 でアプリが遅くなったことに関する質問から始まったやりとりですが、その中で Qt5 では上記以外にどのようなテクニックを使って Qt Quick のパフォーマンスの改善を行っているかの説明があります。興味深い内容ですので、要約してみましょう。

“Qt Quick 2 のスピード” の続きを読む

セキュリティアドバイザリー: トルコの不正中間証明書への対策

トルコの認証局 Türktrust が誤って不正な中間 CA 証明書を発行していた問題について、セキュリティアドバイザリーがアナウンスされています。

5.0.0 を含むすべてのバージョンの Qt に影響します。この問題では該当する証明書を元になりすましなどの攻撃が行われる可能性があります。

対策としてはまもなくリリース予定の 5.0.1 や 4.8.5 を利用するか、パッチ を適用してください。なお、パッチにはテスト用のファイルも含まれているため、リポジトリではなくリリースされているアーカイブのソースに適用する場合エラーが発生すると思いますが、src/network/ssl/qsslcertificate.cpp にパッチが適用されていれば問題有りません。

“セキュリティアドバイザリー: トルコの不正中間証明書への対策” の続きを読む

Qt5 の Input Method

先日の勉強会 では話題にするのをすっかり忘れていましたが、Qt5 では Input Method も大きく変更されています。思ったよりも調査に時間がかかったため遅くなってしまいましたが、簡単な説明資料を作成しておきました。不明点など有りましたら質問してください。

基本的には以下の目的を満たすように設計し直されています。

  • QtGui と QtWidgets の分離に合わせて、QWidget 依存の削除
  • アプリとの連携機能の強化

とはいえ、組み込み等で Input Method を作成していた人や細かな制御を行っていたような一部の人を除けば、(特にデスクトップ系では) API の変更が直接影響するケースは少ないと思います。(間接的には QPA への移行などによるコード変更によって、挙動に問題が生じていないかは気をつけた方がいいかもしれません。)

“Qt5 の Input Method” の続きを読む

Qt 5 のサポートアーキテクチャの今後

Qt5 の QAtomicIntQAtomicPointer では Qt4 とのソース互換性が無いことを受けて、新しい QAtomic 系クラスに対応していないアーキテクチャへのサポートの将来的な停止が Qt Core モジュールのメンテナである Thiago Macieira から提案されました。

現在その対象となっているのは以下のアーキテクチャです。

  • Integrity
  • VxWorks
  • Alpha
  • Blackfin
  • POWER and PowerPC
  • S/390
  • SH-4a
  • SPARC

メールでは 5.1 で利用停止を推奨し、5.2 で古いコードの削除が提案されています。もっとも、削除した場合でも C++11 の std::atomic や gcc の機能を使った実装があるため、それらのアーキテクチャでは全く動かないということにはならないようです。

Qt5 の QtWebKit の SQLite 依存について

WebKit は以前から(Qt に関係無く)、SQLite に依存していたのですが、Qt 5 でその依存性の解決方法を変更したとのことです。QtWebKit 単体でクロスコンパイルや Windows でビルドする場合に影響があるようなので、注意してください。

[Development] heads-up: QtWebKit’s SQLite dependency

新しい方法では以下の順番で検索するそうです。

  1. pkg-config を使って SQLite を検索。ただし、Mac では標準の SQLite を使う。
  2. Qt5 のソースツリー内の QtWebKit をビルドする場合、qtbase/src/3rdparty/sqlite にある SQLite を使う。
  3. SQLITE3SRCDIR 環境変数が指し示す SQLite を使う。

Visual Studio Add-In 1.2.0 for Qt 5 リリース

Qt 5.0.0 のリリース にあわせて、Qt5 に対応した Visual Stuido Add-In がリリース されています。

(Express 以外の) Visual Studio 2008, 2010, 2012 に対応しています。

なお、Qt4 には対応していませんので、Qt4 メインの人は引き続き VS Add-In 1.1.x を使用してください。試せる環境がないので分かりませんが、おそらく共存は出来ないと思います。

Qt 5.0.0 リリース

Qt 5.0.0 がリリース されました。

OpenGL の活用を中心にいろいろなところが変化した Qt 5 ですが、リリースの携帯も変更になっています。今回のリリースではバイナリパッケージが SDK 形式になっていて、Qt 5.0.0 のバイナリに加えて(Qt 5.0.0 でビルドされた)Qt Creator 2.6.1 も同梱されています。おそらく今後のアップデートは以前の Nokia SDK のようになると思われます。Qt 4.8 向けの環境もあるといいのですが。

Qt Project では既に 5.0.1 と 5.1 に向けて動き始めています。5.0.1 は一月の中旬、5.1 は四月末か五月の始め辺りが目処でしょうか。バグなどを見つけたら フィードバック しましょう。

“Qt 5.0.0 リリース” の続きを読む