BlinkGTK v1.1.0-build6
BlinkGTK 1.1.0-build6 リリースノート
日付: 2026-07-29
Chromium: 150.0.7871.46 (stable)
状態: 開発版 (1.1.0-dev)。本配布物は検証用途を含みます。
このリリースでできるようになったこと
文字サイズを変えてもページが白くならない
文字サイズを大きく変えた直後に、ページが白紙のまま固定される問題を解消しました。
見開きの縦書き表示で特に起きやすく、これまでは文字サイズ変更を備えた読書アプリが
成立しませんでした。
大きなリフローの途中で描画の差分領域が空と計算され、白いタイルが有効なまま
固定されるのが原因でした。真因まで辿って修正し、意図的に不具合を注入して
再発を検出する回帰試験を組み込んであります (Issue #120)。
静止時に CPU を消費しない
何も操作していない間、CPU を常時 1 コア近く消費し続けていた問題を解消しました。
バッテリー駆動の端末や、キオスク端末のように電源を入れたまま置いておく機器でも
使えます (Issue #115)。
日本語の縦書きで段組みができる
段組み (column-count) と writing-mode: vertical-rl を組み合わせたとき、列の
境目にかかる行が隣の列に欠けて描画される問題を解消しました。縦書きの電子書籍や、
新聞・雑誌のような多段組みの版面が組めます。
既定では無効です。従来の描画を変えないため、起動時に明示して有効にします。
myapp --enable-blink-features=CJKVerticalColumnFragmentation現段階の実装は、列幅 600px・column-gap: 0・直交ルートの border/padding が 0 という
条件を前提としています。この範囲を外れる版面は従来どおりの描画になります
(Issue #110)。
権限の要求をアプリ側で決められる
Web ページからの位置情報・通知などの要求を、アプリが受け取って許可・拒否を返せる
ようになりました。既定は拒否です。シグナルを繋がなければ、すべての要求が自動的に
拒否されます。
キオスク端末や電子書籍リーダーのように「利用者に権限ダイアログを出したくない」
「特定の要求だけ通したい」という用途で、挙動を保証できます。
static gboolean on_permission(BlinkWebView *view,
BlinkPermissionRequest *req,
gpointer user_data) {
const char *kind = blink_permission_request_get_type_name(req);
if (g_strcmp0(kind, "notifications") == 0)
blink_permission_request_allow(req); /* 通知だけ許可 */
else
blink_permission_request_deny(req);
return TRUE; /* 処理したことを伝える */
}
g_signal_connect(view, "permission-request", G_CALLBACK(on_permission), NULL);User-Agent と Cookie を差し替えられる
blink_web_view_set_user_agent() で User-Agent を上書きし、
blink_web_view_set_cookie() で Cookie を仕込めます。特定のサービス向けの専用
クライアントを作る場合や、認証済みの状態で起動したい場合に使えます。
Python や JavaScript から書ける
GObject Introspection まわりを整備しました。列挙型 (LoadEvent / LoadError /
GpuMode / ContentPolicy) を GType として登録し、プロパティ変更の notify:: 通知と
uri-changed シグナルが実際のナビゲーションで発火するようにしています。
PyGObject と GJS から動作を確認済みです。
マウス操作が実用に耐えるようになった
ホイールスクロールの座標、スクロールバーのつまみのドラッグ、ページ遷移後の
クリックが正しく動くようになりました。これまでは画面中央以外がスクロールできない、
本を切り替えたあとクリックが効かず再起動が必要、といった状態でした
(Issue #112 / #114)。
アプリを好きな場所に置ける
blink_gtk_set_resources_path() が Chromium のすべてのリソースに効くように
なりました。従来はリソースパックだけが実行ファイルの隣を見ていたため、独自の
ディレクトリ構成を持つアプリが起動できませんでした。
100 行で組み込み方が分かる
同梱するサンプルを、https://google.com/ を表示するだけの blinkgtk_browser
(105 行) 1 本にしました。examples/ で make と打つだけでビルドできます。従来
同梱していた開発用ブラウザは、描画経路の切り替えなど開発時にしか使わない機能を
多く含み、組み込み方を知るための例としては大きすぎました。
なお メインループだけは GTK と書き方が違います。g_application_run() ではなく
blink_gtk_run_main_loop() を呼んでください (前者では画面が白いままになります)。
GTK4 そのものの使い方は https://docs.gtk.org/gtk4/ を参照してください。
動かすために必要なもの
Chromium 150.0.7871.46 (stable) をベースにしています。
パッケージは WebKitGTK と同じく 3 つに分かれています。アプリを 動かす だけなら
runtime、ビルド するなら devel も、Python や JavaScript から使う なら gir も
入れてください。
| 中身 | 必要になる場面 | |
|---|---|---|
| runtime | 共有ライブラリと Chromium ランタイム | 実行 |
| devel | ヘッダと blinkgtk-0.1.pc |
ビルド |
| gir | GObject Introspection typelib | Python / GJS |
リンクは必ず pkg-config --cflags --libs blinkgtk-0.1 を通してください。
-lblinkgtk だけを手で書くと、ビルドも起動も通るのにページが白いままになります
(Chromium の allocator shim が実行ファイルの直接依存として必要なためです)。
共有ライブラリの SONAME は libblinkgtk-0.1.so.0 に版数付けされています。
各リリースには第三者ライセンス表記 (THIRD_PARTY_NOTICES.html) と SHA256SUMS が
付きます。
切り分け用のスイッチ
上記の修正が原因で不都合が出た場合に、修正前の挙動へ戻すための環境変数です。
通常は設定不要です。
| 環境変数 | 戻る挙動 |
|---|---|
BLINKGTK_120_INVAL_FALLBACK=0 |
白紙固定の修正 (差分領域のフォールバック) を無効化 |
BLINKGTK_120_ACT_REDRAW=0 |
白紙固定の修正 (再描画の供給) を無効化 |
BLINKGTK_CAPTURE_DAMAGE_GATE=0 |
CPU 消費削減のうち、描画取得の間引きを無効化 |
BLINKGTK_PUMP_LEGACY=1 |
CPU 消費削減のうち、メインループの変更を無効化 |
BLINKGTK_PUMP_RESCUE=0 |
メインループの起床ハートビートを無効化 |
BLINKGTK_EGL_FRACTIONAL=1 |
実験中の分数スケーリングを有効化 (既定は整数、Issue #117) |
公開している環境変数の一覧は、同梱の api-reference/environment-variables-ja.md にあります。
ここに載っていないものは内部診断用で、予告なく変わります。
修正の一覧
上記に含まれない修正と、build ごとの内訳です。
build6
同梱ドキュメントの是正のみで、バイナリに変更はありません。
- ドキュメントに書かれていたビルドコマンド (
gcc ... -lblinkgtk) が、記載どおりに
実行すると失敗する状態でした。10 ファイル 16 箇所を是正しています。doc のビルド
コマンドを実際に実行して検証するゲートを追加しました。 - 「WebKitGTK と完全互換」という記述は誤りでした。関数名も対象オブジェクトも
異なります。実態に沿う表現に改めました。 - 対象バージョン表記が v0.9 系のまま残っていた箇所を更新しました。
- 開発用の内部番号 (CP 番号・Build 番号) を利用者向けの記述から除きました。
- ドキュメント間のリンクが Web で開けなかった問題を修正しました。
- 説明が先に長く続いて手順に辿り着けない構成を、先に手順・後に仕組みへ改めました。
build5
blink_gtk_set_resources_path()がリソースパックに効いていなかった問題を修正。
実行ファイルをリソースと別の場所に置くと
Check failed: data_pack->LoadFromPath(path)で起動できませんでした。- 同梱サンプルの実行ファイルに、ビルド環境の絶対パスが
rpathとして埋め込まれて
いた問題を修正。 - 同梱サンプルを
blinkgtk_browserに入れ替え。 - 設定 API のドキュメントから、同梱サンプルに存在しないコマンドラインオプションの
例を削除し、API での設定例に置き換え。
build4
build2 / build3 の同梱ドキュメントに、同梱バイナリに存在しない API を記載した箇所が
20 種ありました。記載どおりに書くとビルドできない状態で、settings-api /
c-api-reference / navigation-api / signals-api と各チュートリアルが該当します。
- 記載名が実装と食い違っていたものを実名に修正
(blink_web_view_set_enable_javascript→blink_web_view_set_javascript_enabled、
blink_web_view_set_auto_load_images→blink_web_view_set_images_enabled)。 - User-Agent / Cookie / 権限要求を実装。
- 実装のないドキュメント (INI 形式の設定ファイル API、アクセシビリティ API) は同梱から
取り下げ。実装後に改めて提供します。 - 配布物そのものを展開して doc と binary の整合を機械検証するゲートを追加し、公開の
前提条件としました。 - 保守されていない検査用プログラム (
api_check.c/api_tester.c) の同梱を終了。 examples/Makefileを pkg-config ベースに差し替え (従来のものは autotools が生成した
もので、生成環境の絶対パスを含み配布先では動きませんでした)。- tarball / RPM / DEB のすべてを build4 として再生成 (build3 は RPM のみの差し替え)。
build2 (v1.1 系の初回一般公開版、2026-07-21)
build1 は内部検証のみで一般公開していません。
- Chromium 150 (stable) へ移行。V8 スナップショットの整合、描画スモーク、実機での
縦組み描画 (EGL 経路を含む) を検証済み。 - 共有ライブラリの SONAME を
libblinkgtk-0.1.so.0に版数付け。 - runtime / devel / gir の 3 分割配布を開始。
- メインループに 100ms の起床ハートビートを追加し、滞留した処理の遅延を有界化
(アイドル時の負荷増は実測 0.5% 未満)。 - 公開している環境変数の一覧 (
environment-variables-{ja,en}.md) を同梱ドキュメントに
追加。 - 診断用の基盤 (フレーム検査・不具合注入など) は環境変数で無効を既定として同梱して
おり、通常の動作には影響しません。
互換性
- 利用側 (consumer) は PartitionAlloc allocator shim の直接リンクが必要です
(同梱の pkg-configblinkgtk-0.1.pcが処理します。Issue #90)。 - C API に互換性を壊す変更はありません。
- SONAME 版数付け (
libblinkgtk-0.1.so.0) により、consumer は再リンクで versioned な
依存を持ちます。devel パッケージの pkg-config 経由でビルドすれば自動的に整合します。
既知の制限
CJKVerticalColumnFragmentationは列幅 600px / column-gap 0 / 直交ルートの
border·padding 0 を前提とした段階の実装です (experimental、既定無効)。- tarball (FHS) 実行時は runtime の
ld.so.conf.d断片またはLD_LIBRARY_PATHで
private dir (/usr/lib64/blinkgtk-0.1/) を解決してください。 - アイドル時の CPU 消費 (Issue #115) は継続調査中です。