一般情况下,我们不改变语义,所以它们不会中断。:)
我们确实添加了新的语义,有时将错误案例转换为新的工作语义。我们避免破坏的第一点是,我们非常认真地思考我们要做什么,我知道这已经过时了,但我们的记录相当不错。
从二进制兼容性的角度来看,我们遵循一些政策。我们从不更改可能导致编译后的Clojure代码调用的Java实现类中的更改(这主要是RT和Reflector中的代码)- 虽然根据需要我们确实会添加新的方法或arity。我们还在序列化更改和引入对全新函数调用宏方面有类似的政策。我们不保证各版本之间的二进制或序列化兼容性(但我们尽可能地保持该兼容性)。
当然,还有测试,尽管没有很多直接检查编译的测试,尽管所有Clojure代码都是编译的,因此这在所有测试中都是隐含检查的。