Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > ff948e91b498086e89e1dd0e9ebc6aa0 > files > 12

saphire-3.5.3-1.fc14.i686.rpm


2011 9月28日 3.5.3

    ./configure --with-debug以外でコンパイルが通らなかったので修正。

    exitした後の廃棄処理でセグフォしていました。修正。

    Debian 6
    OSX 10.6で確認

2011 9月28日 3.5.2

    completion.saを追加。カスタマイズ補完が可能になってます。
    
    completion コマンド名 .... { ブロック }
ブロックの出力がコマンドの補完候補です。コンテキストパイプには入力中のコマンドラインが入ってます(コマンド 引数1...)の形式で。ブロックの出力のリスト形式(改行区切りのテキスト)が補完候補となります。

    global, ary, hash, def,class,ref,objectの補完をreadline.cではなくcompletion.saでやってます。 みれば補完のカスタマイズの仕方が分かるかもしれません。

    sub, eraseの-g無し, -m無しの場合変換結果がおかしかったので修正。

    boehm GCを外しています。一応テストしていますが完璧ではないのでメモリリークや2重FREEでのセグフォなどがあると思います。あしからず。./configure
--with-debugでコンパイルしていただいてリークしている場所を報告していただけると助かります。

    -newオプションで配列やオブジェクトを作った場合自作のリファレンスカウントGCが有効となってごみ集めを行うようになりました。

    > ls | ary -new | ref a
    > ary $a
    main.c
    ....

    > sweep a

    ary -newのオブジェクトがごみとなる

    > sweep -gc
    1 object deleted

    存在しないリファレンスへのアクセスがセグフォしていましたが修正。

    > ls | ary -l a; ary -l a | ref x
    > ary $x
    invalid refference

    > ls | ary a; ary -mem a | ref x
    > sweep a
    > ary $x
    invalid refference

    mfiler3にはまだ対応していません。mfiler3ではsaphire-3.5.1をお使いください。

2011 9月3日 3.5.1

     cygwinでcygwin同封のgcとのコンパイルに対応しました。自分でコンパイルしなくて良くなりました。

     hash で参照する場合はキーのアイテムが無い場合はリターンコード1にしました。

    mfiler3へは影響しません。

    cygwin 1.7.9で確認。
    OS X 10.8.0で確認。

2011 8月30日 3.5.0

    @@()に仲間が加わりました。@@a(), @@m(), @@u(), @@w()です。
    それぞれ配列の区切りを\a, \r, \n, \r\nとして要素を一つずつ引数にします。

    > ls | ary a
    > puts @@a(ary -La a)

    macro内部コマンド追加。インタラクティブシェルでCtrol-Xが押されたときに実行され出力をコマンドラインに貼り付けます。

    fselector ファイル選択メニューコマンド追加。

    selectorをキャンセルしたときにバグがありました。readlineが落ちたりしていたはずです。

    shift ユーザー関数追加(saphire.sa)

    var,globalに -shiftオプション追加

    ヒストリファイルの読み込みにバグがありました。SAPHIRE_HISTSIZEが巧く動いていなかったはずです。
    
    ヒストリー操作をするhistory, add_history, write_history, read_history,
	clear_history, remove_history コマンドを追加。

    mfiler3への影響はユーザー登録の内部コマンドの引数が変わったためmfiler3-4.2.2以下だとコンパイルが通らなくなっているはずです。mfiler3-4.2.3に上げてください。

    ソースファイルのコンパイル形式が変わっています。再コンパイルお願いします。

    cygwin 1.7.9で確認。
    OS X 10.8.0で確認。

2011 8月21日 3.4.9

    内部コマンドとユーザーが追加した内部コマンドに対してもinheritできるようになりました。

    > def exit { msleep 3; inherit @@(ary ARGV) }

    > exit
    msleepしたあとにexitされる

    > def cd { inherit @@(ary ARGV); ls }
    > cd /
    lsの結果表示かつcd

    これはmfiler3の内部コマンドでも同様です。

    cygwin 1.7.9で確認

2011 8月21日 3.4.8

    saphireのsort内部コマンドをssortと改名。

    migemo補完のアルゴリズム改良。ファイルが多数あるディレクトリで速くなったと思います。

    OS X 10.7で確認

2011 8月21日 3.4.7
    ary_add -pのバグを修正しています。

    OS X 10.6で確認

2011 8月21日 3.4.6

    シングルクォートとダブルクォートが閉じていないとエラーが出るようになりました。

    jump, menuコマンドを追加。

    def, classに-overrideオプションを追加。

    def, classに入力時にリファレンスが使えるようになりました。

    selectorで選択されなかったらnon zero rcodeでなくてエラーを返すようになりました。

    object, ary, hash, global, def, classに-newオプション追加。

    リファンレスのオブジェクトの補完、リファレンスの関数、リファレンスのクラスの補完が可能になりました。

    OS X 10.6で確認

2011 8月15日 3.4.5
    リファレンス参照の検索アルゴリズムが変わりました。

    名前のアクセス順は
    ローカル変数 -> オブジェクト属性 -> グローバルオブジェクト

    となっています。

    以下のコマンドで変数名の補完が有効になりました。
    ary, ary_add, ary_erase, hash, hash_add, hash_erase, def, class, object, ref, global, sweep

    $に続くリファレンスの展開の補完が有効になりました。

    OS X 10.6で確認

2011 8月15日 3.4.4
    クラス呼び出し時に引数を取れるようになりました。
    
    >object a b c { ary ARGV }
    b
    c

    > class H { ary ARGV }
    > H a a b c
    a
    b
    c

    > object a; a->class { ary ARGV } a b c
    a
    b
    c

    > class H { ary ARGV }
    > object a; a->class H a b c
    a
    b
    c

    cygwin 1.7.9で確認

