週刊nmosh - 0.2.8進捗

いろいろと年を跨ぎそうになってきたけど。。作業量見積りのために目標設定等を具体化する作業。

リリースクライテリア

何をもってリリースとするのかは微妙なポイントだけど、以下を満たしたときにリリースにしましょうということで。ビルド関連は自動化したいので現在作業中。

  • Tier1目標 (ダメだったらリリースしない)
    • R6RS test suite 100% pass (psyntax-mosh/nmosh) on POSIX
    • Windows配布での.chmドキュメント(日本語)
    • Windows build (CMake, x64 / win32)
    • Linux build (amd64 ubuntu 14.04 / CentOS 6 / CentOS 7)
    • Cygwin build (Host BohemGC, Win32 / x64)
    • FreeBSD build (ports, FreeBSD 10.0 amd64)
    • Darwin build (OSX Yosemite amd64, homebrew)
    • Autotools上のMinGW32ビルドの削除
    • 旧 nmoshライブラリの削除
    • 旧 yuniライブラリの削除
    • 旧 nmosh Win32/POSIXサポートの削除
    • 新 yuni/nmoshライブラリへの置き換え
    • mini-gmpビルド
    • 基本的なOSコールのyuniFFI化とWin32/POSIXサポートの書き直し
    • プロファイラのWin32サポート
    • Psyntax-mosh / nmoshビルド省略モード
    • 以下のIssueのディスパッチ(可能なら修正):
      • Issue 227: Hashtable does not store bytevector as its key
      • Issue 229: get-bytevector-all does not work on pipes
      • Issue 232: Textual port reads BOM when reuse a transcoder
      • Issue 236: Passing a list to vector-length causes SEGV
      • Issue 237: bytevector-s32-set! raises range error
      • Issue 238: SRFI 41 library doesn't export required variable
      • Issue 239: sys-get-bytevector causes SEGV
      • Issue 242: Input/output port doesn't forward position after reading some of its content
      • Issue 243: transcoded-port with (standard-output-port) doesn't print on stdout
  • Tier2目標 (ダメだったらリリースノート)
    • Test suite 100 % pass
    • NetBSD build (amd64, NetBSD 6.1.4)
    • R7RS library support(nmoshのみ)
      • R7RS tests from chibi-scheme (★ これから分類する)
    • yuniFFIバインディング
      • POSIXの一部(open/close/...とsocket、poll、posix_spawn)
      • Win32のごく一部(現状nmoshでサポートしているものの移植)
      • BSD kqueue
      • curl
      • libusb1
      • libpcap
  • Tier3目標 (実装の仕切り直し、今回はテストしない)
    • nmosh DLL I/F
    • Androidサポート(全ての移植)
    • Wineサポート(全ての移植)
    • Cell BE(PowerPC, BigEndian)移植
    • MIPS移植
    • Crypto++ bignumバックエンド(★ CMakeから隠す)
    • Known issueにする:
      • Issue 206: NetBSD i386: FFI test failure
      • Issue 209: nmosh: invalid expression such as (cons 1 . 2) allowed
  • id:higeponと相談する:
    • NaturalDocsからDITAベースドキュメントへの置き換え(これはDITA版を完全に書いてから)
    • Win32版配布からライブラリソースの削除とランタイムライブラリの内蔵
    • portの自動closeの削除
    • Google code側のIssuesの運用

ひとまず、顧客が居るというかユースケースが有るものをTier1、やってみてはいるけど具体的なユースケースが今のところ無いのがTier2、今回は検証もしないTier3に分類。
R7RS testsはyuni側に投入するつもり(psyntax-moshでもライブラリフォーマット以外は互換のはずなので)。yuniライブラリの他Scheme処理系版はnmoshとは独立して配布する。0.2.8のタイミングではリリースしない。
リリースに必要なものでまだ無いもの(加速が必要なもの)は

  • yuniFFIのためのCコードemit(本番実装)
  • yuniFFIの差し替えに伴ない消滅するライブラリの削除
  • ドキュメントワークフロー

重い...
これら以外に関しては手を止めてリリースを纏めることに集中した方が良さそう。2年分の年貢を収める作業でも有るので。