Ring 1.16 の改訂履歴¶
Ring 1.16 (2021年10月23日) の新機能と変更点です。
新機能と変更リスト¶
Ring 1.16 の新機能!
軽量版の GUILib
UTF-8 形式のファイル名 (Microsoft Windows)
複数行に渡るメソッドの多重呼び出し
Code Runner 拡張機能の Ring サポート
ゼロと文字列
インストール処理用スクリプトの改善
取扱説明書の改善
MDI ウィンドウのサンプル
そのほかの改善
軽量版の GUILib¶
RingQt アプリケーションの大半は QtCore, QtGui & QtWidget モジュールだけを使用しています。
このようなアプリケーションでは
load "guilib.ring"
の代わりに、以下を使えます。
load "lightguilib.ring"
また、 Ring ノートパッドの配布メニューに新規オプション「軽量版 RingQt アプリケーションの配布」を追加しました。
このオプションで軽量版の GUILib アプリケーションを配布します。
例えば、このオプションを指定してライフゲームを配布するとします: target/windows フォルダ

容量 : 35 MB (無圧縮)
容量 : 13 MB (zip 形式)
容量 : 9 MB (exe) 7Zip で圧縮
つまり、インストール用のプログラムを組み込んだ GUI プログラムでも 10 MB 以下の容量で配布可能になります。
ちなみに
これより少ない容量 (1MB ) にする必要がある場合は LibUI などのライブラリへ変更してください。
UTF-8 形式のファイル名 (Microsoft Windows)¶
Ring 1.16 より Load コマンドは UTF-8 形式のファイル名に対応に対応しました。
例えば、アラビア文字、漢字や平仮名・片仮名などでファイル名を記述可能です。
以下の関数でも UTF-8 形式のファイル名に対応しています。
read()
write()
fopen()
複数行に渡るメソッドの多重呼び出し¶
Ring 1.16 では改行直後にメソッドの先頭へドット演算子を付けると続けて別のメソッドを呼び出せる機能をコンパイラへ追加しました。
用例:
myobj = new Start
myobj.one()
.two()
.three()
.go()
class start
func one
? "One"
return new one
class one
func two
? "Two"
return new two
class two
func three
? "Three"
return new three
class three
func go
? "Go!"
実行結果:
One
Two
Three
Go!
Code Runner 拡張機能の Ring サポート¶
Microsoft Visual Studio Code をお使いの皆様へ朗報です!
Code Runner 拡張機能にプログラミング言語 Ring のサポートが加わりました。

Code Runner のインストール後、
以下のファイルの修正を推奨します :
"C:\Users\{ユーザ名}\.vscode\extensions\formulahendry.code-runner-0.11.6\package.json"
プロパティ code-runner.fileDirectoryAsCwd
を True
へ設定します。
この設定では Ctrl+Alt+N で起動する場合にファイルの存在するディレクトリを Code Runner で移動可能にします。
"code-runner.fileDirectoryAsCwd": {
"type": "boolean",
"default": true,
"description": "ファイルのあるディレクトリを作業用ディレクトリの処理で使います。",
"scope": "resource"
},
ちなみに
Microsoft Visual Studio Code (VSCode) での Ring のサポートについては ring/tools/editors/vscode フォルダをご確認ください。

ゼロと文字列¶
Ring 1.0 以降、数値と文字列との間で暗黙的な変換を言語で行います。
これは画面出力など数値と文字列を併用する状況で有用です。
x = 10 # 数値
? "x = " + x # x は数値から文字列へ変換
また、算術処理でも使えます。
x = "10" # 文字列
? 5 + x # x は文字列から数値へ変換
質問: x の内容が数値でなければどうなりますか?
回答: 変換後の結果はゼロになります。
x = "Test" # 文字列 - x の内容は数値ではありません
? 5 + x # 5 の表示 - x は文字列から数値へ変換 (ゼロ)
このほかに "=" や "!=" などの演算子でも同じ変換処理を行います。
Ring 1.16 以降、ゼロとナニかを比較するときはご用心を。
用例:
x = "Test"
? 0 = x # 結果は FALSE
? 0 != x # 結果は TRUE
これは空リストに存在する値と文字列を比較する場合に有用です。
aList = list(10) # 10 項目 - アイテムごとの内容はゼロ
? aList[1] + 5 # 5 の表示
? aList[1] = "Test" # False
? aList[1] = 0 # True
その他の値 (ゼロ以外) は通常の変換規則に従います。
x = "5"
? 5 = x # True
? 6 != x # True
インストール処理用スクリプトの改善¶
Ring 1.16 において Linux と macOS のインストール用スクリプトを改善しました。
install.sh - 既存のシンボリックリンクを強制上書き
install.sh - quarantine フラグの削除
uninstall.sh - /usr/local のシンボリックリンクを削除
取扱説明書の改善¶
取扱説明書全体の校正と改善をしました。
MDI ウィンドウのサンプル¶
以下のフォルダへサンプルを追加
samples/UsingQt/MDIWindows/mdi_windows.ring

そのほかの改善¶
サンプル: samples/AQuickStart/GUILib/gui1.ring - コードの改善
フォームデザイナー - ボタンテキストからボタンイベントを設定 (空の場合)
フォームデザイナー - 位置に沿ったコントロールの順列 (作成順ではない)
フォームデザイナー - ファイルシステム - ファイル名の文字コード
フォームデザイナー - プロパティのウィンドウ - プロパティ名の列 - 配色の改善
StdLib - IsPrime() 関数 - コードの改善
RingQt - QListWidget クラス - AddItem() メソッド - 数値から文字列への変換
RingQt - Qt 関連の定数を多数定義
Ring2EXE - 使用方法の表示
Ring2EXE - ファイルのコピー時においてフォルダの作成に対応
Ring VM - ring_vm_error() - コードの改善
Ring コンパイラ - ソースコードファイルの存在時に使用できないオプションを非表示