2011 8月15日 3.4.3

    C-xによるファイル名選択で貼り付けるときに特殊文字はクォートするようになりました。

    ハッシュの総数について基本的なライブラリ内にバグがありました。修正。影響は大きかったはずです。

    ary_add -a 廃止

    ary_add 変数名 引数1....を廃止

    ポインター変数の廃止。仕様変更すみません。パフォーマンスが全然でないので。。。

    > hash a
    > ary a
    などで空のハッシュや配列を作るようになりました。

    hash, ary, object, var, global, def,
	classに-memオプションを追加。これらの変数のアドレスを出力します。
	変数名の名前やクラス呼び出し、関数呼び出しの名前の所でアドレスを書くとその変数や関数にアクセスします。つまり

    > ls | ary a
    > ary -mem a
    0x12345678
    > ary $(ary -mem a)
    ls の出力

    クラスや関数や変数の名前で0xに続くものはアドレスとして扱われます。

    ref内部コマンドの追加。リファレンスを扱えるようになりました。
    > ls | ary a
    > ary -mem a  |ref x
    > ary $x
    lsの出力
    > pwd |ary_add $x
    > ary $x
    lsとpwdの出力

    のような使い方をします。名前で$をつけるとリファレンスのメモリにアクセスできます。

    > ary -mem a | ref
    Array

    とrefだけならメモリに入っているオブジェクトの種別が分かります。

    リファレンスは-lでローカル変数として、クラスの実行内では属性として扱われます。

    関数やクラスもリファレンスとして扱えます。

    > def fun { puts fun }
    > def -mem fun | ref x
    > $x
    fun

    > class Klass { puts Klass }
    > class -mem Klass | ref x
    > $x a
    Klass

    この場合の名前のアクセス順は
    ローカル変数 -> オブジェクト属性 -> グローバルオブジェクト

    となっています。

    オブジェクトもリファレンスとして扱えます。

    > object a { def yes { puts yes  } }
    > object -mem a | ref x
    > $x->yes
    yes

    この場合の名前のアクセス順は
    ローカル変数 -> オブジェクト属性 -> グローバルオブジェクト

    となっています。

    ary_eraseで0以下のインデックスは最後尾から数えたインデックスとして扱われるようになりました。

    Debian 6で確認
    OS X 10.6で確認
    FreeBSD 8.2で確認
    Oracle Solaris Express 11で確認
    cygwin 1.7.1で確認(自分でコンパイルしたboehm gc 6.8をリンクして)

2011 8月6日 3.4.2
    msleepが引数無しだと落ちていたバグを修正
    ary 変数名 インデックスで範囲外のインデックスだった落ちていたバグを修正
    パイプのバッファの読み込みにバグがありました。saphire -c でおかしかったはずです。

    def 関数名による関数の出力がおかしかったバグを修正。

    objectとクラス名 オブジェクト名に-l, -gオプションを追加。オブジェクトをローカル変数にすることができます。

    cygwin 1.7.9 で確認。
    OS X 10.6で確認

2011 8月5日 3.4.1
    scan, sub -g, erase -gで大きなファイルを扱った場合パフォーマンスが圧倒的に上がってます。100倍近く?
    (-mオプションを使った場合はそのままです)

    cygwin 1.7.9 で確認。
    OS X 10.6で確認

2011 8月4日 3.4.0
    リダイレクトの処理でexitができなくなることがあったので修正

    関数とクラスのsweepで-f,-cをつけなくても名前だけで消せるようになりました。
    > def fun { puts fun }
    > sweep fun
    funが消える

    time 内部コマンドの追加

    each, linesなど行読み込みをするコマンドのパフォーマンスが圧倒的に上がってます。100倍近く?

    cygwin 1.7.9 で確認。
    OS X 10.6で確認

2011 7月30日 3.3.5
    while,select, ifの戻り値を期待通りに変更。おかしい動きしてました。

    tryがパーサーで特別扱いされないようになりました。戻り値が期待通りになりました。

    リダイレクトの処理が変わっています。
    いままでリダイレクトの後は文字列でのファイル名しか取れなくて

    > ls > @(print a)

    ができませんでしたが、できるようになってます。

    > ls > >(head)

    とかも。

    ソースファイルのコンパイル結果のファイルの形式が変わっています。再コンパイルしてください。

    cygwin 1.7.9 で確認。
    OS X 10.6で確認

2011 7月28日 3.3.4

    defの引数がdef a(aaa) --> def a -a aaaという書式になってます。

    def文に文字列を読み込ませるとその文字列で関数を定義します。
    すでに定義された関数をdef 関数名 すると関数の定義内容が見れます。

    > print "puts yes; puts yes" | def a
    > a
    yes
    yes
    > def a
    puts yes; puts yes

    class文に文字列を読み込ませるとその文字列でクラスを定義します。
    すでに定義されたクラスをclass クラス名 するとクラスの定義内容が見れます。

    > print "puts yes; puts yes" | class a
    > a a
    yes
    yes
    > class a
    puts yes; puts yes

    def に-Aオプションを追加

    self内部コマンドを追加

    親オブジェクトの属性に子供のオブジェクトは参照できるようになってます。

    > class A { print 1 | global a; object a { global a | pomch }; }
    > A a
    1

    while, selectの戻り値がおかしかったバグを修正。

    ソースファイルのコンパイル結果のファイルの形式が変わっています。再コンパイルしてください。

    cygwin 1.7.9 で確認。
    OS X 10.6で確認

2011 7月20日 3.3.3
    sub のグループ化で複数のブロックを取るのを止めてグループ化した文字列は数値の名前を持つローカル変数に代入するように変更しました。ブロックは一つで1,2,3...という名前を持つローカル変数にマッチしたグループ化文字列が入っています。

    > print abcdbcgg | sub -g '(.)(.)' { var 1 2 | join , | chomp } | pomch
    a,bc,db,cg,g

    hash,hash_addに-pオプションを追加。

2011 7月18日 3.3.2

    pointer内部コマンドを追加

    ary,ary_add,ary_erase,hash, hash_add, hash_erase,cursor -l
