Hacker News new | ask | show | jobs
by porpoisely 2741 days ago
Clojure's emphasis on backwards compatibility is commendable, but keep in mind Clojure is still a very young language ( only about 10 years old ) so there isn't much backwards compatibility to worry about.
2 comments

Maybe, but this was true even when Clojure was younger still. The language changes are overwhelmingly additive; Hickey places great stock in not breaking existing code.
I'm going to bring up again how + used to autopromote ints if your result was out of the primitive int range, and now throws an error instead.
If you want to demand perfection, then Clojure isn't going to meet your standards (what would?).

The issue here is that, based on the way they (particularly Rich) talk, we can expect they will not do Bloody Stupid things like the old Python 2->3 changeover. Things like big, breaking changes that require architectural changes to keep current, or break all the available tutorials.

If the problem can be fixed with a macro or single function (like a change to plus behavior) it is an irritant, not a threat to productivity. That is not a concern.

You don't think a breaking change to + is any more significant than a breaking change to some other part of the language?
As has been answered elsewhere in this discussion:

That was over 7 years ago, so not particularly recent. And you can get the auto-promoting behavior with +' instead.

I don't see how a change could be much more minor, honestly.

It is a breaking change, that sort of change could introduce bugs into existing codebases. If that matters, you can't upgrade your Clojure version without careful change management anyway.

It isn't like reduce is being depreciated or something. I don't need to change how I think about the language.

A breaking release over 7 years ago, doesn't mean that having no (as far as I know) breaking changes for the last 6 years is any less impressive.
Was your application affected? Did you have to perform an extensive rewrite?

Engineering is all about compromises.

I didn't say there were no breaking changes, just fewer than most languages.
There isn't much to break anyway. Remember it's a Lisp.