> > JavaScript doesn't have to deal with this so npm can just ignore the > issue. >
It actually does have to deal with this issue but I'm not sure how it does it On Monday, December 21, 2015 at 5:23:01 AM UTC+13, Stefan Karpinski wrote: > > This seems to be a design based largely on npm. > > The idea of modules (and packages) being unnamed internally is appealing, > largely for the prospect of it being possible to rename packages without > breaking code that uses them although I'm not certain this is realistic. > > I'm not sold on the idea that it makes sense to load multiple versions of > packages. There are some major issues: > > *Generic functions.* What happens when two different versions of a > package both introduce separate generic function that other packages are > supposed to share? One of the most confusing situations I see people > encounter is when they've reloaded some code that defines a type and have a > generic function that dispatches the old version of that type and they try > to call the function on the new version of the type. The dispatch doesn't > work, of course, but it looks like it should. Very confusing. This seems to > be intentionally introducing a far worse form of that. It's possible that a > coherent story can be told about how to deal with this, but without that > story this seems pretty hard to swallow. > > *Shared system libraries.* What do you do when two different versions of > a package want to load different versions of system libraries? In theory > dlopen can do this but in practice it does not work well at all. JavaScript > doesn't have to deal with this so npm can just ignore the issue. > > *Code generation.* Julia is already a bit of a beast when it comes to the > amount of code that is generated. This makes that N times worse, for some > unknown and potentially fairly large N. > > On Sun, Dec 20, 2015 at 10:05 AM, Tom Breloff <t...@breloff.com > <javascript:>> wrote: > >> My reaction is the same as Tim Holy's. While I agree there are aspects >> of Julia's modules which are not perfect, it's not clear at all how your >> package changes the workflow. In fact, I don't understand anything about >> your package. Could you please try to write up the design thoughts behind >> what you are doing, so that we can understand the high level concepts that >> you are attempting? >> >> On Sun, Dec 20, 2015 at 6:24 AM, Tim Holy <tim....@gmail.com >> <javascript:>> wrote: >> >>> After reading your README example, I'm still left wondering how one >>> works with >>> Kip, or how it fixes the problems you're describing. To me it's not at >>> all >>> obvious how your example "illustrates" the statements you make in the >>> prose. >>> You might consider explaining the meaning of the various arguments to >>> @require, what an "index" file is and what its format should be, and >>> exactly >>> what the call to the emit function is supposed to demonstrate. >>> >>> Best, >>> --Tim >>> >>> On Saturday, December 19, 2015 11:26:53 PM Jake Rosoman wrote: >>> > I forgot to actually link to the project < >>> https://github.com/jkroso/Kip.jl> >>> > >>> > On Sunday, December 20, 2015 at 8:25:04 PM UTC+13, Jake Rosoman wrote: >>> > > Julia's module system is the one part of it I feel confident enough >>> to say >>> > > is bad. It can't handle several versions of the same package. Is >>> hard (or >>> > > impossible?) to depend on packages that aren't in the registry and >>> hard to >>> > > add (controversial) things to the registry. I also find it ugly and >>> hard >>> > > to >>> > > use but now I'm getting into opinions so I'll stop. >>> > > >>> > > Kip solves all these problems and works fine alongside Julia's >>> current >>> > > module system so you can try it out now. I hope that eventually we >>> can >>> > > replace Julia's module system if people generally agree that it's >>> worth >>> > > doing. I've created a poll to measure the communities opinion >>> > > <http://tally.tl/3002Y> and you can change your vote at any time so >>> feel >>> > > free to say no now but follow the discussion. >>> >>> >> >