No, I don't think personally I have any code that would be effected, I'm just thinking it might be good to formalize a process for when these kinds of issues come up. Since the behavior was never exactly specified I don't think this problem can be considered a "bug" that is being fixed. It's more of a "this was never good, so now we are completely stopping it". But I think it would be nice to give people that are depending on this behavior at least 1 official release to fix their code. I'm just trying to be devil's advocate a little.
On Tue, Feb 17, 2009 at 8:00 PM, Charles Oliver Nutter < [email protected]> wrote: > Is this going to affect code of yours? I suppose it could be reduced to a > warning, but it's pretty hard to fix the issue I resolved without breaking > this behavior. And for what it's worth it was never really advocated or > recommended, though I know that's little consolation. > > Joseph Athman wrote: > >> Is there any way to deprecate the current frowned upon usage of require >> and release a new point release of JRuby before 1.2? It seems a little >> harsh to simply remove something that used to work (even poorly) without >> giving people a nice way of checking their code for this problem. Rails >> seems to do this nicely. If you can run the latest minor release of rails >> without deprecation warnings then you can likely upgrade to the next major >> release without much pain. >> >> Joe >> >> On Tue, Feb 17, 2009 at 9:09 AM, Thomas E Enebo <[email protected]<mailto: >> [email protected]>> wrote: >> >> On Tue, Feb 17, 2009 at 12:31 AM, Charles Oliver Nutter >> <[email protected] <mailto:[email protected]>> wrote: >> > Stephen Bannasch wrote: >> >> >> >> At 8:38 PM -0600 2/16/09, Charles Oliver Nutter wrote: >> >>> >> >>> I'm working on http://jira.codehaus.org/browse/JRUBY-3214 and I >> think we >> >>> need to ratchet down what load and require do when loading >> .class files. >> >>> They've started to get overloaded for loading an individual >> Java class, >> >>> which was never the intended purpose. This generally >> circumvents normal Java >> >>> classloading and classpath and usually causes things to break, >> since you can >> >>> easily load in a single class but fail to load its dependencies. >> >>> >> >>> So I propose the following: >> >>> >> >>> load and require shall only be used for loading .jar files (as >> an analog >> >>> to extensions), .rb files, or .class files that represent >> compiled .rb >> >>> files. >> >>> >> >>> The problem in the bug is that it tries first to do a normal >> class load, >> >>> which sees the current directory's "baz" class and loads it >> before the >> >>> "baz.class" in ../foo. When normal Java classloading is taken >> out of the >> >>> equation, it works correctly. >> >>> >> >>> This also will affect classloading somewhat; since a given >> classloader >> >>> can only load a given package + class once, and with Ruby load >> paths there >> >>> could potentially be multiple compiled .rb files with the same >> Java package >> >>> and class, each precompiled .rb file will be loaded in its own >> child >> >>> classloader and executed. >> >> >> >> Are you proposing any changes to how require operates when >> loading a jar >> >> that implements BasicLibraryService.basicLoad? >> >> >> >> This service is normally used to add Ruby modules and classes. This >> >> technique is used in the java/jruby versions of RubyGems like >> hpricot and >> >> redcloth. >> > >> > No, this would remain the same. The only behavior that would >> change is >> > using: >> > >> > require 'some.java.Class' >> > >> > as a way of getting that class loaded and callable. It will now >> raise an >> > error saying you should use 'java_import' to load it in (I could >> have said >> > "import" but "java_import" is probably more likely to work in all >> cases, >> > since rake defines an import method and a few people have run >> into issues >> > with that). >> > >> > e.g. >> > >> > $ jruby -rjava -e "load >> 'build/classes/jruby/org/jruby/RubyString.class'" >> > -e:1:in `load': use `java_import' to load normal Java classes >> (LoadError) >> > from -e:1 >> >> +1 >> >> I am sure someone has tried using it, but for it to still be working >> for them they ended up solving the class loading using a different >> way. >> >> -Tom >> >> -- >> Blog: http://www.bloglines.com/blog/ThomasEEnebo >> Email: [email protected] <mailto:[email protected]> , [email protected] >> <mailto:[email protected]> >> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> >> >> >> > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > >
