VCSSL 3.4 リリースノート

----------------------------------------------------------------------------------------------------
| 3.4.52
----------------------------------------------------------------------------------------------------

・外部プロセス実行時の標準入出力の文字コード設定機能を追加

    Processライブラリに以下の関数を追加しました：

    * void setProcessInputEncoding(int processID, string encoding)
    * void setProcessOutputEncoding(int processID, string encoding)
    * void setProcessErrorEncoding(int processID, string encoding)

    これらによって、実行した外部プロセスの標準入力/出力/エラーをVCSSL側で拾う際の文字コードを指定し、
    文字化けを解消する事ができます。

    最近のJavaはデフォルトで文字コードUTF-8で動作するので、
    Windows上で昔の外部プロセスを実行すると文字化けしてしまう事があります。

    その場合は、上記の引数 encoding に
    "MS932" や "CP932" や "Shift_JIS" を指定すると、うまく文字化け解消する事が期待できます。
    （厳密に何を指定すべきかは、実行する外部プロセス依存です。）

・実行環境における、OSの基本情報を取得する機能を追加

    Systemライブラリに以下の定数を追加しました：

    * OS: 実行環境のOSの種類や世代を大まかに区別するための文字列で、通常はOS名です（ブランディング用の数字部含む）。
    * OSVER: 実行環境のOSの世代を区別する際の参考文字列で、具体的にはOSの開発用/内部バージョンなどです。

・文字列操作機能の拡張

    Textライブラリに以下の関数を追加しました：

    * string adjustText(string text, int mode)

    これは文字列の内容を色々と微調整するための関数で、引数 mode (モード)には以下の値を指定できます：

    * TRIM: 文字列の先頭や末尾にある空白・改行を除去して詰めます
    * LOWER_CASE: 文字列内のアルファベットを小文字で揃えます
    * UPPER_CASE: 文字列内のアルファベットを大文字で揃えます

・特定パターンを含むコードを実行できないバグの修正（Ver.3.4.46での同様の修正の範囲漏れ）

    if文/for文/while文の条件を記述する () 内において、文字列リテラルが存在し、
    かつその中にエスケープされた「"」記号が含まれる場合に、
    正しいコードが構文エラーになってしまうケースがあるバグを修正しました。

・Java24上での動作における非互換挙動の修正（Ver.3.4.50での同様の修正の範囲漏れ）

    Ver.3.4.50 での修正後も、「 choose 関数でネットワークドライブ上のパスを選択するとUNCパス表記に
    なってしまう挙動が残っていたため、今回のバージョンで対策しました。

    なお、本件に関するJava24上の非互換挙動については、OpenJDKコミュニティにも報告して受理されました。
    まだ見つけていない細かい部分でUNC化けがあるかもしれませんが、
    Java側の修正によって将来のバージョンでは自然に直るかもしれません（修正時期はまだ未定のようです）


----------------------------------------------------------------------------------------------------
| 3.4.50
----------------------------------------------------------------------------------------------------

・Java24上での動作における非互換挙動の修正

    Java24上での動作において、Java23以前での動作と異なる挙動が見られる問題を修正しました。
    具体的には、以下の問題が生じていました:

    * Fileライブラリの getFilePath 関数を用いて、ネットワークドライブ上のファイルの絶対パスを取得した際、
      ドライブレター（先頭の「Z:」等の部分）がUNCパス表記（\\192.168.1.x等）になってしまう

    * ネットワークドライブ上のスクリプトを実行した際に、そのスクリプトがOSコマンドを実行している場合、
      その処理のカレントディレクトリがスクリプトの場所にならなず、システムのデフォルトの場所になってしまう

    これらに対して、Java24上においても、Java23以前と同様の（問題が生じない）挙動となるように修正しました。


・インストール版のライブラリが少し古かったのを修正

    インストール版のライブラリのバージョンが、インストール不要版よりも1段階ずれて古かったのを直しました。
    （Graph2D/3D の setGraph*DTickX/Y/Z などが使えませんでした。）


----------------------------------------------------------------------------------------------------
| 3.4.48
----------------------------------------------------------------------------------------------------

