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 , }

    で行を１０個ずつ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行と１行を一回とる
    > lines 0..1 -B { less } １回目のlessは0行, ２回目の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
    グローバルパイプを４種類用意しました
    
    グローバルパイプ |

    スタックブルグローバルパイプ |>
    キューグローバルパイプ |~
    ナンバーグローバルパイプ |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なし
    のパフォーマンスの向上３００から４００倍近く速くなってます。というか前が使い物にならないくらい遅すぎました。変更で4MバイトサイズのHTML文章のタグ取りも一瞬です。(でも、-mや対象文字列を引数でとるとやはり遅すぎる)

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

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

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