QtWebKit 2.3β1

Qt の WebKit モジュール(QtWebKit)には Qt 自身のバージョンとは個別のバージョン番号があることをご存じですか。例えば、Qt 4.8 に同梱されている QtWebKit は 2.2 ですし、Qt 5.0 では QtWebKit 3.0 になります。

Qt Project では Qt の新機能の開発は Qt5 に対して行われていて、Qt4 はメンテナンスモードになっています。QtWebKit も Qt4 向けの 2.x 系は公式にはメンテナンスモードなのですが、非公式のプロジェクトとして Qt5 の QtWebKit 3.0 同等の機能を Qt4 で実現する QtWebKit 2.3 が開発されています。

その QtWebKit 2.3 が β1 となりました。QtWebKit 2.3 では QtWebKit 3.0 同様に多くのバグフィックスと WebGL, CSS Animation, CSS Shader 等の新機能の追加が行われています。

詳しくは以下の記事を参照してください。

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” の続きを読む

セキュリティアドバイザリー: QSslSocket で間違ったエラーが返る可能性

Qt4 の QSslSocket にセキュリティアドバイザリーがアナウンスされています。

openssl の 0.9.8 と 1.0.0 にバイナリ互換性がないため、ビルド時とは異なるバージョンの openssl を実行時に用いた場合、証明書の認証に失敗した場合に間違ったエラーを返す可能性があります。

対策としてはまもなくリリースされる 4.8.5 や 4.7.6、4.6.5 の利用や、パッチ を適用してください。詳細は上記のアナウンスを参照してください。

なお、Qt 5.0.0 には上記のパッチが含まれています。

Qt を Web ブラウザで動かす

Google の Native Client 上で Qt を動かす試みは比較的前から有る話題でしたのでご存じの方もいらっしゃると思いますが、最近、それとは別のアプローチで Qt を Web ブラウザで動かしている例がありました。

詳しいことは以下の記事とそこからリンクされているそれ以前の記事を参照してください。

それは Emscripten というプロジェクトを用いて実現されています。Emscripten は LLVM をベースにして、C/C++(や LLVM のフロントエンドがサポートする言語) を JavaScript へコンパイル(コンバート?)することが出来ます。上記の記事では Emscripten を使って、Qt を JavaScript にコンパイルしてブラウザ上で動かしています。画像を見ると Firefox や Chromium で動いているところが確認できます。実際に動かしてみたい方は記事中にデモへのリンクがあるのでそちらをたどってみてください。QtCore と QtGui とアプリをまとめて JavaScript にするため、ファイルサイズは数MB以上と大きくなり、実際に動き出すまでの時間はかかりますが、ランタイムやプラグインのインストール無しに Qt アプリが動いている様子はなかなか面白いものです。さすがに、レスポンスが良いとは言えませんが。

動かしている Qt のバージョンについての詳しい記述はありませんが、QWS で動かしていることから Qt4 系だということは分かります。やり方によっては QtWebKit や QtScript 上で Qt を動かすような事も出来るかもしれません。

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 4.6.5 & 4.7.6 RC

ひっそりと Qt 4.6.5 と 4.7.6 のリリース候補版(RC)が出ています。

重大なセキュリティ問題の修正と著作権表記の変更が行われています。

4.6.5:
  • SSL 圧縮をデフォルトでオフに
  • openssl のバージョン間でのバイナリ互換性の問題を修正
  • 著作権表記を Nokia から Digia へ変更
4.7.6:
  • SSL 圧縮をデフォルトでオフに
  • リダイレクト時のルールを若干厳密に
  • openssl のバージョン間でのバイナリ互換性の問題を修正
  • 著作権表記を Nokia から Digia へ変更

4.6, 4.7 を使用している人は次期に正式リリースされると思いますので、該当するバグが影響しないか確認してください。