・特定パターンを含むコードを実行できないバグの修正

    if文/for文/while文の条件を記述する () 内において、文字列リテラルが存在し、
    かつその中にエスケープされた「"」記号が含まれる場合に、
    正しいコードが構文エラーになってしまうケースがあるバグを修正しました。

・内蔵のリニアングラフ2Dを Ver.5.6.34 にアップデートしました。前のバージョンにおいて、

    高い更新頻度のアニメーション処理などの際、手動でのプロットオプション操作とタイミングが
    重なってしまった場合に、偶発的にフリーズしてしまう可能性がある処理を修正しました。

----------------------------------------------------------------------------------------------------
| 3.4.46
----------------------------------------------------------------------------------------------------

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.38 に、
    リニアングラフ2Dのバージョンが 5.6.32 になりました。

    両者とも、目盛り周りの拡張で、任意の位置に任意のラベルで目盛りを描く事が可能になりました。
    それに併せて、VCSSLでの制御機能でも、以下のようにライブラリ関数を追加しています。

・Graph3Dライブラリの拡張

    Graph3Dライブラリに、目盛り設定のための以下の関数を追加しました:

      * setGraph3DTickX(int graphID, double tickCoords[], string tickLabels[])
      * setGraph3DTickY(int graphID, double tickCoords[], string tickLabels[])
      * setGraph3DTickZ(int graphID, double tickCoords[], string tickLabels[])
      * setGraph3DTickColorBar(int graphID, double tickCoords[], string tickLabels[])
      * setGraph3DTick(int graphID,
            double xTickCoords[], string xTickLabels[],
            double yTickCoords[], string yTickLabels[],
            double zTickCoords[], string zTickLabels[],
            double colorBarTickCoords[], string colorBarTickLabels[]
        )

    また、軸ラベル設定用の以下の関数も追加しました:

      * setGraph3DLabelX(int graphID, string label)
      * setGraph3DLabelY(int graphID, string label)
      * setGraph3DLabelZ(int graphID, string label)
      * setGraph3DLabel(int graphID, string xLabel, string yLabel, string zLabel)

・Graph2Dライブラリの拡張

    Graph2Dライブラリに、目盛り設定のための以下の関数を追加しました:

      * setGraph3DTickX(int graphID, double tickCoords[], string tickLabels[])
      * setGraph3DTickY(int graphID, double tickCoords[], string tickLabels[])
      * setGraph3DTick(int graphID,
            double xTickCoords[], string xTickLabels[],
            double yTickCoords[], string yTickLabels[]
        )

    また、軸ラベル設定用の以下の関数も追加しました:

      * setGraph3DLabelX(int graphID, string label)
      * setGraph3DLabelY(int graphID, string label)
      * setGraph3DLabel(int graphID, string xLabel, string yLabel)


----------------------------------------------------------------------------------------------------
| 3.4.44
----------------------------------------------------------------------------------------------------

欠番

（バージョン番号に4が3連続なので、日本のユーザーの方は使っている時に気になってしまいそうですし…）


----------------------------------------------------------------------------------------------------
| 3.4.42
----------------------------------------------------------------------------------------------------

・メモリー容量設定.bat のメッセージの訂正

    ソフトウェア名を表す箇所が、
    「RinearnGraph3D」や「RinearnProcessor」になっていたのを「VCSSL」に訂正しました。

・ファイルI/Oのバグ修正

    書き込みモードでファイルを開くと常に落ちてしまうバグを修正しました。
    （本当に恥ずかしいバグですみません…）


----------------------------------------------------------------------------------------------------
| 3.4.40
----------------------------------------------------------------------------------------------------

