TECH - テクノロジ

開発の土台を支える技術基盤として、言語やコンパイラ/VM、グラフィックスエンジンなどを開発しています。

プログラミング言語 VCSSL

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

2次元 & 3次元グラフィックスやグラフ描画機能などを標準でサポートしつつも、 各種デスクトップOSに対応・インストール不要で動作し、実行環境ごとUSBメモリーで持ち運んで利用する事もできます。

比較的軽い用途を想定したインタープリタ式の言語ですが、毎秒1億回(100 MFLOPS)程度の演算速度を発揮可能で、それなりの計算量の用途もこなせます。

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

スクリプトエンジン Vnano

Vnano(VCSSL nano)は、一般のJava®アプリケーション内に組み込み、文字列内の式の評価やスクリプト処理機能を提供するための、オープンソースの小型・軽量スクリプトエンジン & 言語です。 » 詳細

言語仕様はVCSSLのサブセットで、C言語系のシンプルな文法によるスクリプト処理機能を提供します。 仕様と実装をコンパクトに抑える事により、手軽に搭載し、アプリケーションに合わせたカスタマイズも可能な処理系を目指しています。

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

Vnanoは現在開発進行中であり、リポジトリはGitHubで公開しています。

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

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

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

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

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

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

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

Vectrosphere VM

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

ベクトル演算とスカラ演算の両方で高い性能水準を目指すため、 アーキテクチャは基本的にはレジスタマシン型VMでありつつ、同時にベクトルプロセッサ型の側面も備えています。 レジスタやメモリーのデータ単位は全てベクトル(配列)で、 命令セットにもSIMD命令主体のVRILを採用しています。

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

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

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

VRIL出力コンパイラ LexicalCraft

LexicalCraft は、C言語系のシンプルな文法を持つVnanoのコードを、ベクトルレジスタマシン型VM用のVRILコードに変換するコンパイラ(Java®言語製)です。

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

また、アプリケーション内に組み込むという用途上、コンパイル時でのスタックオーバーフロー等の発生を回避しやすいよう、 構文解析器(パーサ)を含む全ステージを非再帰処理のみで実装する設計を採用しています。 名称も、字句(Lexical Token)の配列を折り紙(Paper Craft)のように畳んで構文木を構築していく、式パーサの処理のイメージに由来しています。

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

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

ASTインタープリタ GARNET

GARNET は、現行版のVCSSL処理系内の実行レイヤーで採用している、中間表現インタープリタ(Java®言語製)です。

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

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

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

3D描画エンジン RINEARN-X

RINEARN-X は、RINEARN でのソフトウェア開発に使用している、100% Java®言語製の簡易3D描画ライブラリです。

もともとは リニアングラフ3D の描画エンジンから派生したもので、 現在は VCSSL3DCG機能 の下層レイヤーなどに採用しています。

RINEARN-X は、2009年頃に外部への一般公開を行ったものの、 その後の公開バージョンおよびドキュメントの更新やメンテナンスは、現在停止中となっています。

これはVCSSLの開発に伴って大幅な改修を行ったためで、 将来的には、再び一般公開に向けたバージョンおよびドキュメントの再整備を計画しています( そのタイミングにおいて「 BlockMount3D 」に改称予定です )。

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

その他

先行開発版はこちら

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

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

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

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

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

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

リニアングラフ3D/2Dが連番ファイルのアニメーションに標準で対応
2019年07月17日 - リニアングラフ3D/2Dでは、7月17日公開の最新版より、連番ファイルを連続的に読み込みながらアニメーション描画するプログラムを同梱し、メニューから標準で使用可能になりました。その概要をお知らせします。

Vnanoのスクリプトエンジンアーキテクチャ解説2: コンパイラ
2019年07月03日 - オープンソースで開発中のスクリプトエンジン「 Vnano 」のアーキテクチャを解説する連載の第2回です。今回は、スクリプトを中間コードへと変換する、コンパイラ部分の内部をクローズアップして解説します。

コードアーカイブ新着
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
公式Twitterアカウント