[racket-dev] Submodules & dependencies

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Mon Mar 12 16:46:09 EDT 2012

I agree with Robby.

Jay

On Mon, Mar 12, 2012 at 1:18 PM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> I thought Matthew was pointing out how we can distribute some source
> that works if you set a parameter properly and that same source will
> contain no test-based dependencies.
>
> Boy, this conversation sure makes me wish for the ability to just
> gather everyone up around a whiteboard or something :(
>
> Robby
>
> On Mon, Mar 12, 2012 at 2:15 PM, Matthias Felleisen
> <matthias at ccs.neu.edu> wrote:
>>
>> I think Jay is expressing an Eli-concern: we need to distribute
>> the full source to determine whether something can be thrown away.
>>
>>
>> On Mar 12, 2012, at 3:13 PM, Robby Findler wrote:
>>
>>> Oh, I get it now. Thanks.
>>>
>>> This also seems like something that you'd want to put control over at
>>> the package level, I guess. That is, a package can depend on another
>>> package, but without that second package's test modules or something.
>>>
>>> Robby
>>>
>>> On Mon, Mar 12, 2012 at 2:05 PM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
>>>> Yes: In other words, there could be a parameter that causes the macro
>>>> expander to drop `test' submodules before it even attempts to expand
>>>> them --- roughly like not using `-g' with `gcc'.
>>>>
>>>> Meanwhile, the after-the-fact pruning tool could be called `raco
>>>> strip'.
>>>>
>>>> At Mon, 12 Mar 2012 15:02:58 -0400, Matthias Felleisen wrote:
>>>>>
>>>>> Or you make the pruning step a part of the compiler.
>>>>>
>>>>>
>>>>> On Mar 12, 2012, at 3:01 PM, Robby Findler wrote:
>>>>>
>>>>>> Yes, I think the point that Jay's making is that the thing you'd
>>>>>> distribute wouldn't be rkt code, but some low-level thing. Well,
>>>>>> either that or you distribute .rkt code that doesn't actually run.
>>>>>>
>>>>>> Robby
>>>>>>
>>>>>> On Mon, Mar 12, 2012 at 1:59 PM, Matthias Felleisen
>>>>>> <matthias at ccs.neu.edu> wrote:
>>>>>>>
>>>>>>> I know that. But we could consider the pruning step as part of compilation.
>>>>>>>
>>>>>>>
>>>>>>> On Mar 12, 2012, at 2:57 PM, Robby Findler wrote:
>>>>>>>
>>>>>>>> He's saying that there is no easy way to, without expanding the code
>>>>>>>> (and perhaps without going one step further beyond a fully expanded
>>>>>>>> program, but nevermind that detail), split apart the submodules that
>>>>>>>> come from a single module. You just cannot tell, without expanding
>>>>>>>> everything, which of the imports end up being used where (at least I
>>>>>>>> think that's the idea).
>>>>>>>>
>>>>>>>> Robby
>>>>>>>>
>>>>>>>> On Mon, Mar 12, 2012 at 1:47 PM, Matthias Felleisen
>>>>>>>> <matthias at ccs.neu.edu> wrote:
>>>>>>>>>
>>>>>>>>> Why does it not compile? Do you mean it doesn't compile to the same byte
>>>>> codes?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mar 12, 2012, at 2:40 PM, Jay McCarthy wrote:
>>>>>>>>>
>>>>>>>>>> Sorry Matthias, I don't think I understand your question.
>>>>>>>>>>
>>>>>>>>>> At the bytecode level, it would be "easy", so we could change the
>>>>>>>>>> distribution scripts to do that.
>>>>>>>>>>
>>>>>>>>>> At the source level, it's not really possible because of macros that
>>>>>>>>>> generate code in a submodule.
>>>>>>>>>>
>>>>>>>>>> My personal taste is that it is bad to ship .rkt that doesn't compile,
>>>>>>>>>> but I'd also like a future where we don't ship .rkt
>>>>>>>>>>
>>>>>>>>>> Jay
>>>>>>>>>>
>>>>>>>>>> On 3/12/12, Matthias Felleisen <matthias at ccs.neu.edu> wrote:
>>>>>>>>>>>
>>>>>>>>>>> On Mar 12, 2012, at 11:39 AM, Jay McCarthy wrote:
>>>>>>>>>>>
>>>>>>>>>>>> The current demodularizer would do that. Presumably we could make a
>>>>>>>>>>>> tool that operated on a single module's zo and removed such
>>>>>>>>>>>> submodules. The main problem would be that the source is
>>>>>>>>>>>> un-compilable.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Meaning? Removing docs and tests shouldn't leave the functional part in
>>>>> bad
>>>>>>>>>>> shape
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Jay
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Mar 12, 2012 at 8:58 AM, Matthias Felleisen
>>>>>>>>>>>> <matthias at ccs.neu.edu> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yes, dependencies abound if we include tests and doc in the same
>>>>> module.
>>>>>>>>>>>>> At the same time it is good practice to have things together.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Can't this problem be solved with module-flattening tools? From what I
>>>>>>>>>>>>> can tell, these test and doc modules could be dropped leaving the
>>>>> running
>>>>>>>>>>>>> residual, which could be bundled.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Jay McCarthy <jay at cs.byu.edu>
>>>>>>>>>>>> Assistant Professor / Brigham Young University
>>>>>>>>>>>> http://faculty.cs.byu.edu/~jay
>>>>>>>>>>>>
>>>>>>>>>>>> "The glory of God is Intelligence" - D&C 93
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Jay McCarthy <jay at cs.byu.edu>
>>>>>>>>>> Assistant Professor / Brigham Young University
>>>>>>>>>> http://faculty.cs.byu.edu/~jay
>>>>>>>>>>
>>>>>>>>>> "The glory of God is Intelligence" - D&C 93
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _________________________
>>>>>>>>>  Racket Developers list:
>>>>>>>>>  http://lists.racket-lang.org/dev
>>>>>>>
>>>>>
>>>>>
>>>>> _________________________
>>>>>   Racket Developers list:
>>>>>   http://lists.racket-lang.org/dev
>>
>
> _________________________
>  Racket Developers list:
>  http://lists.racket-lang.org/dev



-- 
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93


Posted on the dev mailing list.