・英語に全面的に対応（ただしドキュメント類はまだ）

    メニューの「設定 (Settings)」>「言語の設定 (Select Language)」で、
    画面UIおよびメッセージ類を英語化できるようになりました。
    コード内容に起因する、構文エラーや実行時エラー等のメッセージも、全て英語にできます。

    （最近、英語圏でリニアングラフ3Dを使ってくださるユーザーさんが増えてきているのですが、
      VCSSLのUIやエラーメッセージが全部日本語のため、「謎の機能」扱いになっているらしいので、
      そのための対応です。日本語圏のユーザーさんには恐らくほぼ関係が無い更新点ですが…）

    ただ、ドキュメントの英訳は全然追いついておらず、ライブラリ仕様書も日本語のままです。
    その点については今後急いで進める予定です。

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.36 に、
    リニアングラフ2Dのバージョンが 5.6.30 になりました。

    VCSSLで使う分にはあまり関係の無い更新内容ばかりなのですが（コマンドライン強化など）、
    3Dの方は、描画が重い時のマウス操作に対して、画面が乱れにくくなる調整が入っています。


----------------------------------------------------------------------------------------------------
| 3.4.38
----------------------------------------------------------------------------------------------------

・OpenJDK 21.0.2 でのビルド

    本バージョンより、ビルドに OpenJDK 21.0.2 が使用されています。

・Vnano のアップデート

    Vnano（VCSSL nano）のスクリプトエンジンを Ver.1.1.14 にアップデートしました。

・インストール版での Vnano 実行機能における、標準プラグインの一部クラス類の欠落を修正

    インストール版において、Vnano の標準プラグインのうち、org/vcssl/nano/plugin/system/file 以下のクラス類
    が含まれていない状態でした。にもかかわらず、プラグイン読み込み設定ではそれらを必要とする内容だったため、
    インストール版で Vnano のスクリプトを実行しようとすると、エラーになる状態でした。今回、追加して修正しました。

・Graph3Dライブラリのバグ修正

    ファイルを開く setGraph3DFile 関数群において、配列によってファイル名とモードを指定する、下記の関数を修正しました：

      * setGraph3DFile(int graphID, string filePaths[], string modes[])

    引数 filePaths が配列ではない場合は正常に動いていましたが、配列の場合はエラーが出て機能しない状態でした。

・インストーラで生成される起動ショートカットのリンク修正

    前回の Ver.3.4.36 では、VCSSLをPCにインストールして使う場合、
    希望に応じてデスクトップに生成されるショートカットのリンク先が、旧バージョン .34 を参照していて使えない状態でした。
    バッチファイルにアイコンを付けたい都合上、毎回手で更新しているのですが、今後の更新では気を付けるように気を引き締めました。


----------------------------------------------------------------------------------------------------
| 3.4.36
----------------------------------------------------------------------------------------------------

・OpenJDK 20.0.2 でのビルド

    本バージョンより、ビルドに OpenJDK 20.0.2 が使用されています。

・メモリー容量設定用バッチファイルのバグ修正

    同梱の「 メモリー容量設定.bat 」によってメモリー使用量を設定しても、反映されないバグを修正しました。

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.36 に、
    リニアングラフ2Dのバージョンが 5.6.28 になりました。


----------------------------------------------------------------------------------------------------
| 3.4.34
----------------------------------------------------------------------------------------------------

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.34 になりました。

・Graph3Dライブラリの拡張

　　データファイルを開く setGraph3DFile 関数に、書式指定のための引数を追加した版を新たにサポートしました：

　　　　void setGraph3DFile( int graphID, string filePath, string mode )
　　　　void setGraph3DFile( int graphID, string file[ ], string mode[ ] )

　　引数 mode に、データファイルの書式を指定します。例えば4次元データの場合は "4COL_CSV" や "4COL_STSV" などで、
　　前者はCSV、後者はタブ/空白区切りファイルです。
　　詳細はライブラリ仕様書に記載しています。


----------------------------------------------------------------------------------------------------
| 3.4.32
----------------------------------------------------------------------------------------------------

・Vnanoのアップデート

    Vnano（VCSSL nano）のバージョンが 1.0.0 (正式リリース版) になりました。
    今回から、VCSSL互換の丸め処理（round関数や関連定数類）がVnanoでも使えるようになりました。


