TECH - テクノロジ

ソフトウェア開発やコンテンツ制作に活用する技術基盤の研究や蓄積を兼ねて、
言語やコンパイラ/インタープリタ、仮想マシン、描画エンジンなどを開発しています。

プログラミング言語 VCSSL

ライトな計算処理やデータの可視化、及びちょっとしたツール製作などに便利な、C言語系の簡易プログラミング言語です。 » 詳細

特徴

リニアングラフ3D&2Dの自動処理用言語にも採用しているため、データを加工してプロットしたり、それを自動で大量のファイルに行ったりするのに便利です(ユーザー層の大多数がそういった用途です)。

また、簡易用途に焦点を絞ったものですが、GUIや2次元 & 3次元グラフィックス機能も標準でサポートしているため、ちょっとした画面を備えたツールを作ったりするのにも使えます。

処理速度面では、インタープリタ式でありつつ、毎秒1億演算(100 MFLOPS)を超えるくらいは発揮可能で、それなりの計算量の用途もこなせます。 実際にコードアーカイブでは計算系のコード例も公開しています。

| 公式サイト | ダウンロード |

スクリプトエンジン Vnano

一般のJavaアプリケーション内に組み込み、スクリプト処理機能を提供するための、オープンソースのスクリプトエンジン & 言語です。 » 詳細

特徴

言語仕様はVCSSLのサブセットで、C言語系のシンプルな文法によるスクリプト処理機能を提供します。 後述の Exevalator よりも実装サイズは大きいですが、その代わり機能数が多く、適材適所の使い分けを想定しています。

処理速度面では、中間コードの実行レイヤーにベクトルレジスタマシン型のVMを採用する事により、最大で数百MFLOPS〜数GFLOPSクラスの演算速度を発揮します。

| 公式サイト | ダウンロード | ソースコード リポジトリ | コンセプト解説記事 | アーキテクチャ解説記事 |

式計算ライブラリ Exevalator

Java™/C#/C++/Rust製のアプリケーション内に組み込んで、文字列内の式の値を計算するのに使える、著作権フリー/オープンソースのコンパクトなライブラリです。 » 詳細

特徴

各言語版ごとに、実装は単一ファイルのみに収まっており、開発アプリケーションのソースコードフォルダ内に放り込むだけで、簡単に使う事ができます。 ライセンスも実質著作権フリーである Unlicense or CC0 です。

また、実装がコンパクトでありつつ、処理速度もそれなりに重視しており、数百MFLOPSクラス(概ねVnanoの半分程度)の処理速度を発揮します。

| 公式サイト | ダウンロード | ソースコード リポジトリ | コンセプト解説記事 | アーキテクチャ解説記事 |

ベクトルレジスタ中間言語 VRIL

中間コードコンパイラ+VM形式の言語処理系内で用いる、VMの命令セットアーキテクチャおよび中間コード言語です。

特徴

VRILは「Vector Register Intermediate Language(ベクトルレジスタ中間言語)」の略で、 名称の通り、ベクトル単位の仮想レジスタ/メモリーを備える、レジスタマシン型のVM実装を前提に仕様設計されています。

VRILの命令セットはほぼ全てが仮想的なSIMD命令で構成されているため、ベクトル演算では命令実行オーバーヘッドに対して実演算時間の比率が高められ、高い性能を実現できます。 また、シンプルな三番地コードの形式であるため最適化が容易で、スカラ演算性能も高めやすい側面を備えています。

VRILは将来的にVCSSLの処理系内で採用する予定で、現在はそのサブセットであるVnanoにおいて先行して採用しています。

| 参照: Vnano処理系のアーキテクチャ |

ベクトルレジスタ仮想マシン VRIL-VM

言語処理系の中間コード実行層に用いるプロセス仮想マシン(いわゆる仮想的なCPUとしてのVM)です。

特徴

データ解析ソフトウェアなどでの使用も見込んで、数値のスカラ演算およびベクトル演算の性能を共に重視しており、 そのためベクトルプロセッサ風の命令を備えるレジスタマシン方式のアーキテクチャを採用しています。 具体的には、中間コード言語にSIMD命令主体のVRILを採用し、レジスタやメモリーのデータ単位も全てベクトル(配列)となっています。

実測性能では、全体がJava言語のみで実装された中間コードインタープリタでありながら、倍精度浮動小数点演算で数百MFLOPS(スカラ演算)〜 数GFLOPS(ベクトル演算)クラスのピーク性能を発揮します。 これにより、プラットフォーム非依存性やアプリケーションへの組み込みやすさと、数値演算パフォーマンスとの間の高い妥協点を実現します。

VRIL-VMは将来的にVCSSLの処理系内で採用する予定で、現在はそのサブセットであるVnanoにおいて先行して採用・開発しています。

| 参照: Vnano処理系のアーキテクチャ | 実装コード |

VRIL出力コンパイラ LexicalCraft

C言語系のオーソドックスな文法を持つVnanoのコードを、ベクトルレジスタマシン上で実行可能なVRILコードに変換するコンパイラです。

