読者です 読者をやめる 読者になる 読者になる

sjsp 0.1.0 をリリースしました

JavaScript Haskell

先日作ったsjspですが、その挙動も安定し、最低限必要かと思われるオプションを作ったので、最初の安定版リリースとして0.1.0というタグを打ちました。

github.com

同時に、Hackageにもアップロードしました。

sjsp: Simple JavaScript Profiler | Hackage

これでGitHubからcloneしなくても、cabalコマンドでインストールできるようになりました。

 $ sudo cabal update
 $ sudo cabal install sjsp

happyalexをインストールしているにもかかわらず、happy/alexに関するエラーが出るときは、PATHにcabalのbinパスを追加するか

 $ export PATH=$PATH:$HOME/.cabal/bin

あるいは実行ファイルを$PATHの中のどこかに置いて下さい

 $ sudo cp `which happy` /usr/local/bin
 $ sudo cp `which alex` /usr/local/bin

リリースした時のブログ記事を書いた時点からの変更は次のようになります。

バグ修正

  • cabal 依存関係修正 (happy, alex)
  • 関数が呼ばれた回数の初期値修正
  • return の中で arguments を使用された場合にうまく動作しなかったのを修正
  • 列番号が { の位置になっていたのを function の位置に修正
  • 関数の実行にかかっていた時間が10倍間違っていたのを修正

機能改善

  • 各プロファイリング結果の報告でconsole.logを一回だけ呼ぶように変更
  • 例外 throw 文にも対応
  • プロファイリング結果の見た目改善
  • 一行が長いファイルを変換するとファイルが肥大化することを抑えるため、行情報を240文字までにカット
  • 時間は小数点以下三桁表示するように

オプション追加

  • -a --accurate が指定された時は、Date.now() の代わりに performance.now() を使用するように
  • -n --number プロファイリング結果を何行表示するかを設定可能に (デフォルト20)
  • -t --time が指定された時は、関数の実行にかかった時間によるプロファイリング結果を報告するように (デフォルトでオン、-c, --count が指定されこのオプションが指定されない時はオフ)
  • -c --count が指定された時は、関数が呼ばれた回数によるプロファイリング結果を報告するように (デフォルトでオン、-t, --time が指定されこのオプションが指定されない時はオフ)

リファクタリング

  • Data.Genericseverywhere 関数を用いることで、冗長なコードを削除
  • 推奨されない関数の削除
  • プロファイラのコードを別ファイルにし、私が編集しやすく

パフォーマンス改善

  • +new Dateの代わりにDate.now()を使用するように

その他

  • stackでインストールできるようになり、Haskellがインストールされていない環境でもsjspをインストールできるようになりました。詳しくは itchyny/sjsp · GitHub を御覧ください。

これからもsjspをよろしくお願いします。

github.com

バグ報告はGitHubのissuesよりお願いします。