・文字列に対する round(...) 関数の挙動の小変更

    文字列の内容を、数値と見なして丸める 
    　round(string value, int numberOfDigits, int mode) 
    関数の挙動に微調整を加えました。

    具体的には、結果が指数部を持つ際に、これまでは正の指数部でも
    　1.23E+45
    のように「+」符号が表示されていました。今回からは、指数部の符号が正なら省略して
      1.23E45
    となるようにしました。

    なお、float/double型の値をそのまま（丸めずに）string型に変換した際に、
    指数部が正の場合は符号が省略されます。今回の調整は、挙動をそれに合わせたかったためです。
    （丸めるか丸めないかで、符号が付いたり略されたりすると、使用時に対処が分かれてややこしいためです。）


----------------------------------------------------------------------------------------------------
| 3.4.30B
----------------------------------------------------------------------------------------------------

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.30 になりました。


----------------------------------------------------------------------------------------------------
| 3.4.30
----------------------------------------------------------------------------------------------------

・OpenJDK 19.0.1 でのビルド

    本バージョンより、ビルドに OpenJDK 19.0.1 が使用されています。

・Vnanoのアップデート

    Vnano（VCSSL nano）のバージョンが 0.9.6 (RC3) になりました。
    これにより、VCSSL互換のファイル入出力機能（open関数やread/write関数等）が使えるようになりました。


----------------------------------------------------------------------------------------------------
| 3.4.28B
----------------------------------------------------------------------------------------------------

・Vnanoのアップデート

    Vnano（VCSSL nano）のバージョンが 0.9.4 (RC2) になりました。


----------------------------------------------------------------------------------------------------
| 3.4.28
----------------------------------------------------------------------------------------------------

・OpenJDK 19 でのビルド

    本バージョンより、ビルドに OpenJDK 19 が使用されています。

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.28 になりました。
    また、同様にリニアングラフ2Dのバージョンが 5.6.26 になりました。

・Vnanoのアップデート

    Vnano（VCSSL nano）のバージョンが 0.9.2 (RC1) になりました。

・文字化けしていた一部テキストファイル類の文字コード変更

    少し前までは、JREのデフォルトの文字コードは CP932（≒Shift_JIS）でしたが、最近は UTF-8 になりました。
    それに伴い、従来からあった一部のテキストファイルの読み込み処理などで、文字化けしてしまっている箇所がありました。
    そういったファイルの文字コードを、Shift_JIS から UTF-8 に変更しました。

・文字コード設定用のバッチファイルの追加

    上述の通り、JREのデフォルト文字コードが変わったため、旧来と同じ状態で使用したい場合のために、
    デフォルトの文字コードを切り替えるバッチファイル「 文字コードの切り替え.bat 」を追加しました。
    昔作成したスクリプトやデータファイルなどが文字化けしてしまう場合にご利用ください。

・その他、起動関連のバッチファイル類の更新

    起動や初期設定のためのバッチファイル類を更新しました。
    初回起動時のセットアップ手順が、従来よりも手短になりました。


----------------------------------------------------------------------------------------------------
| 3.4.26
----------------------------------------------------------------------------------------------------

・OpenJDK 16 でのビルド

    本バージョンより、ビルドに OpenJDK 16 が使用されています。

・Vnanoの実行機能のサポート

    Vnano（VCSSL nano）で記述されたプログラムを実行できるようになりました。
    Vnanoの詳細については、下記公式サイトをご参照ください：

        https://www.vcssl.org/ja-jp/vnano/

    なお、Vnanoは現在オープンベータ版であり、まだ正式リリース版ではありません。
    ただ、概ね実用的な水準に漸近して安定してきており、
    Vnano を使用する電卓ソフト「 RINPn（オープンベータ版）」も一般公開を開始した事から、
    VCSSLの標準実行環境であるVCSSLランタイムでもサポートを開始しました。

・ガイド類の場所移動

    Vnanoのサポートにあわせて、ガイド類の内容も、Vnanoについて説明するように更新しました。
    また、場所を「 Guide_プログラミングガイド類 」フォルダに移動しました。

・一時ファイル用フォルダへの入出力を許可するセキュリティ項目の追加

    「 全てのファイル入出力を無確認で許可したくないものの、
    一時ファイル用フォルダへの入出力だけは無確認で行ってほしい 」用途のための
    セキュリティ項目を、メニューバーの「セキュリティ」メニューに追加しまいた。

