abdev

開発者用Wiki立ち上げ中…

新たに下記URLにて開発者向けのコンテンツを展開していこうと思います。まずはライブラリの仕様決定を行う場としてWikiを立ち上げます。 自前サーバーで元気に稼動中。開発者用Wiki http://dev.activebasic.com/dev_wiki/ 今日はリファレンスを書いていただ…

GC実装 × 最終段階

ぎこちなくではありますが、GCとして動作するライブラリがほぼ出来上がりました。あとは、セーフティで安全にABユーザーの皆様にメモリ管理を行ってもらえるよう、下記のような点に重点を合わせて作業を進めていこうと思います。 既存ソースコードの互換性を…

一歩賢いインデント

OverTakerさんのブログでインデントについての面白い記事を読ませてもらいました。 OverTakerの日記: http://d.hatena.ne.jp/OverTaker/20060918 ウーム、ただ単にTABインデントをしやすくするのではなく、コードの意味に応じて見やすい形式にインデントを整…

少々厄介なオーバーロードバグ

とあるユーザー様から、下記のようなコードがうまくコンパイルできないというバグ報告をいただきました。 function func(n As double) as String print "double";n endfunctionfunction func(n As dword) as String print "dword";n endfunctionfunc(123) '…

GCの一般公開へ向けて

本日はmark&sweepの手法で実現されるであろう次期ABのGCについてのコーディングを行いました。特に手を加えた部分はスウィープ(メモリ収集)のタイミング。使用メモリが上限値に達するまでは全速力でプログラムが実行されるため、GCが発動しないうちは従来…

新しいヘルプセンターの構想

AB5ではワンランク上のヘルプセンターを用意していきたいと思います。単にHTMLベースのコンテンツを提供するのではなく、コンテンツデータをXMLデータベースとして管理し、リッチクライアント的な一つのアプリケーションとして用意できたらと考えています。 …

CP2のバグ修正

Stringクラスへの移行、GCの実態調査など、やりたいことに一通り目を通せたので、今日は一旦、CP2リリースで出たフィードバックを元にバグ修正を行いました。 本日のBGMはカントリーミュージック。デバッグ作業もストレスなく進みました。 LuckySevenRadio -…

早速、GCの実装サンプルをコーディング