オプション追加。ローカル変数として扱えます。

    show に-gオプションができました。クラス内ではオブジェクトの属性が見れて-gでグローバルが見れます。

    sweepの-gオプションが-gpオプションに変更。-gオプション追加。-cオプション追加。クラス内ではオブジェクトの属性の定義が消せます。

    sweep -f, -cで名前でも関数、クラスを消せます。

    cygwin 1.7.9 で確認。
    OS X 10.6で確認

2011 7月10日 3.3.1
    objectがリターンコードnon 0を返していました。

    inheritの戻り値が期待通りではありませんでした

    リターンコードが0で無い場合のメッセージがおかしかった

    breakしたときにリターンコードがおかしかった

2011 7月10日 3.3.0
    コマンド名に*, ?がクォートせずに使用できるようになってます

    global, var, export に -lオプションを追加

    saphire_initでkanji_init, mcurses_initするように変更

    saphire_signalをsaphire_initで実行するように変更

    split -fオプション廃止

    export -aオプションの廃止

    substr -cオプション廃止

    改行コードに-La(ベル)を追加

    var, global, export, ary, ary_add,hash,hash_add, split, add, del,
    join, select, lines, scan, match, read, selector, sort, printf, pomch, each,
    p, に-Lw, -Lm, -Lu, -Laオプションができました。

    add -Lで範囲外の数値が与えられた場合失敗せずに補正をかけて実行するように変更。

    del -Lで範囲外の数値が与えられたとき失敗せずに何も消さずに全てを出力するように変更。

    lines, rowsに一つの数値でマイナスの引数がうまく処理されなかったバグを修正

    sub にブロックが複数取れるようになってます。
    グループ化の文字列ごとにブロックを実行できます。

    インタラクティブシェルでリターンコードがnon 0ならメッセージをひょうじするようになってます

    cygwin 1.7.9 で確認。
    OS X 10.6で確認

2011 7月2日 3.2.3
    終了コードのRCODEがローカル変数からグローバル変数に変更されています。
    仕様変更ご迷惑かけます。

    クラス内などでブロックのコピーが正しく行われてないためlinesなどブロックを引数に取る内部コマンドがおかしかったバグを修正。

    OS X 10.6で確認

2011 6月26日 3.2.2

    return, breakの処理が期待通りになりました。今までおざなりな実装でした。すみません。

    Debian 6で確認
    OS X 10.6で確認
    FreeBSD 8.2で確認
    Oracle Solaris Express 11で確認
    cygwin 1.7.1で確認(自分でコンパイルしたboehm gc 6.8をリンクして)

2011 6月23日 3.2.1

    object内部コマンドを追加

    inherit内部コマンドを追加

    メソッドの引数の格納先をグローバルな配列のARGVからオブジェクトの所有する配列のARGVに変更

    全てのオブジェクトにclassメソッドを追加。

    詳しくはUSAGE.ja.txt, USAGE.en.txtのオブジェクト指向の項を見てください

    Debian 6
    OSX 10.6で確認

2011 6月19日 3.2.0
    %を単独ならクォートしなくても大丈夫になりました

    class内部コマンドを追加
    メソッドコールを追加
    global, ary, hashに-gオプションを追加
    オブジェクトを追加
    オブジェクト、クラス、メソッドの補完を追加

    ヘアドキュメントに'と"によるコマンド展開のON/OFFを入れました。
    'END'などの終端文字列ではコマンド展開を展開しません。

    Debian 6
    OSX 10.6で確認

2011 6月11日 3.1.5
    日本語マニュアルの改訂

    ヘアドキュメントの追加

    プロセス置換の>()をvmで実行するように変更。より自然な動作となりました。

    コンパイルされたソースファイルの仕様が変更されています。mfiler3などにも影響があるかもしれません。

    OSX 10.6で確認