・一時ファイル用フォルダのパスを取得する機能の追加

    Fileライブラリに、文字列定数「 TMP 」を追加しました。
    以下のように getFilePath 関数の引数に指定する事で、
    環境依存の一時ファイル入出力用フォルダのパスを取得できます：

      string tempDirPath = getFilePath(TMP);

    なお、実行対象のプログラム内で「 TMP 」という変数が宣言されている場合は、そちらが優先されます。
    その場合に今回追加された TMP を参照したい際は、名前空間「 File 」を付けてアクセスしてください：

      string tempDirPath = getFilePath(File.TMP);

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.26 になりました。
    また、同様にリニアングラフ2Dのバージョンが 5.6.24 になりました。


----------------------------------------------------------------------------------------------------
| 3.4.24
----------------------------------------------------------------------------------------------------

・OpenJDK 15 でのビルド

    本バージョンより、ビルドに OpenJDK 15 が使用されています。

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.24 になりました。
    (目盛り書式を手動設定した際に、一部項目が反映されない問題が修正されました。)

    また、同様にリニアングラフ2Dのバージョンが 5.6.22 になりました。
    (こちらはビルド環境の最新化のみで、機能的には変わりません。)

・ライブラリ仕様書の訂正

    前回バージョンに同梱されていたライブラリ仕様書において、
    その生成に使用している内製ドキュメントジェネレータの改修不良により、
    記号等のエスケープができていなかったり、逆にエスケープすべきでない箇所がエスケープされていました。
    (それにより、ジェネリック関数/構造体の型パラメータが表示されなかったり、
     説明文中のリンク箇所がHTMLコードのような形で表示されたりしていました。)
    今回のバージョンに同梱の仕様書では、それらが訂正されています。


----------------------------------------------------------------------------------------------------
| 3.4.22
----------------------------------------------------------------------------------------------------

・OpenJDK 14 でのビルド

    本バージョンより、ビルドに OpenJDK 14 が使用されています。
    (このバージョンでは 14.0.2)

・起動用スクリプト類の更新

    起動用のバッチファイルやシェルスクリプト類を更新しました。

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.22 になりました。
    また、同様にリニアングラフ2Dのバージョンが 5.6.20 になりました。

・配列引数の参照渡し宣言の記法追加

    従来では、配列引数を参照渡しする際、以下のように宣言する必要がありました：

      type (&name)[]

    本バージョンより、単純に以下の形でも宣言できるようになりました：

      type &name[]

    これは、VCSSLのアプリケーション組み込み用サブセットである Vnano と互換性を保つためのものです。
    VCSSLでは引き続き前者の形も使用できますが、Vnano では（少なくとも現状では）後者のみ有効な形となります。

・3次元以上の配列に対する alloc 文のバグ修正

     3次元以上の配列に対して、alloc 文で領域を再確保（要素数を再設定）した場合、
     再確保前の値が正しい順序で保持されない挙動を修正しました。

・alloc 関数と free 関数の追加

    配列の再確保と解放において、alloc 文および free 文と同等の機能を関数として提供する、
    下記の関数を System ライブラリに追加しました：

      - void alloc(array, int length0, int length1, int length2 ...)
      - void free(array) 

    この追加の主な目的は、
    VCSSLのアプリケーション組み込み用サブセットである Vnano のコードと互換性を保つためですが、
    そもそも文による配列の領域操作は他言語において一般的ではないため、
    今後は上記関数を使用する方が、可読性の点でも好ましいかもしれません。
    VCSSLでは引き続き alloc / free 文も使用できますが、Vnano では上記関数のみ使用可能となります。

