// ------------------------------------------------------------ // Perl/栞 version 1.1.17 (α-Release) // ------------------------------------------------------------ ♪ これは何? 栞をperlスクリプトで実装するための栞DLLです. 一番低レベルレイヤのload/unload/request要求を perlスクリプトのon_load/on_unload/on_requestに呼び出すだけ です. ♪ LISENCE 里珠は Perl と同様に Artistic もしくは GPL で配布されます. ♪ Contents build/ ソースファイル (VS.Netソリューション) modules/ Perl モジュール及び DLL readme.txt いま読んでるファイル rishu.dll 里珠本体 rishu.pl サンプルソース (役立たず) rishu_test.exe テストプログラム ♪ Rishu::の変数 Rishu::VERSION 里珠のバージョン Rishu::dllname rishu.dll のファイル名を含めた位置 Rishu::perldll perl-dll の位置. Rishu::dirname rishu.dll のあるディレクトリ Rishu::scriptname rishu.pl の位置 それぞれのディレクトリは, 栞 DLL の init 関数に渡されたものを基準に 設定されます. ♪ HISTORY 1.1.17 (2002/08/18) ・LWP追加 ・多分 fork が動く模様 (後述の win32-fork の項も参照) 1.1.16 (2002/08/07) ・perl を vc7/STLport と static リンク. 1.1.15 (2002/08/07) ・rishu.dll を vc7 と static リンク. 1.1.14 (2002/08/04) ・perl-5.8.0 でこんぱいるしてみました 1.1.13 (2002/07/06) ・PROCESS_DETACH時にperlのDLLハンドルが残ってたら解放するように 1.1.11 ・perl-dllをmodules/.../perl58.dllのみを使うように 1.1.10 ・perl-5.8.0-RC1用に修正 1.1.9 ・クリティカルセクションがネストしてたら表示するように. 1.1.8 ・load/unload/requestにクリティカルセクションを張る. ver 1.00 ・module/ を modules/ に変更 ・perl56.dllを, Perl_Shiori.plのディレクトリから捜すように修正. ・Perl_Shiori.plのディレクトリを@INCに追加 ・$Shiori::CORE::VERSIONを設定. ・importsにPV_sv_setpvが追加. ver 1.00 RC1 ・CPANからビルドしたバイナリ/モジュールも同梱. ・起動スクリプトを Perl_Shiori.pl に変更. ver 0.06 ・ActivePerlのperl56.libとのリンクをはずす. ver 0.05 ・XSモジュールが使えなかったのを修正 ・ENDが起動直後によばれちゃうので修正 ver 0.04 ・perl初期化に失敗したら実行しないように修正 ・loadの引数の位置にあるshiori.plを実行 ver 0.03 ・perlスクリプトのグローバル部分を実行するように変更. ver 0.02 ・extern "C" が抜けていたので修正. ver 0.01 ・とりあえずつくってみた〜. ♪ Win32-fork fork は ithreads (interpreter-thread) を使って擬似的に実装されてい ます. 擬似子プロセスは, 親 interpreter の複製の, 別スレッドでの実 行となります. このため, この擬似子プロセスである子 interp を, 親 interp の終了に巻き込まないように, 親 interp の破棄のタイミングで, すべての子 interp の終了を待ちます. fork を使う里珠スクリプトでは, on_unload 時に, すべての子プロセスを kill するといった処理を加えるべきです. メモ: perl ソースの該当箇所. -perl.c:334 /* wait for all pseudo-forked children to finish */ PERL_WAIT_FOR_CHILDREN; -win32/win32.h:466 # define PERL_WAIT_FOR_CHILDREN \ ♪ 配布元 http://www.mikage.to/PerlShiori/ (YAMASHINA Hio, ) とあるirc networkの #Perl栞 ♪ 関連 なゆき (里珠を使ったフレームワーク) http://nayuki.sherry.jp/ (SAWATARI Mikage) ♪ perlのビルドに使った設定(Makefile/5.8.0-RC1) (ccflags) -nologo -Gf -W3 -MT -DNDEBUG -O1 -D_STLP_USE_STATIC_LIB -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MT によって, VC と static リンクしています. -D_STLP_USE_STATIC_LIB によって, STLport と static リンクしています. STLport は http://www.stlport.org 参照. (Makefile) * : 修正した設定 : (空白) デフォルトのままの設定 INST_DRV = c: * INST_TOP = $(INST_DRV)\pkg\perl-5.8.0-RC1 * INST_VER = \5.8.0 * INST_ARCH = \$(ARCHNAME) USE_MULTI = define USE_ITHREADS = define USE_IMP_SYS = define USE_PERLIO = define #USE_5005THREADS = define ? #CCTYPE = MSVC60 #CFG = Debug #USE_PERLCRT = define #USE_SETARGV = define * CRYPT_SRC = fcrypt.c #CRYPT_LIB = fcrypt.lib #PERL_MALLOC = define CCHOME = $(MSVCDIR) CCINCDIR = $(CCHOME)\include CCLIBDIR = $(CCHOME)\lib fcrypy.c は次の場所から. http://downloads.ActiveState.com/pub/staff/gsar/fcrypt.c あとたしか DEFINES に -D_STLP... に追加して, OPTIMIZE の -MD を -MT にした様な…. ( ### CHANGE THESE ONLY IF YOU MUST ### の先の, Options のあたり ) __END__