AB5 CP5リリース作業が完了しました。

abdev AB5 CP5リリース作業が完了しました。 はコメントを受け付けていません

一般向けにリリースをは一年ぶりでしょうか。ビルド作業をバッチ化しているとはいえ、最終テストや文書の整理などでリリース作業に少し時間を費やしてしまいました。

AB5はコンパイラ、IDEだけではなく、リファレンスやフォーラムも含めて最終版を整えたいと考えています。まだまだ改良の余地がありますので、引き続きぼちぼちやっていきます。

早速ですが、まずはリファレンスがないと何もできませんよね。しかし、このリファレンスというものがクセ者で、作成するのは大変だし、実装と異なる記述がしてあっても問題ですし…。

そこで、ライブラリソースコードから自動的にドキュメントを生成できるツールを作ってみようと思います。まぁ、doxygenのようなものです。作るは大変なので、もしかしたら既存ツールのカスタマイズで対応できればそちらを選びたいところです。

AB5 CP5

abdev AB5 CP5 はコメントを受け付けていません

Webサイトのほう、かなり滞っておりますが、遅くとも7月頭にはリリースできそうです。

IDE概観に変わりはないものの、ジェネリクスへの対応をはじめとする言語仕様の大幅な改良が実施されているCP5。ビルド速度の向上、独自の静的リンクライブラリ生成機能による複雑な構成管理への対応なども行っておりますので、是非ともお試しいただきたいです。

GC最適化

abdev GC最適化 はコメントを受け付けていません

昔作ったAB製のアプリを最新のAB5βで動かすと、結構遅く感じます。速度に関する一番の原因は恐らくGC。マーク&スウィープはリアルタイム性を持ち合わせたいプログラムには少々不適合です。

そこで、世代別GCへと改良を行います。ABはアンマネージドベースのネイティブコードがベースになってそれぞれの言語機能を提供しているため、Java VMやCRL上ではサポートされるオブジェクトの暗黙的な移動が行えません。即ち、コピーGCやメモリコンパクションは行えないということになります。

こうなると、世代間GCへの移行は少々難しいのではないかと思われますが、そこは頭をひねって回避できそうです。メモリオブジェクトにマークをつけることで擬似的なコピー動作を生み出し、メモリインスタンスは不動のままコピーGCに似通った制御が可能です(本当の意味でのコンパクションは行えませんが、このご時世、それが致命的になる可能性は低いと仮定します)。

まずは、メモリオブジェクトの年齢制御、Old空間からNew空間への参照をリアルタイムに検地するライトバリア機構を導入することにします。

おそらく、この改良で結構な速度改善が得られるはず。GCによる回収処理で生じるスレッド停止時間は大幅に軽減され、体感できなくなることでしょう。

インターフェイス周り実装完了。そして…

abdev インターフェイス周り実装完了。そして… はコメントを受け付けていません

ついに実装ハードルが高かったインターフェイス機構の開発が完了。インターフェイス周りに関しては仕様的にも一通りの部分が完成しました。

お次は列挙型同士をor演算可能にすることと、デリゲートのInvoke系を実装するところでしょうか。更にそれらが完了したら後回しにしまくっていた例外処理機構の実装になります。

早いところ、IDEインターフェイス周りの改修に入りたいところです。

CMS導入中…

abdev CMS導入中… はコメントを受け付けていません

そろそろAB5も世に出そうということで、この際サイト再構築をササッと片付けてしまおうと思います。

一時的にご利用になれないコンテンツなどが存在するかもしれませんが、何卒ご容赦ください。今週中に今までのサイト機能のすべてを復旧させたいと思います。

あとは、CMS導入を通してサイト更新頻度を増やしたいところ。FTPアクセスが面倒で更新が滞っていた一面もあったので、ab.comの再燃を願いたいところです。

そんなこんなで今日は徹夜です。

インターフェイス機構実装中

abdev 23 Comments »

GC、ジェネリクス、デリゲートと、高度な言語処理機構を実装してきましたが、引き続き、インターフェイスのサポートを可能にすべく作業を進めます。

なんといっても、一つのクラスで複数インターフェイスの実装を可能にし、更なる共通性の向上が行えるのが嬉しいところ。ABでは、vtblに関してはC++の内部実装を参考に開発を進めていましたが、今回インターフェイスのサポートを行うことで、vtblリスト→vtblという形で一回層分、情報を挟む形になりました。

しかし、C++の内部実装を崩すことでCOM操作が一時的にサポート外ということになります。おそらく、COMあたりはLegacy Interfaceということで別枠対応を行おうと考えていますが、ちょっと難易度が高そうです。

インターフェイス実装時に基底クラスメソッドの取り込みを行うかどうか、同一メソッドを有する複数のインターフェイス実装をどのように行うかなど、いくつか課題が残っているので併せて対応が必要そうです。

今回も一区切りつけるにはもう一頑張り必要かも…

2007年度未踏ユースブースト会議

abdev 2007年度未踏ユースブースト会議 はコメントを受け付けていません

2年ぶりにブースト会議に参加していますが、オモシロイっすね~。

気が付いたら私もオービーですよ!

前々年度でも「ウダー」が人気プロジェクトにあがっていましたが、今年も音楽ツールが出ています。しかもパッと見カッコイイ。インタプリタと空間的な音楽を組み合わせたような発案が聞けました。

http://www.ipa.go.jp/jinzai/esp/2007youth