・float 型の最小値を表す定数の追加

    これまでも、float 型の最小値を表す定数として、System ライブラリの FLOAT_MIN が存在しました。
    一方で、「 float 型の最小値 」という概念には、「 正の範囲で最も小さい値 = (0以外の)最小絶対値 」と、
   「 負の範囲も含めて最も小さい値 = 絶対値が最も大きなマイナスの値 」の2つが考えられます。
    さらに両者において、正規化数と非正規化数のどちらの範囲内での値かによって、値が2通り存在します。

    従来から存在した System.FLOAT_MIN は、
   「 非正規仮数 」の範囲内での「 正の範囲で最も小さい値 = (0以外の)最小絶対値 」を格納していました。
    しかし、その事が名前からは一目でわからないため、より具体的な名前を持つ、同じ値の定数として、

      - FLOAT_MIN_ABS_DENORMAL

    を System ライブラリに追加しました。
    また、同様に正規化数の範囲内で「 正の範囲で最も小さい値 = (0以外の)最小絶対値 」を格納する、

      - FLOAT_MIN_ABS_NORMAL

    も追加しました。従来の FLOAT_MIN も引き続き使用できますが、
    float 型のこのような値が必要になるような特殊な場面においては、
    上記の新しい定数を使用する方が、名前の曖昧性による混乱を予防できるかもしれません。

・文字列（string値）を引数とする round 関数の追加

    従来からの float/varfloat 値を丸める round 関数に加えて、
    新たに string 値の中身を浮動小数点数と見なして丸め、string 値を返す、
    以下の関数を System ライブラリに追加しました。

      - string round(string value, int digit, int mode)

    この関数は、float 値を文字列に変換したり print 関数で表示した際と同じ内容
   （内部で暗黙の丸め処理が行われます / 後述）を基準として、さらに意図通り丸めたい場合などに使用します。
    float 型の値を直接丸める場合と比べて、2進/10進変換誤差の影響が僅かに異なる場合があります(後述)。

    そもそも float型の値は、内部では2進数の浮動小数点数のデータとして保持されており、
    一方で round 関数での丸め処理は10進数基準で行われます。
    その際、float値の2進数と10進数の変換は、理論上有限の桁に収まらないケースがあり、微小な変換誤差が生じ得ます。

    一方、float 値を print 関数で表示したり、文字列へ変換したりする際にも、10進数への変換が行われますが、
    それもまた理論上有限の桁数に収まらない場合があるため、適当な桁数に収まるよう、内部で暗黙的な丸め処理が行われます。
    従って、float 値の print 結果や文字列表現（10進数）と、float 値の内部的な値（2進数）は、
    わずかに食い違っている場合があります。

    従って、float 値そのものを直接 round 関数で丸めるのと、
   「 float 値の文字列表現（＝ print 表示した際の内容）」をround 関数で丸めるのとでは、
    round 関数の指定桁数や丸めモードが同じであっても、結果が僅かに食い違う場合があります。
    前者の処理はこれまでも行えましたが、後者の操作を行う関数は存在しませんでした。
    そこで後者の操作をサポートするため、今回の関数 round(string, ...) を追加しました。

・System ライブラリでの time 関数のサポート

    スクリプト実行開始時点からの経過時間を返す time 関数は、これまで Time ライブラリで提供されてきましたが、
    Time ライブラリの関数の中でも使用頻度が特に高いため、System ライブラリでも提供されるようになりました。

    System ライブラリは import 不要で使用できるため、今後は何も import しなくても標準で time 関数を使用できます。

・tool.Graph2D/Graph3D ライブラリにおいて、設定ファイルと同様の書式で、文字列の設定コードを読み込む関数を追加

   グラフソフトの制御用APIライブラリである「 tool.Graph2D / Graph3D 」ライブラリにおいて、
   独立した関数として用意されていないような細かい設定項目は、従来は設定ファイルを用意し、
   setGraph2DConfigurationFile / setGraph3DConfigurationFile 関数によって読み込ませる必要がありました。

   今回のバージョンから、ファイルを用意しなくても、設定ファイルと同様の書式で記述したコードを
   文字列として読み込ませて反映できる、以下の関数が利用可能になりました：

     - setGraph2DConfigurationCode(int graphID, string code)
     - setGraph3DConfigurationCode(int graphID, string code)

   詳細は lib/toolフォルダ内の仕様書 Graph2D.html / Graph3D.html をご参照ください。

・Mathライブラリの仕様書の一部訂正

    rad 関数と deg 関数に関する説明文が混同を含むものになっていたため、訂正しました。
    関数の挙動自体は以前と同一です。