特徴

特にアプリケーション組み込み用途を想定したもので、構造上は一般的な字句/構文/意味解析器およびコード生成処理の4ステージ(最適化はVM側)を備えつつ、 カスタマイズ性を確保するために各ステージの分離性を重視し、複雑性や実装規模もコンパクトに抑える事を目指したコンパイラです。

また、アプリケーション内に組み込むという用途上、コンパイル時でのスタックオーバーフロー等の発生を回避しやすいよう、 構文解析器(パーサ)を含む全ステージを非再帰処理のみで実装する設計を採用しています。

LexicalCraft は現在、Vnanoのスクリプトエンジン内部の中間コードコンパイラ層において採用・開発しています。

| 詳細解説記事 | 実装コード |

ASTインタープリタ GARNET

現行版のVCSSL処理系内の実行レイヤーで採用している、中間表現インタープリタです。

特徴

アーキテクチャは広義のASTインタープリタに類するもので、 ポリモーフィズムで機能分化した演算オブジェクトの集合を、抽象構文木と同型のツリー構造となるよう参照リンクで繋ぐ事で、コードを比較的高速に実行します。

GARNETは、VCSSL最初期の頃から処理系の実行層として継続採用してきたものですが、現在は性能向上が鈍化し、実装も複雑化しつつあるため、 将来のVCSSL処理系では別方式のVRIL-VMへ置き換わる予定です。

その後はGARNETは互換エンジンの役割を担う予定であるため、現在は拡張方向での開発よりも、修正やメンテナンスを中心として安定性を固める方向の開発に収束しています。

簡易3D描画ライブラリ RINEARN-X

RINEARN でのソフトウェア開発に使用している簡易3D描画ライブラリです。

特徴

ベクトルや変換行列等、一般に3Dに必要となる数学的な記述を要求せずに、データ可視化などの比較的単純な3DCGを、手軽に描画する事を目指した、簡易用途向けの3D描画ライブラリです。 もともとは リニアングラフ3D の描画エンジンから派生したもので、 現在は VCSSL3DCG機能 の下層レイヤーなどに採用しています。

RINEARN-X は、2009年頃に外部への一般公開を行ったものの、 その後の公開バージョンおよびドキュメントの更新やメンテナンスは、現在停止中となっています。 これはVCSSLの開発に伴って大幅な改修を行ったためで、 将来的には、再び一般公開に向けたバージョンおよびドキュメントの再整備を計画しています( そのタイミングにおいて「 BlockMount3D 」に改称予定です )。

| 詳細ページ( ※ 古い情報です。あらかじめご了承ください。 ) |

その他

先行開発版はこちら

VCSSLの実行環境などでは、開発途中の次期バージョンや、特定の機能を試験的に実装したバージョンなどを、先行開発版として試験公開する場合があります。 詳細はリンク先ページをご参照ください。

ソースコード等はこちら (GitHub)

オープンソース開発のものについては、GitHub上でソースコードのリポジトリを公開しています。

※ OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
※ C# は、米国 Microsoft Corporation の米国およびその他の国における登録商標です。
※ Rustは、Mozilla Foundation の米国及びその他の国における登録商標です。

この階層の目次
新しいお知らせ

各ソフトウェアをアップデート、リニアングラフのコマンド拡張やVCSSLの英語対応など
2024/02/05 - 各ソフトの一斉アップデートの内容をお知らせします。今回は、リニアングラフのコマンド機能を大幅拡張したのがメインです。また、VCSSLのメッセージ類の英語対応も行いました。

Vnano の Ver.1.1 で実装した反復計算高速化の内側
2024/01/17 - 前回のお知らせ記事の続編です。スクリプトエンジン Vnano の Ver.1.1 において実施した高速化を、エンジン内部の実装面から掘り下げて解説します。

スクリプトエンジン Vnano の Ver.1.1 を公開、同じ内容の反復実行が劇的に高速化
2023/12/22 - スクリプトエンジン Vnano の最新版を公開しました。同じ計算式やスクリプトを反復実行する速さが、大幅に向上しました。次期版リニアングラフ3D内での活用例を交えつつ、詳しく解説します。

コードアーカイブ新着
[公式ガイドサンプル] 各種の図形や画像を描画する

「VCSSL 2DCG開発ガイド」内のサンプルコードです。図形や画像などを描画します。
2022-12-16
角度の「度」とラジアンとを相互変換し、図示もするツール

45度などの「度」の値と、ラジアンの値とを相互に変換できるツールです。対応する角度の図示もできます。
2022-11-22
[公式ガイドサンプル] 立体モデルを回転させるアニメーション

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、アニメーションで回転させ続けます
2022-11-18
[公式ガイドサンプル] 立体モデルを回転させる

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、指定した角度だけ回転させます。
2022-11-17
[公式ガイドサンプル] 四則演算の計算順序や、カッコを使った順序指定

「VCSSLスタートアップガイド」内のサンプルコードです。四則演算が計算される順序や、カッコを使って順序を指定する方法を例示します。
2022-10-31