
2026/08/10 21:15
スクイーク 6.1
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Squeak 6.1「Vanessa」は、システム成立30周年に迫る主要な今後のアップデートであり、前のリリース以来開発された 1,700 以上のパッチと 9,000 のメソッド変更を統合しています。このバージョンは Vanessa Freudenberg (1972–2025) に献呈されており、クラス再構築のスピードアップが 30%、パッケージ検索の加速が 400%、メソッドの記号テキスト列挙のスピードアップが 20% と、大幅なパフォーマンス向上を提供します。主な新機能には、オブジェクト構造を navigating するためのツリーブラウザ(Monticello パッケージとの統合)や、「Objectland」(Squeak のワールド)といったレガシー機能を復活させるものが含まれており、アイコン的な Etoys レースカーや BlobMorph が特徴です。アップデートは Morphic GUI を刷新し、高 DPI サポート、改良されたテキストエディタ、強化されたメニューユーティリティを導入すると同時に、永続的な macOS 仮想マシン警告の修正も含みます。ツール面の重要な向上としては、新しいツリーブラウザ、「simulate」ボタンおよびバイトコードモードを備えた改良されたデバッガー、そして再帰的なプロセスに忠実なデバッグ機能が含まれます。カーネルアップデートでは、
Complex>>log という新機能や Regex の Unicode リテラルサポートといった新機能が加わるとともに、HTML 解析の安全性向上などコア言語の改善も行われています。また、このリリースでは廃止事項(例:MorphicDebugger サブクラスの削除)に対処し、デバッガー通知器および Linux/macOS 上の SqueakSSL HTTPS サーバーにおける特定のバグを含む既知の問題一覧も含んでいます。本文
Squeak 6.1「ヴァネッサ」リリースノート
Squeak が設立から30 周年を目前に控え、新しいバージョン Squeak 6.1 を公開します。今回のリリースの主なハイライトは以下の通りです。
- ツリーブラウザ: 改良された階層的モーフィ(morph)を採用し、クラスやカテゴリを直感的にナビゲートできるようになりました
- オブジェクトランド: 「Squeak のワールド」として知られるObjectland が復活します
- カーネルインフラストラクチャ: シミュレーション、巻き戻し、スケジューリングのプロセスおよびクラスのリシェイピングにおいて、多数の変更と修正が行われました
- ツールセット: コードの検査、デバッグ、プロファイル、バージョン管理を行うためのインターフェースに多様な改善が施されました
詳細な変更リストについては後述します。また、末尾に主要な非推奨(Major Deprecations)、既知の問題(Known Issues)、および**互換性に関する注釈(Compatibility Notes)**が含まれています。
注記: このリリースノートは Squeak をダウンロードして閲覧することをお勧めします。より良い体験のためです。
1. レリースノートについて
今回のリリースノートは、単なる技術的な変更ログではなく、Squeak の新機能や機構を探索するためのハンズオンガイドとしても機能しています。
- 開発の規模: 最後のリリースから 4 年が経ち、1,700 以上のパッチと9,000 以上のメソッド変更がマージされました
- ヴァネッサ・フローデンベルク(1972-2025)を偲びます:
/^(o.o)^\ /^(o.o)^\ /^(o.o)^\ /^(o.o)^\ /^(o.o)^\
2. 言語、ツール、および環境の詳細な改善
GUI フレームワーク
Morphic (ct.2218 / ct.97)
ツリーモーフィの大幅な刷新
- ナビゲーション: カラー、マウス操作、キーボードショートカットを改良
- フィルタ機能: 検索語句のハイライト表示、
キーによる単一列検索が可能化[TAB] - 検索モード: 現在の選択範囲、すべての表示可能なノード、またはツリー全体を検索するための設定可能モードを追加
- 再帰的検索:
で利用可能な「検索」/「再度検索」機能を導入[CMD]+[F]/[CMD]+[G] - ドラッグ&ドロップ: ホバー後 1 秒でノードが自動的に展開されるようにサポートを改良
- パフォーマンス: レイアウト、レンダリング、イベント処理における安定性向上
ワールド上で
- クラス参照やメソッドカテゴリなどを新しいウィジェットとして表示するドロップをサポート
- マウス操作のカスタマイズ(ダブルクリック時間、ドラッグしきい値)の新設定を追加
- ドッキングバーに「ワークスペースを検索」を容易にする機能を強化
- ヘルプメニューの再編成と装飾
テキストエディタ
- ホバー中にリンクがアンダーライン付きになり、クリックや選択が便利に
- 引用符のネスト対応(自動エスケープ/脱エスケープ)
Morphic API & メニュー構築
- ハロイベントからの除外設定、ブロック経由のバロントラクトテキスト指定が可能に
- 新しいユーティリティによるアイテムグループの追加やアクションターゲットの切り替え
- メニューの末尾行トリミングなど、微調整と安定性改善多数
MorphicExtras (ct.360)
- オブジェクトランド: 2003 年の有名な「Squeak のワールド」を再構築し、多彩な例を提供
- Etoys ラスクーア: クラシックな例を復活、新規例を追加
- BlobMorph: 18 年間無傷だった BlobMorph を再導入・更新
- ウェブカメラ: ミラーオプション追加、ダブルバッファリング拡張、UI 改善
- スコアプレイヤー: 楽器メニュー改良、ピアノ鍵盤の堅牢性向上
Etoys (ct.532)
- チュートリアル: 描画とスクリプト作成に関するチュートリアルを復元・見直し
- ゲーム: FreeCell に Undo ボタン追加、Tetris の状態表示改良
- MIDI: 入力モーフィの楽器メニュー改良、プレイヤーギャラリーの堅牢性向上
- 高 DPI サポート: アイコン、タイル、スクリプトエディタなどの改善
ST80 (mt.311)
- ワールドメニューに「閉じる」項目追加
- システムビューの高 DPI サポート改良
によるビューのスナップショット取得機能追加View>>imageForm- デバッグショートカット
追加[CMD]+[SHIFT]+[D]
CommandLine (eem.27)
- 「失敗時のイメージのスナップショット保存」設定の修復
- ダイアログ UI(ファイル、フォントなど)へのサポート拡大
プログラミング & ツール
Tools (Tools-mt.1366 / ct.137)
- 新しいツリーブラウザ: 階層的ペインでシステムカテゴリ・クラスを表示、Monticello パッケージを統合(5 つの新設定あり)
- ドラッグ&ドロップ: ブラウザ間のすべての意味的な組み合わせをサポート
- マルチ環境サポート: すべての種類のブラウザとメッセージセットに対応
- 機能追加: 階層ツリーにダブルクリック支持、クラス定義のアノテーションコメント表示、カスタムブラウザ登録の拡張
インスぺクタ (Inspector)
- カスタムインスぺクタフィールドへの拡張(メニュー項目貢献許可)
- メタ(シフト)メニューによるアクセサのブロー/デバッグ
で表現のカスタマイズ可能にInspectorField>>#printBlock:
デバッガ (Debugger)
- 条件検索: ネストされたメッセージ送信内で正確な条件検索コマンドを追加
- ホームコンテキスト: スタックリストメニューに「ホームを選択」オプション追加
- バイトコードモード: メソッドの単一 VM 指示を視覚化してステップ実行可能に
- シミュレートボタン: メタサーキュラーエバリュエータによるデバッグモードを追加
- ウィンドウメニュー「何を表示するか…」、またはコードペイン上の「ソース」ボタンからアクセス
Trunk & WorkSpace
導入(レポート形式・堅牢性向上)Welcomes AndreasSystemProfiler- ワークスペースで「ファイルからコンテンツをロード…」オプション追加
- 変更回復: クラス定義削除、再カテゴリ化などの解析を改良
ブラウザ用修正
- ショートカット不一致の修正、特異体の定義堅牢性向上
- パッケージペインブラウザの UI 更新とクラスサイド
欠落修正do-its - クラスリストブラウザでのソート一貫性確保
ToolBuilder (ct.176 / ct.370)
- ブロックサポート(
など)追加ToolBuilderSpec>>help:
への新しいショートカット機能追加(ファイル選択、進捗バー表示など)UIManager- Morphic/MVC 固有の UI グリッチ修正
SUnit (mt.153 / mt.95)
- テスト結果にタイムアウト表示、クラスの除外修復
- 失敗を再実行時のパスリセット機能強化
コア言語
Kernel (ct.1688 / ct.482)
- 数字:
や巨大な整数の三角関数など新機能・最適化多数Complex>>log - ブロッククローージャ: 非ローカル退出値サポート(
)BlockClosure>>valueWithExitValue - 保存変更チェック: 特定のビューにスコープ可能に
- プロセス&スケジューリング:
- 半解凍されたプロセスの反復終了改善
で VM クラッシュ防止Process>>destroy- リカursiveプロセス忠実なデバッグサポート
- Promises:
- プロミス結合ヘルパー(
,#all:
など)追加#race:
の振る舞い変更(詳細参照:互換性注釈)Promise>>value
- プロミス結合ヘルパー(
- メソッド・コンテキスト: SistaV1 バイトコードセット対応、64k インスタンス変数クラス作成可能
Collections (ct.1115)
- 便利な列挙・コピー機能の追加
- マグニチュードと辞書間の弱い型付け改善(算術適用可能に)
- バイナリ述語によるソート、プレフィックス/サフィックステストの新機能
Texts (ct.?? / ??)
- 属性追加機能 (
) の実装#addAttributeBack: - HTML パースの劇的改善(クリップボード・リッチテキストメール対応)
,<blockquote>
,<p>
などのタグ空白処理改善<div>
符号化サポートbase32
Chronology (ct.98)
- タイムゾーン構成クラスの再構築(DST 認識ゾーン定義可能に)
の ANSI 準拠復元DateAndTime>>offset:
Compiler (ct.535)
- プライベートメソッドのオーバーライド・拡張可能に
- 変数の影付け警告設定、未定義一時変数警告削除
グラフィックス & サウンド
Graphics (nice.562)
- HTML/CSS: パース改善、ディithering 追加、マルチモニターアクセサ
- 画像/GIF: 透過画素値復号、半透明インターレース PNG 読み込み、GIF リーダー非推奨化
- パフォーマンス: フォームフィルタリング・カラー構築の高速化
TrueType (tpr.99)
- 古いユニコードマッピングテーブルフォントとの互換性維持
Sound (ct.102)
- サウンドプレイヤー/レコーダーデバイスアクセサ追加
- AIFF ファイル読み込みサービス追加
- メモリーストリーム上の保存時冗長性の修正
ファイル & ネットワーク
Files (mt.223)
- キャッシュ: イメージ内への変更ファイルキャッシュ設定(Squeak 6.0 の機能を補完)
- パス展開: Linux/Unix で
パス展開サポート~ - 堅牢性: ディレクトリ存在テスト、ファイル作成時刻計算の改善
Network (nice.289)
- IPv6: 新しいネットワークサポート(デフォルト有効化)
- メール: EML ファイル表示、リッチテキスト/添付画像サポート
- SMTP: 新規コマンド(verify, quit)、CRLF インジェクション検出対応
WebClient (ul.138)
- OPTIONS リクエストの手動処理(CORS プリーフライト対応)
JSON パースァーのサンセットWebUtils
システムサービス
System (ct.1522)
- ガベージコレクション: エフェメロン導入、弱間接循環依存関係の GC 対応
- クリップボード: 拡張インターフェース有効化(OS 横断リッチテキスト貼り付け)
- 変更回復: クラス定義・メソッド削除の発見機能
システムナビゲーション & UI
- プライミティブやプラグマを含むカテゴリクエリの追加
- 高 DPI サポート拡張、スレッド化 VM への対応
- テーマカラー調整(Community Dark, Trim)
Regex (ct.93)
- Unicode 表現:
,\x41
,\u{1F388}
など新サポート\p{N} - 機能: キャプチャグループ、非キャプチャグループ、ルックアラウンド対応
- 左端最長一致オプションフラグ追加
3. バージョン管理 & パッケージ管理
Installer & Monticello
- Installer (ct.458): HTTPS スキームサポート(source.squeak.org など)
- Metacello コンパイル警告回避、インストール速度向上
- Monticello (ct.822):
- HTTPS リポジトリへの移行を有効化
の堅牢性向上(欠落する MCZ 拡張子自動追加)versionNamed:- 「(すべて) を現在の変更セットに追加」のクラス対応可能化
4. 主要な非推奨(Major Deprecations)
重要: 後方互換性を重視しつつ、以下の破壊的変更が行われています。詳細は「互換性注釈」を参照してください。
- デバッガ: プロジェクト固有のサブクラス (
,MorphicDebugger
) が廃止され、MVCDebugger
から直接継承可能に。Debugger - BrokenPromise: プロミスが拒否された際、元の例外を再信号(または汎用エラー)。61Deprecated パッケージ未インストール時は Error サブクラスとして扱われなくなる。
- Renamed Methods/Selectors:
→Promise>>error#errorValue
→ClassDescription>>[all]MethodsInCategory:#[all]SelectorsInCategory:
- 非推奨メソッド:
SequenceableCollection>>checkedAt:SequenceableCollection>>copyWithoutFirst
5. 既知の問題(Known Issues)
以下の問題について、回避策または今後の対応が必要です。
- デバッガ通知: バックグラウンドプロセスから発生する場合、「Proceed」ボタンが無効になる可能性があります。
- 回避策: 首先「Debug」をクリックし、次に「Proceed」をクリックしてください。
- 無限ループ: リカursiveプロセス忠実デバッグ時に、特定のステップで無限ループが起きる可能性があります。
- 対応: バグレポートを送信してください。
- 正規表現: ルックベハインド内の貪欲パターンが誤って処理されます。
- HTTPS サーバー (Linux/macOS): SqueakSSL を通じた HTTPS サーバーの実行は機能していません。
- ファイルディスクリプター枯渇 (Linux): 特定の状況でイメージがクラッシュする可能性があります。
- 回避策:
でファイルディスクリプターの数を増やしてください。ulimit -n
- 回避策:
- Wayland (Linux): テキストモーフィがクリック毎に焦点を失うことがあります。
- 対応: バグレポートに添付された情報をご利用ください。
バグ報告: 新しいバグを発見した場合は、http://bugs.squeak.org/ にご共有ください!
6. 互換性注釈(Compatibility Notes)
以下の振る舞いの変化を事前にご了承ください。
-
Promise>>value: 現在リセーバーを待機します(以前は nil を返しました)。
-
Matrix オペレーション:
など、サイズ不一致に対しては明確なエラーを信号します(以前は無視していました)。#with:do: -
Text ファーマット: 属性は最後の引数を上に表示します。
Text streamContents: [:stream | stream withAttributes: {TextColor blue. TextEmphasis bold} do: [stream nextPutAll: 'abc'. stream withAttribute: TextColor red do: [stream nextPutAll: 'def']]. ] 'hi {1}' asText addAttribute: TextColor red; format: {'name' asText addAttribute: TextColor green}. -
DateAndTime>>offset: ANSI 準拠のため、タイムゾーンを再解釈せず同等の時刻を返します。古い振る舞いは
または#asLocalAt:
で実現可能です。#utcOffset: -
Regex キャプチャグループ: 左から右への順序で一貫して保存されます(代替案で右から左でした)。
-
メニュー構築:
はヘルプトプル内のバックスラッシュを改行として解釈します。#addList: -
ヘルプシステム: ファイルベーストピックの
はディレクトリにも再帰的に適用されます(実装例:sortBlock
)。AbstractFileBasedHelpTopic>>defaultSortBlock
すべての貢献者に感謝いたします!