個人的にはextension type使う予定ないというか好きじゃないけど、なんとなく対応させてリリースしました
https://github.com/msgpack4z/msgpack4z-core
msgpack4zそのものについては、10ヶ月前くらいにかいたblog読んでください
msgpack4zというmsgpackのScala用ライブラリを作った
最初のリリース時に、以下のように書きましたが
msgpack4z-apiさえ変更しなければ、それぞれのモジュールに変更を加えても、全部をリリースし直す必要がなくなります。
それをやることを想定しているので、わざわざリポジトリ自体を分けました。
逆に言うともしmsgpack4z-apiに対して非互換の変更をしたら、全部をアップデートしないといけなくなりますが、それを頻繁にやってしまうなら分けた意味が半減するというか、リポジトリ分けたことによるデメリットのほうが大きくなってしまうので、実際よほどのことが無い限り、数ヶ月から1年のレベルでmsgpack4z-apiは変更する予定はありません。
わりとこの方式うまくいっている気がします。つまり、今回のリリースが、msgpack4z-apiでの初めての非互換の変更入れました。
- javaの06の方はextension typeのサポート諦めた、とか
- 今一度仕様見ていたら、javaの07が微妙に仕様通りに実装をするのを諦めてる部分があるのを発見したとか、
- なぜか仕様でextendedと書いてあったのがextensionになってて、それにともない謎の非互換変更をちょうどいいタイミングなので今回入れた*1
など細かいこと(?)で書きたいこといくつかありますが、まぁ面倒なので詳しく書きません(ぇ
extension type、それなりに仕様やJavaの7の実装見つつ正しく実装したつもりですが、バグがあったらお知らせください。