2011 6月6日 3.1.4
    hash 名前 keyだけじゃなくてhash 名前 key1 key2....が可能になりました。
    ary 名前 indexだけじゃなくてary 名前 index index2...が可能になりました。

    [ の比較に=i を追加

    envspace内部コマンドを追加。

    envspace LANG=c { date }
    環境変数LANGをcにしてdateを実行

    quote内部コマンドを追加。

    -bでbashのクォートを行います。

    > puts $$(print "<>"|quote)
    <>

    joinに-qと-Qオプションができました。

    -q 区切り文字以外にsaphireの特殊文字にクォートを施します。
    -Q 区切り文字以外にbashの特殊文字にクォートを施します。

    >print "aaa aaa\nbbb bbb" | join -q
    aaa\ aaa bbb\ bbb

    > touch $$(print "aaa aaa\nbbb bbb" | join -q)
	aaa aaaというファイルとbbb bbbというファイルが作られる

2011 5月29日 3.1.3
    lines, rowsの仕様が変わっています。
    -b -Bは廃止
    lines 0..1bなどと引数の最後にbをつけるとデータ毎にブロックを実行します。b無しだと行番号全体を処理。
    あと英字で行番号を書くと、次のブロックを実行するだけになります

    > ls | lines BEGIN { puts aaa } 0..1 { | print } END { puts bbb }
    aaa
    lsの結果1,2行目
    bbb

    コンパイルする時にブロックのデータが正しく保存されないバグを修正。コンパイルしたソースの中にあったlines,rowsのブロックがおかしかったはずです

    Debian 6
    OSX 10.6で確認

2011 5月29日 3.1.2
    ハッシュで存在しないキーをとって出力するとセグってました。凡ミスですみません。
    配列で存在しないインデックスをとって出力するとセグってました。凡ミスですみません。
    配列の出力でインデックスを取るときは0より小さいインデックスは末尾から数えるようになってます。

    Debian 6
    OSX 10.6で確認

2011 5月27日 3.1.1
    shelpでlsが実行されてしまうバグを修正
    ハッシュのサイズがリサイズされるようになりました。ハッシュのパフォーマンスに大きく影響しています。大量行のテキストをハッシュに持たせてもパフォーマンスが出るようになったはずです。

    USAGE.ja.txtを改訂

    Debian 6
    OSX 10.6で確認

2011 5月22日 3.1.0
    プロンプト表示前に端末の設定をリセットするように変更

    ls | saphire -c '| x 1000 ' | head

    がEPIPEでエラーとなっていたバグを修正。メモリーパイプでフラッシュするときにEPIPEを無視するようにした。

    make時に古いライブラリを見てしまう問題を修正

    マニュアルを修正。

    Debian 6
    OS X 10.7.0
    で確認

2011 5月18日 3.0.9
    標準出力のバッファのフラッシュ方法を変更

    変数が未定義で参照されたら空文字を出力する。-nが指定されていたら0を出力する。(var, global, export)
    hashで未定義のハッシュを出力するとセグっていた
    hash_add, ary_addで未定義のハッシュや配列にデータを流す場合、ハッシュや配列を作ってから代入するように変更
    ++, --で未定義のローカル変数を操作する場合0で初期化するように変更

    つまりawk, perlのような感じでループ前に変数を初期化する必要が無くなってます。(はず)

    コマンドライン実行前、スクリプトの読み込み時にスタックを初期化するように変更。ローカル変数はワンライナーやスクリプト内でしか使えません。つまり
    > ls / | var a
    > var a | pomch

    は空を出力します。

    > ls / | var a; var a | pomch
    bin

    とワンライナー内では有効です。
    コマンドラインをまたぐ変数を使いたい場合はglobalを使ってください

    loadでスタックを掘るように変更

    エラーが出たときのスタックの行番号の記録表示にバグがありました。修正。

    Debian 6 で確認

2011 5月15日 3.0.8
    close内部コマンド追加
    README.ja.txtとUSAGE.ja.txtを見直し。
    README.en.txtとUSAGE.en.txtを見直し。
    migemo-dictの検索位置がおかしかったようなので、修正。

    Debian 6 で確認
    OS X 10.7.0で確認

2011 5月9日 3.0.7
    STDIN pipeで標準入力が閉じられることがありました。修正。

    Debian 6 で確認

2011 5月8日 3.0.6
    boehm GCが必須になっています。
    saphire_parser.cのリファクタリング
    saphire_vmのリファクタリング
    全体のソースの整理、再読。割と読めるソースになっています

    コンパイルしたソースのオブジェクトファイルの形式が変わっています。コンパイルしたソースファイルは再コンパイルしないと挙動がおかしくなります。

    setpgidに失敗してwriter process(parent)とでて落ちることがありました。修正。
    exit,break,raise, returnなどの大域脱出の処理を期待通りに変更(eachのブロックの中からreturn,break, exitなどもOK)
    プロセス置換中に改行があった場合などでエラーの行番号が正しくないことがあったので修正
    if文やtry文で変数を使うとおかしかったこともあったバグを修正
    プロセス置換で使う一時ファイルをランダムな名前で生成するように変更

	OS X 10.7.0で確認
	Debian 6で確認
	FreeBSD 8.2で確認

2011 5月2日 3.0.5
	sub, scan, match -g でPREMATCHなどの変数の廃止。(パフォーマンスのため)
	saphire_commands.cのリファクタリング
	readline.cのリファクタリング
	saphire_parserのリファクタリング
	@,$がクォート無しでも使えるようになりました
	プロセス置換が動かなくなっていたのを修正。また<()の方はvmで処理するようになったためSTDINパイプが使えるようになってます。
	elifの条件式で変数を使うとおかしかったバグを修正

    OS X 10.7.0で確認
    cygwin 1.7.1で確認
    Debian 6で確認
    FreeBSD 8.2で確認
    Oracle Solaris Express 11で確認

2011 4月29日 3.0.3
    sortのデータの受け取り方をa,bという変数からSTDIN パイプに変更

	ls | sort { | var a b; [ $(var a) -slt $(var b) ]
	ls -al | sort { | each { | split | lines 8 } | var a b; [ $(var a) -slt
	$(var b) ] }

	パイプでメモリ関連のバグがありました。頻繁に落ちていたはずです。

    OS X 10.7.0で確認

2011 4月27日 3.0.2

	cygwinでのインストール位置を普通に変更

	configure --with-optimizeがちゃんと効くように修正。

	migemoのファイル名の補完で特殊文字をクォートしないバグを修正

    Debian 6で確認
    cygwin 1.7.9で確認
    OS X 10.7.0で確認
    FreeBSD 8.2で確認
    Oracle Solaris Express 11で確認

2011 4月26日 3.0.1

    configure に --with-optimizeオプションを作成

    Linuxで落ちるバグを修正(deleleしたstring構造体をもう一回使っていたので動く方がおかしい)

    jobsコマンドがobsという名前になっていたバグを修正

    Debian 6で確認
    OS X 10.7.0で確認

2011 4月26日 3.0.0

	saphire -c, saphire スクリプトファイルで起動した場合
	SAPHIRE_INTERACTIVEに0が入るようになりました。saphire.saも
	それに対応。

	linesで空のパイプを読み込むと落ちるバグを修正

	|>数値の廃止

	キュー、スタッカブルグローバルパイプの廃止

	ナンバーグローバルパイプの記号の変更

	saphire_shell > ls |1>
	saphire_shell > |1> print
	file1
	file2

	チルダ展開のバグを修正

	変数の参照の仕方が変わりました。変数aなら

	var a, export a, global a, ary a [index], hash a [key]

	で参照します。(参照というか出力される)つまり

	$a は $(var a), $(export a)の様に参照します。

	あとa=1; var a=2とかイコールを使った代入はなくなりました。

	print 1 | var aとしてください

	var -aの廃止

	global -aの廃止

	(export -aはあります)

	$(())による算術演算の廃止

	upto, downtoの廃止

	関数外でのvarはグローバル変数の宣言ではなくなりました。スタックフレームを使ってます

	β表示の削除。正式リリースとします。

2011 4月21日 2.0.2
    saphire_vm.cを書き直しました。プロセスはプロセスグループをそれぞれ独自で持ちます。これによってCTRL-Z(SIGTSTP)が効くのは最後の外部コマンドだけです。パイプの途中でシグナルを受けると内部コマンドでも外部コマンドでもエラーが起きます。外部コマンドは一つ起動されるごとにwaitされます。すっきりとした構造になり予想外の動作は無くなり,予想外の動作に対応するためのコードが無くなりました。(一つのプロセスを起動するたびにwaitすることによって並列動作による予想外の動きや不安定さが無くなってます)ようやくまともなシェルを書くことができました。シェルとは呼べないかもしれませんが。

    cygwinでも動作が安定しています。

    Debian 6で確認
    cygwin 1.7.9で確認
    OS X 10.7.0で確認
    FreeBSD 8.2で確認
    Oracle Solaris Express 11で確認

2011 4月15日 1.4.2
    内部コマンド実行中に子プロセスがフォアグランドになることがなくなりました。

    OSX 10.6で確認
    Oracle Solaris Express 11で確認
    FreeBSD 8.2で確認
    Debian 6で確認

2011 4月15日 1.4.1
    lines, rowsの引数は

    \*10 == \*10+0
    x10 == x10+0

    となりました。+以降を省略すると自動的に0となります。
    (初期値が省略されると0となる)

    cat big_file.txt | ary_new a
    print @a
    でCTRL-Cが効かないバグを修正

    lines, rowsでブロック前の-Bが省略できるようになりました。

    > print abcdefghi | rows x3 { | pomch }
    abc
    def
    ghi

    selector, pが落ちていたバグを修正

    ./configure --with-gcでBoehmGCを有効にできるようになりました。
    boehmGCを使った方がメモリの使用量は増えますが安定しているかもしれません。

    OS Xで確認
    Debian 6で確認

2011 4月10日 1.4.0
    Oracle Solaris 対応
    FreeBSD対応
    cygwin対応

    OSX 10.6で確認
    Oracle Solaris Express 11で確認
    FreeBSD 8.2で確認
    Debian 6で確認
    cygwin 1.7.9で確認

2011 4月6日 1.3.8
    sBlock* をsaphire_inner.hからsaphire.hに移動。

    sBlock_new2を追加。

    リファクタリング。無駄な変数などを削除。

    外部登録の内部コマンドとユーザー関数でパイプの処理時に外部コマンドと勘違いして処理されていてパイプの上限以上のデータをパイプに流すとブロックしていました。修正。

    Mac OSXで確認

2011 4月2日 1.3.6
    scanでCTRL-Cが効かないバグを修正。
    全内部コマンドでCTRL-Cが効かないようなバグが無いか確認。

    sashというプログラム名は他で使われているようなのでsaphireshに変更されました。

    addのブロックを複数取れるように変更

    ary_clear, hash_clearの廃止(sweepがあるので)

    vmの処理を変えました。内部的に共有メモリを使ってプロセスグループの変更に対応していましたが、それを止めました。tcsetpgrp関連で予想外の動きをすることがありましたが、ちゃんとした動作になったはずです。SIGCHLDハンドラがSA_RESTART属性を取るようになりました。いくつかのコマンドラインが止まっていたバグがなおりました。

    Debian lennyで確認
    MacOSXで確認
    cygwin 1.7.1 一部コマンドのパイプのつなげ方によっては不安定な動作あり

2011 3月17日 1.3.5
    mac portsでportfileが作れるようにしました。
    またプライベートな方にアップロードします。

    OS Xに対応

2011 3月13日 1.3.4
    ->の補完が有効だったので無効にしました。
    sub, match, erase, scanに-s, -w, -eオプションができました

    make, sudo make installでインストール出きるように修正

    Ubuntu 10.04 LTS で確認。

2011 3月13日 1.3.3
    コンパイルコマンドの変更。
    make lib && sudo make lib-install && sudo make && sudo make install
    ではなく
    make && sudo make lib-install && sudo make installでいけます

    make && sudo make DRSTDIR=??? lib-install && sudo make DESTDIR=??? install
    でインストール先の変更が可能に。(今度こそ正式)

    scan, sub -gでPREMATCH2にバグがありました。

    print ab12 | scan '\d+' { print +$PREMATCH2+; | x 3 }
    ++
    12
    12
    12

    でした

    print ab12 | scan '\d+' { print +$PREMATCH2+; | x 3 }
    +ab+
    12
    12
    12

    に変更

    Debian 5.0.3 で確認
    Ubuntu 10.04 LTS で確認。

2011 3月12日 1.3.2
    Mac由来のバイナリファイルを消しました。
    make lib && sudo make DESTDIR=??? lib-install && sudo make && sudo make DESTDIR=??? install
    で???のディレクトリにインストール出きるように修正

    Ubuntu 10.04 LTS で確認。

2011 3月8日 1.3.1
    scanのブロックでマッチした文字列に改行が付くように変更。この方が自然です。

    いままで

    > ls | scan s { | print }
    ssssss

    変更

    > ls | scan s { | print }
    s
    s
    s
    s
    s
    s

    selector -rのバグでsgrep, smakeが落ちることがあったようです。修正。

    Ubuntu 10.04 LTS で確認。

2011 3月6日 1.3.0
    sub -g
    のグループ化文字列の参照がマッチするたびに変更されるようになりました。(今までがおかしかった)
    > print abcd\n | sub -g '(.)' '\1'
    abcd

    いままで

    > print abcd\n | sub -g '(.)' '\1'
    aaaa

    だった

    match -r, posの廃止

    sub がブロックを取れるようになりました。

    scanのブロック中で$PREMATCH,$PREMATCH2,$MATCH,$POSTMATCH, $1-$9ローカル変数を使えるようになりました。

    OSXで動作確認。

2011 3月3日 1.2.9
    splitのアルゴリズムが変わりました。
    splitに-s, -e, -wオプションができました。

    strncat, strncpyの使い方に誤りがありました。修正。

    subのグループ化した文字列の参照が$1から\1に変わっています。

    前は
    > print abc\n | sub '.(.).' '$1$1'
    bb

    今は

    > print abc\n | sub '.(.).' '\1\1'
    bb

    これは

    > print aab\n | sub '(a)\1b' X
    X

    は動いていたためおかしかったので変えています。

    (subの第一引数ではグループ化文字列の参照は\1だった)

    mfiler3に対する影響はありません。

    cygwin 1.7.1で動作確認。
    OSXで動作確認。

2011 2月18日 1.2.8
    cygwinでコンパイルできなくなっていたので修正
    cygwinで実行にcygserverが必要なくなりました。

    sweepの仕様を変更。一つずつ変数を消せるようになりました。

    lines, rowsで数値が範囲外なら自動的に補正をかけるように変更
    10行しか出力しないコマンド | lines 0..100
    --> 1-10行出力

    lines 条件式 は 無くなりました

    select { ブロック } が代わりに入りました。

    lines にx個数+初期値を追加

    lines x10+0 -B { | join , }

    で行を10個ずつjoinできます。

    linesとrowsの-b -Bによるブロックの意味が変わってます。

    -bが毎行毎文字実行
    -Bが全体を入力に入れて一回だけ実行

    rows x数値1+数値2
    rows \*数値1+数値2

    を追加

    rowsで-bオプションによるバイト単位のインデックスの数え方は無くなりました
    ->によるオブジェクト指向もどきの廃止

    -c時にCTRL-Cが利かなくなっていたので修正

    @()のSTDINパイプがおかしかったのを修正

    ls | add @(| print)

    の場合lsからとってましたがこれは期待通りの動きじゃなかった。

    mfiler3に対する影響はありません。

    OS Xで動作確認。
    cygwin 1.7.1で動作確認。
    Debian で動作確認。

2011 1月30日 1.2.6
    welcomeメッセージをインタラクティブシェル時のみ表示するように変更
    SAPHIRE_INTERACTIVE環境変数にインタラクティブシェル時は1をセットするように変更。
    saphire -cやスクリプトでselectorとpが落ちるバグを修正
    saphire -c ls | lessで端末がリセットされていたためlessがraw modeで動いていないバグを修正。内部的にリセットをやめました。

    @(), @@()でSTDINパイプが受けられるように変更。
    ls | (print @(|print))
    とか

    ブロックに引数がとれるように変更

    ls | each { :nr: puts $nr }
    3->times { :i: puts $i }

    とか

    上の変更でブロックとyieldの仕様が変わっています。

    1.2.6 リリース

2011 1月26日 1.2.5
    例外処理コマンド tryを追加

    > try { false; echo bbb } catch { echo aaa }
    aaa

    substr の出力の最後に改行を加えていたバグを修正
    
    x->command x2 x3で command x x2 x3と同じだと解釈
    補完もそのように修正

    > 3->times { puts aaa }
    aaa
    aaa
    aaa

    timesユーザーコマンドを追加

    step,upto,downtoユーザーコマンドを追加

    linuxでvmに不備がありwriter processでsepgidが失敗し落ちるようなことがありました。OS Xでは大丈夫でした。修正。
    以下のようなコードで

    > ls | try { puts bbb; | scan .; puts bb; false } catch { pwd } | less

    10回くらい実行すると1回くらい落ちていた。

2011 1月19日 1.2.4
    デバッグ用のpコマンド追加

    selectorのオプションの処理がおかしいところがあったので修正

    calc, $(())に符号の+を取ることを許可 print $((+1))が動きます

    空のキーを持つハッシュの参照がハッシュ全体だと解釈されていたバグを修正。空のキーは空のキーとして有効です

    ハッシュの代入がb{aaa}=aだったのをb[aaa]=aとしました。

    selectorの対応エンコーディングはUTF8のみとしました。

    安定板? 1.2.4 リリース

2011 1.2.3
    exitの引数をリターンコードとしていないバグを修正。
    max, min, parentname, extname, noextnameの出力はデフォルトで改行を最後につけるようになりました。-nlでつけないようにできます.

2011 1月16日 1.2.2
    chomp 引数 が可能になりました
    pomchに-Lw, -Lm, -Luオプションをつけました
    fgの引数が二桁だと正しく処理されないバグを修正
    substrの引数が範囲外だとリターンコードを1として実行しないように修正

    1.2.2 リリース 安定板とします

    Debian, OSXでテスト

2011 1月14日 1.2.1

    lines, rowsで指定の行番号、文字インデックスが一つのときは-b ブロックはとるが -B ブロックは取りませんでしたが、取るようにしました。
    rows 2..-1 -b { |pomch }など文字インデックスの範囲指定の最後側が小さいとエラーになっていたバグを修正
    del -bの消すバイト数が一つ少なかったバグを修正
    del -lでメモリリークがありました。成功しても戻り値が1になってました。
    index, rindex -i オプションをつけました。ignore case
    rehashのリターンコードが1だったのを修正
    add -nオプションの数値範囲が不正な場合修正を加えて実行していましたが、リターンコードを1として実行しないようにしました
    add -lオプションの数値範囲が不正な場合修正を加えて実行していましたが、リターンコードを1として実行しないようにしました
    del -lオプションの数値範囲が不正な場合修正を加えて実行していましたが、リターンコードを1として実行しないようにしました。
    del -nオプションの数値範囲が不正な場合、エラーを出して実行していませんでしたが、リターンコードを1として実行しないようにしました。
    linesのリターンコードが1だったバグを修正
    ary_add -nの数値範囲が不正な場合リターンコードを1としました
    selectorで選択されなかった場合リターンコードを1としました
    sortでリターンコードが1だったバグを修正
    parentname, extnameで出力が無い場合はリターンコードを1としました
    max, minでリターンコードが1だったバグを修正
    hash_newでリターンコードが1だったバグを修正
    printfでリターンコードが1だったバグを修正

    linuxでmigemoつきのコンパイルでインタラクティブシェルの補完でセグフォしてました。

    1.2.1 リリース

2011 1月9日 1.2.0

    ファイル名の補完でTABを二回押したときのファイル名の候補リストのディレクトリが間違っているバグができていました。修正。

    1.2.0 リリース

2011 1月8日 1.1.9

    正規表現のキャッシュが30個溜まったら、クリアするようになりました。メモリの使用量が抑制されたはずです。

    1.1.9 リリース

2011 1月7日 1.1.8
    リファクタリング。str_cut,str_cut2,str_cut3関数をsaphire_kanji.hから取り除きました。
    リファクタリング。配列の境界の問題は無かったはずですが、一応strcpy, strcat, sprintfをstrncpy, strncat, snprintf or asprintfに書き換え。

    splitにバグがありました。正規表現のキャッシュのアルゴリズムに不備があり、メモリが漏れていたかもしれません。

    1.1.8 リリース

2011 1月5日 1.1.7
    OSXでのreadlineのバグを修正。メモリリークしていました。

    1.1.7リリース

2011 1月5日 1.1.6
    OSXでのreadlineのバグを修正。プログラムなどの濁点を含むファイル名が補完できなかった。(bashでもバグっています)
    ./configure に--with-migemoを渡さないときのsashは絶対パスのファイル名の補完がおかしかったようなので修正。

    1.1.6リリース

2011 1月2日 1.1.5
    abs, fabsコマンドを追加。

    printfをC準拠に変更。整数や浮動点少数や文字列なども対応しています。

    /usr/... などの絶対パスのコマンド名の補完がおかしかったバグを修正。

    1.1.5 リリース

2011 1月1日 1.1.4
    sub -g -c が落ちてました

    1.1.4 リリース

2011 1月1日 1.1.3
    configureに-with-migemoがないとコンパイルできない問題を修正
    OSXで変数名の補完をすると落ちたバグを修正

    1.1.3 リリース

2011 1月1日 1.1.2
    Mac OS XでCTRL-Zがブロックする場合があったので修正

    OS X 正式対応?。まだバグあるかも。

    1.1.2 リリース

2010 12月30日 1.1.1
    Mac OS Xでコンパイル、実行確認
    プロンプトをカレントディレクトリのみにしました

    1.1.1 リリース

2010 12月27日 1.1.0
    変数名の補完がいい加減だったので修正。$,$$,@,@@で補完できます。
    変数名の補完候補をライブラリの外にも公開。(mfiler3で変数の補完をするために)
    プログラム名の補完候補の名前をgProgramsからgSaphireProgCompletionsに変更
    外部から追加された内部コマンドとユーザーコマンドのパイプの処理をメモリを使うように修正。パイプを使っていたので、ブロックしていたかもしれません。

    28日 1.1.0 リリース

2010 12月22日 1.0.9
    sashのコマンドラインでC-x でファイル選択メニューができるように追加

    saphire -c, スクリプトファイルをバックグラウンドで動かすとおかしかったので修正

    correct_pathがあまりにもひどいコード書いていたので修正。

    1.0.9 リリース

2010 12月22日 1.0.8
    -cやスクリプトファイル中ではバックグランド処理は無効にしました

    saphire -cやスクリプト内で起動したコマンドがSIGTSTP(CTRL-Z)を受けるとバグるのを修正。ちゃんとfgしたら元に戻るようにした

    上は1.0.7では直ってませんでした

    |>数値で |> lines 数値 | chompと同じ

    1.0.8 リリース

2010 12月20日 1.0.7
    add がブロックを引数に取れるようになりました

    > puts abc | add -n -2 { print d }
    abcd

    グローバルパイプに追記ができるようになりました

    > echo a |>
    > echo b |>>
    > |> print
    a
    b

    matchのPOSTMATCHローカル変数がおかしかったバグを修正

    match -rでPREMATCHを使いやすいように修正。

    saphire -cやスクリプト内でlessなど外部コマンドが動かないバグを修正

    saphire -cやスクリプト内で起動したコマンドがSIGTSTP(CTRL-Z)を受けるとバグるのを修正。ちゃんとfgしたら元に戻るようにした

    ||がパイプと認識されていたバグを修正

    ブロックがあるとエラーメッセージの行番号がおかしかったバグを修正

    configureに--with-migemoがないとコンパイルが通らないバグを修正

    1.0.7リリース

2010 12月16日 1.0.6
    each, foreachが内部コマンドになりました。データの受け渡しはグローバルパイプからSTDINパイプになってます。

    >ls | each { | print; | scan . | each { | print }; | print }
    main.c
    m
    a
    i
    n
    .
    c
    main.c
    sub.c
    s
    u
    b
    .
    c
    sub.c

    1.0.6リリース

2010 12月15日 1.0.5
    parserのグローバルパイプの部分に期待通りじゃない処理があったので修正

    > ls |> less
    が通ってました。

    > ls |> less
    はちゃんとエラーになるように修正。

    12月15日1.0.5リリース

2010 12月15日 1.0.4
    グローバルパイプ、STDINパイプの記号変更

    |> normal global pipe |- stackable global pipe |~ queue global pipe
    | STDIN パイプ

    > ls |>
    > |> print
    main.c
    sub.c

    > ls | while(<>|>) { |> print }
    main.c
    sub.c

    > ls | ( | less; | less )
    main.c
    sub.c
    main.c
    sub.c

    read -p -aにバグがあり読み込めないことがあったのを修正。

    1.0.4 リリース

2010 12月15日 1.0.3

    ~展開を実装。~ユーザー名も使えます。補完もします。
    readlineのmigemo補完の見直し ディレクトリ後のファイル名の補完時候補にディレクトリ名まで示されていたのがファイル名だけの候補が出るようになりました
    kanjicodeの設定でコマンドラインでの日本語の変換をやめました
    プロセス置換にバグがありました。実行できませんでした。修正。
    linesとrowsのブロックのとり方が
    > lines 0..1 { less } 
    > lines 0...1 { less }
    から
    > lines 0..1 -b { less } lessは0行と1行を一回とる
    > lines 0..1 -B { less } 1回目のlessは0行, 2回目のlessは1行をとる
    に変わっています

    read -a -pの代わりに|=
    read -aの代わりに|-が使えるようになりました。

    > puts aaa\nbbb\nccc | (|= print ; |=print)
    aaa
    bbb
    ccc
    aaa
    bbb
    ccc

    ブロックの仕様が変わっています。コマンドに文字列としては渡せません。

    > eval { ls }

    はevalにコンパイル済みの{ ls }を渡しています。

    ユーザー関数内で引数のブロックを実行するにはyieldを使います。

    > def fun { yeild 0; yeild 1; yeild 1 }
    > fun { puts a } { puts b }
    a
    b
    b

    1.0.3 リリース

2010 12月7日 1.0.2
    lc, ucでsjis,eucjpの入力がおかしい点を修正。-s,-e,-wオプション追加。
    printfのインデックスの漢字対応

    1.0.2 リリース

2010 12月6日 1.0.1
    del -lオプション追加

    rows -r のutf8,sjis,eucjp対応

    kanjicodeの設定でコマンドラインでの日本語の変換
    (kanjicode -sするとutf8端末でもコマンドラインでの日本語入力がSJISに変換されてプログラムに渡される。)
    つまり
    > kanjicode -s
    > cat data_sjis | index あああ
    がちゃんと動く
    (あああがutfからsjisに変換される)
    
    saphire スクリプトでsaphire -c コマンドと同じようにフォアグランドの処理を変更。つまり

    > saphire a.sa &

    が変な処理をしていたの(シェルごと落ちる)を修正。期待通り動きます。
    
    read -n -pも動くように変更。(readは-nと-p同時指定すると-pが無効となっていた。)


2010 12月1日 1.0.0
    グローバルパイプを4種類用意しました
    
    グローバルパイプ |

    スタックブルグローバルパイプ |>
    キューグローバルパイプ |~
    ナンバーグローバルパイプ |1 |2 |3 ... |8 |9

    グローバルパイプのバグを修正
    
    ls | while(<>|) {|print } |
    |print

    が空でした。
    リターンコードにかかわり無くグローバルパイプは書き込みます

    英語マニュアルをとりあえずかきました。書いただけともいいます。

2010 11月28日 1.0.0
    read に -pオプション作成
    length に-Lオプションを作成

2010 11月27日 0.9.9
    configureのワーニングを出ないように修正。
    configureが環境によってはこけていた問題を修正。
    
    0.9.9 リリース

2010 11月26 0.9.8
    ~/.saphire/hisotryにヒストリを保存していたのをhistoryに直しました。
    README.en.txtを書き上げました。USAGE.en.txtは書きかけです。

    0.9.8 リリース

2010 11月24 0.9.7
    ユーザー関数内でエラーが出た場合はその関数の呼び出し元のファイル名と行番号を表示するようになりました

    0.9.7 リリース

2010 11月19日 0.9.6
    eachの行番号の変数をnrからNRに変更
    プロセス置換が動いていなかったバグを修正

2010 11月16日 0.9.5
    シングルクォートとダブルクォート内の改行がエラー出力時に出る行番号に反映されていないバグを修正
    read ファイル名によるファイルの読み込みの追加。
    
    0.9.5リリース

2010 11月16日 0.9.4
    readline補完を修正。変数の補完。
    スクリプトファイルの処理時、コマンドライン引数をARGVで取れるようになりました。(というか今までできなかったんかいorz)
    cygwinで動作確認。というか作者は今cygwin上で開発してます。またcoLinuxに浮気するかも知れんけど。
    cygwinのバイナリ公開。
    
    0.9.4リリース

2010 11月9日 0.9.3
    エラー時行番号の表示がおかしいことがあったので修正(エラー番号の行とファイル名をグローバル変数を使わずローカル変数を使うように修正)
    変数の宣言をクリアするsweepを追加
    変数の宣言状況を見るshowを追加

    0.9.3リリース

2010 10月22日 0.9.3
    @@(), @(), @変数を含むスクリプトのコンパイルがうまくいっていないバグを修正。
    return 文を実装。関数から復帰できます。
    グローバルパイプをスタッカブルに変更
    printとputsに-fオプションを作成

2010 10月12日 0.9.2
    内部コマンドの引数の順番を整理。
    match 正規表現 対象文字列
     |
     v
    match 対象文字列 正規表現
    など。第一引数を対象文字列に統一。
    フィルタとしてしか使えないコマンドに引数の文字列を操作対象に
    取れるように統一

    @()内で変数の展開ができないバグを修正
    @@(),@@変数を追加

    @で環境変数を参照できないバグを修正

    scanを追加

    eraseを追加

    split -mなし
    match -gかつ-mなし
    scan -mなし
    erase -gかつ-mなし
    sub -gかつ-mなし
    のパフォーマンスの向上300から400倍近く速くなってます。というか前が使い物にならないくらい遅すぎました。変更で4MバイトサイズのHTML文章のタグ取りも一瞬です。(でも、-mや対象文字列を引数でとるとやはり遅すぎる)

2010 10月x日 0.9.2
    テスト時のcpの誤動作により変更点消失

2010 9月29日 0.9.1
    プロセス置換の一時ファイルが消されていないバグを修正

2010 9月28日
    0.9.0 β版リリース