未踏ブースト会議には、夜の部という素晴らしい枠があり、オービーは5分プレゼンせよ!みたいな感じになっています。私はAB開発の進捗ということで話をしましたが、ホント、早くVer5.0を世に出せるようにせねばならないです。来年のブースト会議のOB枠では、リリース後の様子を語りたいっす。

明日も引き続き発表が聞けるのでワクワクですよ!

Happy Friday with クジラ飛行机さん

abdev Happy Friday with クジラ飛行机さん はコメントを受け付けていません

今週も開催されました。Happy Friday☆

おいらの会社では、毎週金曜日の夜は職場で立食会?のようなものが開かれるんですよ。ただ単に飲んで食べるだけではなく(まぁ、そういう時もありますが…)、旬の技術話題に関する発表を誰かがすることになってるんです。

てなことで今週は珍しく「なでしこ」「葵」開発者の酒徳さん(クジラ飛行机さん)においでいただきました。そこでは旬の話題でもあり、酒徳さん得意分野のFlash Flexについての勉強会を開催してもらったんです。

内容は、Flexの簡単な説明から入り、簡単な構文の紹介やXMLとの連携の手軽さ、豊富なコンポーネントをポイポイ使う場面など、盛り沢山でした。いつものことながら、酒徳さんプレゼンは分かりやすくて良いです。参加者ほぼ全員、Flexの魅力に取り付かれていました。質疑応答でも多くの質問が飛び交い、最近のHappy Fridayの中ではかなり有意義な時間になったと思います。

酒徳さん、ありがとうございました~☆
またそのうち飲みにでもいきましょう!

http://aoi-project.com/pblog/article.php?id=44
(’くじらはんどぶろぐ’ にプレゼン資料が置かれています)

boost::serializationでリンカ開発

abdev boost::serializationでリンカ開発 はコメントを受け付けていません

AB5の最新リビジョンで静的リンクライブラリの生成及び静的リンクが可能になりました。今朝、それをコミットしたところ。久々のコミットです。

ここ一ヵ月半くらい、静的リンクライブラリの実装に伴う大規模なリファクタリング作業が発生していたため、外部へのコミットができずにいました。何かアウトプットが出せずに作業だけが次々と発生する。これはマジつらいです。自分は何か外に排出していかないといてもたってもいられない性格なので前みたいにコマメなアウトプットを心がけたいもんです。

と、ここらで本題、、、

EXE/DLL/LIBなどのファイルを作るうえで大変なことの一つに、データをストレージする際のフォーマットを熟知していなければならない点があります。EXEファイルを生成した場合は、WindowsのPE/COFFフォーマットに沿ってデータを格納しなければ動いてくれないため、その辺りはハードコーディングになりがちです。

また、静的リンクライブラリというと、単なるコンパイル済みの断片的なネイティブコードではなく、下記のようなデータを管理し、適切なタイミングで結合してやる必要があります。

– クラス情報
– アクセシビリティ情報
– メソッド情報
– メンバ情報
– 継承関係

– グローバル変数・定数
– グローバル関数
– ネイティブコードとソースファイル行番号との対応関係
– 名前空間情報
…etc

上記は必要なメタ情報のごくごく一部。これらのデータ構造を定義するcppヘッダファイルだけで数千行はいってます。

で、問題なのはこういう大きめなデータ構造を依存関係を保持しながらファイルにストレージしたり、読み込んだり、はたまた結合したりする処理をどうするかといったところ。Read/Writeをハードコーディングするのは骨の折れる作業です。

そこで大活躍したのがboost::serialization。オブジェクトを依存関係を保持したまま、ゴソッとストレージしてくれるライブラリです。

http://www.boost.org/libs/serialization/doc/index.html

データ形式としては、XML、テキスト、バイナリがあります。XMLは読み書きに時間を要するため、テキスト・バイナリをチョイス。ABが生成する静的リンクライブラリはboost::serializationによって生成されるオブジェクトフォーマットになっているんです。

週末はがんばってブログもう一本書きたいな~書けるかな~

linking now…

abdev 3 Comments »

最近忙しくて開発者フォーラムに顔を出すことができていません。開発者の皆さん、すみません。

しかし、決して開発がストップしているわけではありません。言語仕様の拡張はもちろんですが、コンパイラエンジンのベース部分の改良が進行中です。

開発者の方々はAB5のライブラリを作っていて下記のような感想をお持ちでしょう。

「標準ライブラリが充実するにつれて、コンパイル速度やEXEファイルのサイズが大きくなっているよな…」

そう。単純な話、ソフトウェアが扱うリソースが大きくなればシビアな環境が要求されます。

ということで、最近は言語仕様の拡張に費やす時間を少々削いで、もっぱらリンカの開発に取り掛かっています。

AB5のコンパイラは充実したリンカを保有する形式を考案しています。このリンカ、どのあたりが充実しているかってのがポイントになるわけですが、、、

・メタ情報をフルに持ち合わせる
・コンパイル済みのネイティブコードを保有している
・32/64ビット共に同じ内部仕様を持ち合わせる
・オブジェクトファイルをXML形式、CVS形式、バイナリ形式など任意の方式で生成できる

一番重要なのは一番目のメタ情報を持ち合わせる点でしょう。コンパイル済みのオブジェトファイルをインポートすれば、そこ含まれるクラスが完全にオープンな状態で利用することができます。

あともう少しでこれらの環境を公開できそうなところです。本当に申し訳ないのですが、開発者の皆さん、今しばらくお待ちください。

どちらにせよ、今後の開発に備えた大規模なリファクタリングが必要だったので、ここら辺の力仕事はササッとこなしたいとこです。

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン