RINEARN > PRESS > リリースノート > 2013年の不具合修正情報
2013年の不具合修正情報

このページには、2013年1月〜12月に実施された不具合の修正履歴を掲載しています。

下記の不具合に関しまして、ご使用頂いた方々にご迷惑をお掛け致しました事を、心よりお詫び申し上げます。


重要な不具合修正
複合代入演算子の左辺でインクリメント/デクリメント演算などを行った場合における、マクロの副作用問題
- VCSSL 3.2 REV 0 / REV 2 において警告を追加

現状のVCSSLエンジンでは、複合代入演算子「 +=, -=, *=, /=, %= 」はマクロ置換によって処理されています。

そのため、複合代入演算子を用いた式の左辺において、インクリメント/デクリメント演算や関数コールなどの処理を行うと、 マクロの副作用により多重評価が行われるという問題が見つかりました。

例として、以下のようなコードが問題となります。

上のコードにおいて、a[i++] += 2; という記述は、現状のVCSSLエンジンの実装では、 マクロ的に (a[i++]) = (a[i++]) + 2; という形に展開されて処理されます。

結果としてマクロの副作用が生じ、i++ が2度評価されてしまうため、意図に反する処理が行われます。 これはインクリメント/デクリメント演算の代わりに、左辺で副作用のある関数コールを行った場合についても同様です。

この挙動は将来(次世代版以降のVCSSLエンジンにおいて)、 高い可能性で修正される予定です。 しかしながらその場合、その前後のバージョンにおいて、上記のようなコードの挙動が異なってしまう事が避けられません。

そのため、VCSSLでは今後当面のバージョンにおいて、複合代入演算子の左辺で副作用のある演算を行う処理を非推奨とする方針となりました。 今後のバージョンで同様の処理を行った場合、警告が表示されるようになります。 既存のコード中に問題となる箇所があるかどうかは、この警告表示によって判別する事ができます。 ご使用頂いている方々には大変申し訳ございませんが、何卒ご容赦下さいますようお願い申し上げます。

複合演算子左辺での関数コールにつきましては、VCSSL 3.2.0 の時点で警告表示に対応しています。 インクリメント/デクリメント演算につきましても、VCSSL 3.2.2 より対応致します。

配列初期化子の二重評価における不具合修正
- VCSSL 3.2 REV 0 にて修正済み

VCSSL 3.1以前のバージョンにおいて、配列を宣言と同時に初期化する「 配列初期化子 」に関しまして、実装上の不具合により、二重に評価されている事が判明致しました。

以下のように、配列初期化子内でインクリメント/デクリメントや関数コールなど、副作用を伴う演算を行っている場合に問題となります。

正しくは 1 が表示されるべきですが、VCSSL 3.1以前では誤った結果として 2 が得られます。

なお、配列初期化子を用いていない場合や、用いていても右辺に副作用を伴う演算(インクリメント/デクリメント演算や関数コール)を行っていない場合につきましては、問題ありません。

この不具合は、現行版の VCSSL 3.2 以降においては修正済みとなっております。この不具合につきまして、多大なご迷惑をお掛けいたしました事を心よりお詫び申し上げます。

一部の場合おいて、文字列リテラル内の「#」記号が消失する挙動に関する不具合修正
- VCSSL 3.2 REV 0 にて修正済み

VCSSL 3.1において、構文解析の不具合により、文字列リテラル内の「#」記号が消失する場合がある事が判明致しました。

この問題は構文解析時におけるメタ情報(行番号情報など)コードの付加・除去に関する不具合であり、構文解析処理が特定のパターンになった場合にのみ発生します。

具体的なパターンの例として、以下のような場合が存在します。

正しくは 「A(改行)###B##C」 が表示されるべきですが、VCSSL 3.1では#記号が消失して 「A(改行)BC」 が得られます。 この問題は上記コードの通り、前の行が文末に空白を挟みつつ1行コメントで終わっており、続く行で文字列リテラルに#記号が含まれている場合に発生します。

この不具合は、現行版の VCSSL 3.2 以降においては修正済みとなっております。この不具合につきまして、多大なご迷惑をお掛けいたしました事を心よりお詫び申し上げます。

VCSSL3 で追加された型での一部代入演算における不具合修正
- VCSSL 3.1 REV 22 にて修正済み

VCSSL3 で新たに追加された complex型、varcomplex型、及び構造体型において、一部の代入演算を行った際に正しくない挙動をする場合が見つかり、改修を実施しました。 主な挙動は下記の通りです:

  • complex型及びvarcomplex型の一部代入演算が、値代入では無く参照代入となる
  • complex型及びvarcomplex型の配列同士における代入演算が正しく実行されない(末尾要素の参照代入となる)
  • 構造体メンバとして保持されている配列からの代入演算が正しく実行されない(要素数が 0 となる)
これらの挙動は全て、代入演算の実行部を、VCSSL3 で追加される型へ対応させるための拡張の不備によるものです。従って、VCSSL2.x 以前から存在する型については影響しません。

varint型の「負の剰余」における仕様変更
- VCSSL 3.1 REV 14 にて修正済み

VCSSLでの多倍長整数を扱う型である varint型における“負の剰余”の仕様が、int型と異なるものになっているという不備が見つかり、int型に合う形に使用変更を実施しました。 詳細については下記をご参照下さい:

その他の不具合修正
リニアンプロセッサー 4.0, 4.1 の丸め処理(最近接偶数丸め)における取り扱い説明書(四捨五入と記載)との不整合
- リニアンプロセッサー 4.2 にて修正済み

リニアンプロセッサー 4.0 及び 4.1 において、桁数と丸め処理の説明に関し、「 余剰桁は設定桁に四捨五入される 」との旨の記載がございましたが、 同バージョンの丸め処理は四捨五入では無く、最近接偶数への丸め( ROUNDS_EVEN )でした。お詫びして訂正致します。

なお、リニアンプロセッサー 4.2 以降のバージョンでは、最近接偶数への丸めや四捨五入を含めて、丸め処理を選択可能となっており、取り扱い説明書の記載もその通りに修正されています。。

この件に関しまして、多大なご迷惑をお掛け致しました事を、心よりお詫び申し上げます。

System.load関数で改行コードが消失する問題
- VCSSL 3.2 REV 0 にて修正済み

VCSSL 3 からサポートした System.open(string fileName, string mode) 関数でファイルを開いた場合、 ファイル全体を読み込んだ内容をそのまま返す System.load(int fileID) 関数において、 改行コードが消失する事が判明致しました。

この不具合は、現行版の VCSSL 3.2 以降にて修正済みとなっております。ご迷惑をお掛けいたしました事を心よりお詫び申し上げます。


2013年1月〜12月の主な不具合修正履歴は、以上の通りです。

最後に、上記の不具合に関しまして、ご使用頂いた方々にご迷惑をお掛け致しました事を、重ねてお詫び申し上げます。


RINEARN > PRESS > リリースノート > 2013年の不具合修正情報
  スポンサー リンク

  おすすめ / 人気のコーナー
フリーソフト
RINEARN では、インストール不要の各種解析ソフトを無償公開しています。Windows 8.1 で動作確認済み !
ピックアップ
【VCSSL実践講座】 3Dグラフ描画ツールを作ろう!
C言語系の簡易プログラミング言語「 VCSSL 」で、色々なものを作っていく連載記事コーナーです。現在は3Dグラフ描画ツールを開発中 !
2013年08月29日
【RINEARN CODE】 凸レンズを通過する波のシミュレーション
凸レンズ形状の高密度媒質を通過する、波のシミュレーションです。まっすぐ入射した波がレンズ通過時に屈折し、焦点へ収束する様子がアニメーションで楽しめます。
2013年03月15日
  新着情報
RSSフィード
RINEARN の新着・更新情報をRSSフィードで配信しています !
新着リスト
台形近似による数値積分

積分の値を数値的に求めます。長方形近似よりも高精度な方法として、台形で近似した微小領域を足しあげる方法を使用します。
2015年06月25日
長方形近似による数値積分

積分の値を数値的に求めます。長方形で近似した微小領域を足しあげる、最も単純な方法を使用します。
2014年11月01日
小数(浮動小数点数)から分数へ近似的に変換する

小数(浮動小数点数)を、適当な誤差の範囲内で、近い分数に変換するプログラムです。
2014年08月10日
ベクターソフトニュース様でリニアングラフ3Dをご紹介頂きました!

オンラインソフトウェア流通サイトVector様の「ベクターソフトニュース」コーナーにて、リニアングラフ3Dを取り上げて頂きました。
2014年07月31日
ユーザーが入力した数式を2次元グラフにプロットする

実行時にユーザーが入力した数式の値を、2次元グラフにプロットするサンプルプログラムです。
2013年11月30日
配列を3次元グラフにプロットする

座標値配列の内容を、3次元グラフにプロットするサンプルプログラムです。
2013年11月28日
配列を2次元グラフにプロットする

座標値配列の内容を、2次元グラフにプロットするサンプルプログラムです。
2013年11月28日
ファイルを3次元グラフにプロットする

座標値ファイルの内容を、3次元グラフにプロットするサンプルプログラムです。
2013年11月27日
ファイルを2次元グラフにプロットする

座標値ファイルの内容を、2次元グラフにプロットするサンプルプログラムです。
2013年11月26日
2013年の不具合修正情報

2013年1月〜12月に実施された不具合修正に関する情報を掲載しています。
2013年11月01日
3Dグラフ描画ツールを作ろう!〜第5回縮尺を自動調整する

VCSSL実践講座、3Dグラフ開発編。第5回では、最大最小値に応じて、縮尺を自動調整する処理を実装します。
2013年09月02日
3Dグラフ描画ツールを作ろう!〜第5回縮尺を自動調整する

VCSSL実践講座、3Dグラフ開発編。第5回では、最大最小値に応じて、縮尺を自動調整する処理を実装します。
2013年09月02日
  Twitter