・ライブラリ仕様書の記述内容の更新

    関数名や引数名、引数や戻り値の型情報などは、シグネチャ（文法的定義）の項目から把握可能であるため、
    各関数仕様のテーブルにおいて、これまでは独立な項目としては記載していませんでした。
    しかし、慣れないと分かり辛いため、独立な項目としても記載されるようにしました。

    また、いくつかの関数（Mathライブラリ内のよく用いる数学関数等）については、
    簡単な使用例のコードが記載されるようになりました。

・プログラムが見つからない際のエラーメッセージ内容の訂正

    実行対象およびimport対象のプログラムが見つからなかった際、そのエラーメッセージ内で、
    拡張子「 .vcssl 」が2連続で表示されてしまっていたのを訂正しました。

・Graphics ライブラリの loadImage による画像読み込みで、同一ファイルの(起動後)初回読み込み後の変更が反映されない挙動の修正

    同一のファイルパスの画像ファイルを Graphics ライブラリの loadImage 関数で複数回読み込んだ場合、
    その間に画像ファイルの内容が変更されていても、
    これまでは起動後初回に読み込んだのと同一の内容が返されてしまっていました。
    本バージョンにおいて、変更が反映されるように修正しました。

・exit 後にリセット/別プログラム実行ができない場合がある現象の修正

    main 関数やイベントハンドラ関数から始まるフローにおいて、exit 関数をコールしてプログラムを終了させた場合、
    その後VCSSLランタイムや搭載ソフトウェアを動作させたまま（再起動せずに）リセットや別プログラムを実行すると、
    プログラムの解釈画面（青い画面）から先に進まない場合がある現象を修正しました。
    (この現象は、プログラム内での制御文の組み合わせ方と、その中での exit コール位置に依存するため、発生条件は複雑です。）


----------------------------------------------------------------------------------------------------
| 3.4.20
----------------------------------------------------------------------------------------------------

・OpenJDK 13 でのビルド

    本バージョンより、ビルドに OpenJDK 13 が使用されています。

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.20 に更新されました。

・tool.Graph3Dライブラリの機能追加

  リニアングラフ3Dの制御用APIライブラリである tool.Graph3D ライブラリで、
  以下の関数が新たに利用可能になりました。

    - void setGraph3DCameraAngle( int graphID, float horizontalAngle, float verticalAngle, string mode )
      カメラアングルを設定します。

    - void setGraph3DCameraMagnification( int graphID, float magnification )
      カメラ倍率を設定します。

    - void setGraph3DCameraDistance( int graphID, float distance )
      カメラ距離を設定します。

    - setGraph3DCameraPerspective( int graphID, bool perspective )
      カメラの遠近感の有効/無効を設定します。

  各関数の詳細仕様は、lib フォルダ内のさらに tool フォルダ内にある、Graph3D.html をご参照ください。


----------------------------------------------------------------------------------------------------
| 3.4.18
----------------------------------------------------------------------------------------------------

・JRE導入ガイド処理の改善

    初回起動時に、JREが存在しない場合に実行されるJREの導入ガイド処理において、
    途中でZIPファイルを手動で展開する手順がありますが、その際に使用する展開（解凍）ソフトによっては、
    展開結果のフォルダ階層の差異により、うまく導入できない場合がありました。
    今回から、展開結果のフォルダ階層を複数パターン想定し、対応できるように改善しました。

・セキュリティ確認メッセージの調整

    プラグインの接続とシステムコマンドの実行に対する、セキュリティ確認メッセージの内容を見直しました。
    また、他の各種のセキュリティ確認メッセージにおいても、
   「 Security 」メニューから有効化/無効化の設定を行える事を追記しました。

・インストール版でのグラフのクイック設定フォルダのデフォルト内容の訂正

   「 Install.exe 」でインストールして使う場合、グラフのクイック設定フォルダ
   「 RinearnGraph2DQuickSetting 」および「 RinearnGraph3DQuickSetting 」
    の中に、本来配置されるべきデフォルトの設定ファイルではなく、
    ライセンス文書が配置されてしまっていたのを訂正しました。


----------------------------------------------------------------------------------------------------
| 3.4.16
----------------------------------------------------------------------------------------------------

・リニアングラフのアップデート

    内蔵されているリニアングラフ3Dのバージョンが 5.6.16 になりました。
    また、同様にリニアングラフ2Dのバージョンが 5.6.14 になりました。

----------------------------------------------------------------------------------------------------
| 3.4.14
----------------------------------------------------------------------------------------------------

・OpenJDK 12 でのビルド

    本バージョンより、ビルドに OpenJDK 12 が使用されています。

・リニアングラフのアップデート

    内蔵されているリニアングラフ2Dのバージョンが 5.6.12 になりました。
    同様に、リニアングラフ3Dのバージョンも 5.6.14 に更新されました。

----------------------------------------------------------------------------------------------------
| 3.4.12
----------------------------------------------------------------------------------------------------

・引数4個の newGraphics 関数の追加

  GraphicsライブラリのnewGraphics関数の内、引数を4個持つ以下の関数：

    newGraphics(int baseGraphicsID, int width, int height, bool antialiasing)

  が追加されました。詳細はドキュメントをご参照ください。

----------------------------------------------------------------------------------------------------
| 3.4.10
----------------------------------------------------------------------------------------------------

・OpenJDK 11 でのビルド

    本バージョンより、ビルドに OpenJDK 11 が使用されています。

・OpenJDKベースのJREのサポート

    OpenJDKのjlinkツールで生成したJREが利用可能になりました。
    詳細は ReadMe や「 jre 」フォルダ内のテキストをご参照ください。

・配列初期化子のバグ修正

    文字列型配列の配列初期化子内において、要素に「 ( 」および「 ( 」の文字
    を含む文字列リテラルが存在した場合、初期化子の要素の個数が実際と食い違うバグが修正されました。

・引数10個の drawImage 関数の挙動の修正（詳細： https://www.rinearn.com/ja-jp/info/news/2019/0211-vcssl-3-4-10-incompatible-api-fix）

    Graphics2DライブラリのdrawImage関数の内、引数を10個持つ以下の関数：

      drawImage(int rendererID, int x, int y, int width, int height, int cropX, int cropY, int cropWidth, int cropHeight, int graphicsID)

    の挙動が、ドキュメントにおける引数の説明と完全に異なっていたため、
    3.4.10においてドキュメント通りの挙動に修正されました。
   （内容の詳細はドキュメントをご参照ください。）

    一方で、この関数の古いバージョンである drawGraphics 関数においては、
    互換性を優先し、関数の挙動は保ったままドキュメントの方が修正されました。

    対象の drawImage 関数を呼び出している既存のコードを、VCSSL 3.4.10 以降に対応させる場合で、
    必要最小限の変更で済ませたい場合、drawImage 関数の代わりに drawGraphics 関数で置き換えてください。

・引数3個の newGraphics 関数のバグ修正

    Graphicsライブラリの newGraphics 関数の内、引数を3個持つ以下の関数：

      newGraphics( int baseGraphics, int fromColor[], int toColor[] )

    内部において、引数 baseGraphics （旧バージョンでの名称は id ）の名称と、
   戻り値IDを格納する変数の名称が重複していたバグを修正しました。

・引数5個の newGraphics 関数の追加

    Graphicsライブラリの newGraphics 関数に、引数を5個持つ以下の関数：

      newGraphics ( int id, int cropX, int cropY, int cropWidth, int cropHeight )

    が追加されました。詳細はドキュメントをご参照ください。

・ popup 関数の追加

    画面にメッセージをポップアップ表示する、System ライブラリの pop 関数の名前が、
    data.Stack ライブラリの pop 関数と同じになってしまっているため、
   （引数の使用が違うため呼び出しは区別可能）
    コード上で一目で区別できるようにするため、前者と同機能の popup 関数を追加しました。
    なお、互換性維持のため、元の（ Systemライブラリの ） pop 関数も引き続き使用可能です。

・付属のガイドの改訂

    起動方法の部分や、その他細かい部分などを改訂しました。

