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 フォルダ

lightguilib
  • 容量 : 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 のサポートが加わりました。

coderunner

Code Runner のインストール後、

以下のファイルの修正を推奨します :

"C:\Users\{ユーザ名}\.vscode\extensions\formulahendry.code-runner-0.11.6\package.json"

プロパティ code-runner.fileDirectoryAsCwdTrue へ設定します。

この設定では 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 フォルダをご確認ください。

tetrisvscode

ゼロと文字列

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

mdiwindowssample

そのほかの改善

  • サンプル: samples/AQuickStart/GUILib/gui1.ring - コードの改善

  • フォームデザイナー - ボタンテキストからボタンイベントを設定 (空の場合)

  • フォームデザイナー - 位置に沿ったコントロールの順列 (作成順ではない)

  • フォームデザイナー - ファイルシステム - ファイル名の文字コード

  • フォームデザイナー - プロパティのウィンドウ - プロパティ名の列 - 配色の改善

  • StdLib - IsPrime() 関数 - コードの改善

  • RingQt - QListWidget クラス - AddItem() メソッド - 数値から文字列への変換

  • RingQt - Qt 関連の定数を多数定義

  • Ring2EXE - 使用方法の表示

  • Ring2EXE - ファイルのコピー時においてフォルダの作成に対応

  • Ring VM - ring_vm_error() - コードの改善

  • Ring コンパイラ - ソースコードファイルの存在時に使用できないオプションを非表示