調べ物をするだけではわからないので、早速、動くものを作ってみました(下記コードを参照のこと)。 /* ※これらの変数はコンパイラが自動的に定義します。 Dim _System_gc_GlobalRoot_StartPtr As VoidPtr Dim _System_gc_GlobalRoot_Size As Long Dim _Sys…

ガベコレ調査報告

さてさて、今回もABでどのようなGCを採用するのがよいかという話題で突き進みます。まずは私なりに考えるGCへの要望をまとめたいと思います。 解放のタイミングの一切をシステムに任せる。 GCシステムにより確保されたメモリへのアクセス違反は原則として起…

[]演算子オーバーロードとインデクサの違いって何?

何度も話に出てきている通り、開発者向けにコッソリとリリースさせてもらっているAB5β4ではString型への添え字アクセスへの対応が微妙です(新String型への移行を全く行っていないAB5CP1では問題ないです)。例えば、 Dim s As String Dim c As Char s="test…

ガベコレの本格導入へ向けて

まずは調査から。一般的に、GCと言うとJavaや.NET言語で採用されている印象がありますね。確保されたメモリを自動的に解放してくれるというプログラマにとっては非常にありがたい機能、強いて言えば一度でもコレに慣れてしまうと、C言語のmalloc/freeには戻…

文字列操作に強い言語

皆さんは、文字列操作に強い言語といったら、何を思い浮かべますか? 私は正規表現を標準完備し、変数と文字列の親和性の高いPerl、PHP、Rubyなどを思い浮かべます。これらの言語はHTML、JavaScriptなどの二次的な言語(または自身の言語コード)の生成が要…

String型、開発中・・・

たかがString型、されどString型ということでコンパイラの再設計をしているところですが、AB5でどこまで言語仕様を落とし込むかが問題です。 確かに、演算子のオーバーロードを用いれば、String型をクラスモジュールとして実装することは可能です。今現在、…

新しいString型、CP2で間に合うか!?

今、私のPCの中にあるABを構成しているソースコードでは、従来のString型の前面撤廃がなされています。その代わりに、AB5CP1のライブラリに含まれている開発途中のCStringがそれに取って代わる存在になりつつあります。 しかし、現状のCStringを従来のString…

ブレークポイント

AB5CP1で未完成の機能の一つに「ブレークポイントの設定/解除」があったと思うのですが、本日、その機能のおおよその部分が完成致しました。 これでDebugステートメントの嵐から抜け出すことができます。「いざデバッグコンパイルしたものをエクスプローラか…

安定な結婚の問題

とうとう追加されましたね、このコードネタ。私がアルゴリズム事典を初めてめくったときに「面白い名前のアルゴリズムだな〜」と感じていたのですが、まぁこう思った方は私だけじゃないはず。 合コンのネタとかに使った方なんかは、やっぱいらっしゃるんでし…

コンパイル時間

今更ですが、VC++6.0からVC++2005への移行作業をabdev.exeソリューションに対して行いました。ABプロジェクトのほとんどがVC++2005またはAB5で開発されているのですが、肝心のエディタの開発環境はVC++6.0のままだったというわけです(まぁ、それだけVC6の完…

マニフェストをリソースに格納せよ!

ということで、本日は空いた時間を活用してABが生成するEXEファイルのリソースにマニフェストを持たせられるようにしました。 操作方法は簡単です。適当にマニフェストを記述したXMLファイルを用意し、プロジェクトオプションから設定するだけ。もちろん、新…

ビジュアル スタイル マニフェスト

最近、Windows Vista Beta2を導入し始めていることもあり、今後のGUI周りの変貌に是が非でもついていかなければと感じさせられてしまいます。 ってなことで、今まではなんとかごまかしながら見過ごしてきたXPのビジュアルスタイルのマニフェスト設定をABでも…

AB5CP1公開完了!

ということで、AB5評価版の公開作業、一段落です。 公開前に滑り込みセーフでWindows Vista Beta2での動作確認をとりました。Vistaはセキュリティ周りがかなり強化されているようで、レジストリの書き込み部分(関連付け)の動作がちょっと怪しいことをのぞ…

ActiveBasic 5.0 Customer Preview

AB4の最終版をリリースしてから、早4ヵ月弱が過ぎてしまいました。一般的なソフトウェアの更新率から言えば対して間が空いている状態ではありませんが、発展途上に置かれているABにその方程式は当てはまらないものと考えています。 AB5では、言語仕様的な改…

デバッガの開発、再スタート

最近、言語ロジックばかりに作業リソースを費やしすぎていたので、ここらで気分を変えて、中途半端になっていたデバッガの作りこみを再スタートさせようと思います。 まず、AB5に搭載されるプロセスデバッガ、下記のような要素をカバーできるように改良を行…

CStringクラス

オペレータのオーバーロードがほとんど出来上がったので、試しにCStringのデモコードを書いてみました。 Class CString Public m_lpszBuffer As LPSTR m_length As Long Sub CString() m_lpszBuffer=calloc(1) m_length=0 End Sub Sub ~CString() free(m_lps…

オペレータのオーバーロードは予定通り

オペレータオーバーロード、ロジックはそのままで、64コンパイラへの対応を行いました。ロジックがそのままなら、コードをポンづけで対応したいところなのですが、演算過程のレジスタ割付とかが違っているので、ちょっと手直しをしなければなりません。量は…

欲張ってます

AB5のリリース時期を大幅に遅らせているワケですが、なかなか見切りがつきません。AB5として、実装させたい機能が次から次へと出てきていて、混乱ぎみなのです。まぁ、これはこれで深刻には捉えていませんが、整理する必要があります。公式情報とはいきませ…

C→ABへの変数宣言文の置換

C/C++で書かれたAPIをABに移植する際、エディタについている置換機能の中で、正規表現による置換を使うと非常に効率よく作業が進みます。 例えば、下記のような置換を行うと、大文字の型名の変数宣言文がAB向けに書き直されます。 検索する文字列: ([A-Z]+) …

クラス管理用クラス

オブジェクト指向対応型のプログラミング言語を実装する上で、クラスの管理は欠かせないものになります。というか、それが全てだといっても過言はありません。少なからず、コンパイラの内部でクラスに関するすべてのデータを持ち合わせ、照合を行いながらコ…

仮想関数周りの処理

JavaやC++、C#などでは当たり前のように使ってしまう仮想関数。同じ名前のメソッドでも、そのクラスの階層、はたまた時系列によってその内容は変わっていくという不思議な存在であります。また、モジュール設計を重視する上では非常に便利で有効な手段です。…

デバッガのアタッチ機能

ここ数日、最適な室温のおかげなのか要因は不明なのですが、開発作業時の集中力がいつもよりも高いような気がします。 そこで、なかなか手を出せなかった機能の一つ。デバッガのアタッチ機能に取り組んでみます。 デバッグを行う上で、プロシージャ階層やス…

デバッガのアタッチ機能(その2)

ヒマな時間を活用して、がっつり作りこみました。 Win32/Win64アプリ共にアタッチを行えます。デバッガの32/64切り替えはIDEが自動的にやってくれるので、ユーザーは意識しなくてよい仕様に仕上がりそうです。 今のところ、問題はなくテスト稼動が遂行してお…