第8章 Red Hat Enterprise Linux 8 の Tcl/Tk の概要

8.1. Tcl/Tk の概要

Tool command language (Tcl) は、動的なプログラミング言語です。この言語のインタープリターと C ライブラリーは、tcl パッケージにより提供されます。

Tk (Tcl/Tk) とともに Tcl を使用すると、プラットフォーム間共通の GUI アプリケーションを作成できます。Tk は、tk パッケージから入手できます。

Tk は、以下のいずれかを参照します。

  • 複数言語のプログラミングツールキット
  • Tk C ライブラリーバインディングは、C、Ruby、Perl、Python などの複数言語で利用できます。
  • Tk コンソールのインスタンスを作成する wish インタープリター
  • 特定の Tcl インタープリターに新しいコマンドを多数追加する Tk の拡張

Tcl/Tk の詳細は、Tcl/Tk マニュアルまたは Tcl/Tk ドキュメントの Web ページ を参照してください。

8.2. Tcl/Tk 8.6 に関する注目すべき変更点

Tcl/Tk 8.5 と比較した Tcl/Tk 8.6 における主な変更点は以下の通りです。

  • オブジェクト指向のプログラミングサポート
  • スタックレス評価の実装
  • 強化された例外処理
  • Tcl で構築およびインストールしたサードパーティーパッケージのコレクション
  • 有効なマルチスレッド操作
  • SQL データベースを提供するスクリプトサポート
  • IPv6 ネットワーキングサポート
  • ビルドインの zlib 圧縮
  • リスト処理

    新しい 2 つのコマンド lmap および dict map が利用できます。これにより、Tcl コンテナーにおける変換の表現が可能になります。

  • スクリプトによって積み上げられたチャンネル

    新しい 2 つのコマンド chan push および chan pop が利用できるため、I/O チャンネルへ、または I/O からのチャンネルへの変換を追加または削除できます。

Tk の主な変更は、以下のようになります。

  • ビルドイン PNG イメージサポート
  • ビジーウィンドウ

    新しいコマンド tk busy が利用できます。これは、ウィンドウまたはウィジェットのユーザーとの対話を無効にし、ビジーカーソルが表示されます。

  • 新しいフォント選択ダイアログインターフェース
  • 角度のついたテキストサポート
  • キャンバスサポートでの移動

Tcl 8.5 から Tcl 8.6 への変更点の詳細は 「Changes in Tcl/Tk 8.6」 を参照してください。

8.3. Tcl/Tk 8.6 への移行

Red Hat Enterprise Linux 7 では Tcl/Tk 8.5 が使用されていました。Red Hat Enterprise Linux 8 では、Tcl/Tk version 8.6 は、Base OS リポジトリーで提供されます。

本セクションでは、以下を対象に、Tcl/Tk 8.6 への移行パスを説明します。

8.3.1. Tcl 拡張機能の開発者のための移行パス

Tcl 8.6 は、interp 構造のメンバーへの直接アクセスを制限します。たとえば、コードが interp→errorLine を読み込む場合は、Tcl_GetErrorLine(interp) 関数を使用するコードを書き直します。

コードを、Tcl 8.5 および Tcl 8.6 の両方と互換性を持たせるには、C または C++ アプリケーションのヘッダーファイル、または Tcl ライブラリーを含む拡張に、以下のコードスニペットを使用してください。

# include <tcl.h>
# if !defined(Tcl_GetErrorLine)
# define Tcl_GetErrorLine(interp) (interp→errorLine)
# endif

8.3.2. Tcl/Tk を使用してタスクのスクリプトを作成したユーザーのパスの移行

Tcl 8.6 では、ほとんどのスクリプトが、以前のバージョン Tcl と同じように動作します。ポータブルなコードを記載する場合は、Tk 8.6 でサポートされないコマンドを使用しないようにする必要があります。

  • tkIconList_Arrange
  • tkIconList_AutoScan
  • tkIconList_Btn1
  • tkIconList_Config
  • tkIconList_Create
  • tkIconList_CtrlBtn1
  • tkIconList_Curselection
  • tkIconList_DeleteAll
  • tkIconList_Double1
  • tkIconList_DrawSelection
  • tkIconList_FocusIn
  • tkIconList_FocusOut
  • tkIconList_Get
  • tkIconList_Goto
  • tkIconList_Index
  • tkIconList_Invoke
  • tkIconList_KeyPress
  • tkIconList_Leave1
  • tkIconList_LeftRight
  • tkIconList_Motion1
  • tkIconList_Reset
  • tkIconList_ReturnKey
  • tkIconList_See
  • tkIconList_Select
  • tkIconList_Selection
  • tkIconList_ShiftBtn1
  • tkIconList_UpDown

サポートされていないコマンドの一覧は、 /usr/share/tk8.6/unsupported.tcl ファイルで確認できます。