remove deprecations on master
I noticed the recent aborted attempt to remove the deprecated modules form clojure-contrib master. Since I was in need of some busy work, I decided to try and do it myself and clean up the breakage.
The attached patches don't remove everything that has been marked as deprecated, just the bits Stuart previously indicated by trying to remove them.
The attached patches don't remove everything that has been marked as deprecated, just the bits Stuart previously indicated by trying to remove them.
- clojure.contrib.apply-macro
- clojure.contrib.http-agent
- clojure.contrib.http-connection
- clojure.contrib.javadoc: which rewrote a :use in repl_utils.clj from c.c.javadoc.browse to c.java.browse.
- clojure.contrib.properties: where private versions of as-str and as-properties were defined in c.c.sql internal.clj
- clojure.contrib.test-is
Leave a comment
I'll submit further patches as I have time. Not being "in the loop", I can't be certain that we really want all the namespaces marked as deprecated gone before 1.3, but that's my operating assumption. (I'm attaching one patch per namespace so that the comitters can be selective.)
on 2010-08-27 12:25 *
By bpsm
Attachment 0010-create-clojure.contrib.io-convenience-module.patch added
file:dxyjsaSHar37S6eJe5cbCb: proposed new c.c.io providing only what was not migrated to Clojure proper
*Proposal*: when a namespace is partially promoted to Clojure proper, it might be good to provide a reduced version of the old namespace, providing just the functionality that was not promoted as an alternative to complete removal.
I've sketched out this idea as a patch: 0010-create-clojure.contrib.io-convenience-module.
I'm imagining something like:
This new clojure.contrib.io is not a strict subset of the old clojure.contrib.io, as some changes seemed sensible to harmonize with clojure.java.io's conventions. This means, it's not a drop-in replacement, but at least provides equivalents for anyone trying to get off the deprecated clojure.contrib.io.
One problem that's apparent with this proposal is that, since the 'new' io only becomes available in 1.3, there would be something of a "flag day" when switching from 1.2 to 1.3, but then there would be if 1.3 completely eliminated c.c.io as well -- only it would be worse.
I've sketched out this idea as a patch: 0010-create-clojure.contrib.io-convenience-module.
I'm imagining something like:
- most of clojure.contrib.io is promoted to clojure 1.2
- clojure-contrib 1.2 deprecates, but does not remove clojure.contrib.io
- clojure-contrib 1.3 provides a reduced version of clojure.contrib.io containing only non-deprecatd functionality not available elsewhere (i.e. in Clojure ≥ 1.2).
This new clojure.contrib.io is not a strict subset of the old clojure.contrib.io, as some changes seemed sensible to harmonize with clojure.java.io's conventions. This means, it's not a drop-in replacement, but at least provides equivalents for anyone trying to get off the deprecated clojure.contrib.io.
One problem that's apparent with this proposal is that, since the 'new' io only becomes available in 1.3, there would be something of a "flag day" when switching from 1.2 to 1.3, but then there would be if 1.3 completely eliminated c.c.io as well -- only it would be worse.
on 2010-08-27 22:03 *
By stuartsierra
clojure.contrib.io is deprecated, period. It will be removed in the next release.
Fine, so ignore patch 0010. That's why it's a "proposal".
Those moving their code off of c.c.io to c.j.io will just have to write their own versions of a subset of {file-str, write-lines, read-lines, pwd, with-out, with-in, to-byte-array, relative-path-string and delete-file-recursively}, or get these from a library outside of clojure-contrib. Am I understanding correctly?
Patch 0010 contains (in the comments) some tips for porting from deprecated c.c.io to c.j.io. It would make sense to gather that kind of information in some kind of a guide/faq about how to replace uses of deprecated c.c. namespaces promotion to core was not 1-to-1.
Those moving their code off of c.c.io to c.j.io will just have to write their own versions of a subset of {file-str, write-lines, read-lines, pwd, with-out, with-in, to-byte-array, relative-path-string and delete-file-recursively}, or get these from a library outside of clojure-contrib. Am I understanding correctly?
Patch 0010 contains (in the comments) some tips for porting from deprecated c.c.io to c.j.io. It would make sense to gather that kind of information in some kind of a guide/faq about how to replace uses of deprecated c.c. namespaces promotion to core was not 1-to-1.