ByteBufferの使用がバイナリ互換性を破壊するケース
ClojureコードをコンパイルするとJVMバイトコードが生成される。一般的には、使用するClojureのパージョンさえ固定すれば、 どのような環境でコンパイルしてもコンパイル結果として得られるバイトコードは基本的に同じはずだ。
しかし、「どのバージョンのJava上でコンパイルしたバイトコードか」が問題になる特殊なケースがあるらしい(実際に遭遇した)ので、記録のためにメモしておく。
…ClojureコードをコンパイルするとJVMバイトコードが生成される。一般的には、使用するClojureのパージョンさえ固定すれば、 どのような環境でコンパイルしてもコンパイル結果として得られるバイトコードは基本的に同じはずだ。
しかし、「どのバージョンのJava上でコンパイルしたバイトコードか」が問題になる特殊なケースがあるらしい(実際に遭遇した)ので、記録のためにメモしておく。
…ClojureのMLからのネタ。
Clojureでは名前空間にエイリアスがつけられて、シンボルやキーワードでそのエイリアスを使った場合に自動的に解決してくれる機能がある:
…CIでテストを回す場合、テストに失敗したときにCI自体も失敗してくれると嬉しい。
Clojureだと、lein test
でテストする場合でもtest-runner
でテストする場合でも、
テストが失敗するとexit(1)
してくれるのでテストの失敗をCIも認識してくれる。
自分で簡単なテストランナーを書く場合でも以下のようにすれば実現できる:
…