[racket-dev] Submodules & dependencies

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

Ya, even if someone does their best by moving dependencies into the
tightest module*, there is a compilation problem:

"m.rk"
#lang racket
(module* test #f
 (require tests/eli-tester))

simply does not compile if tests/eli-tester is not there. If you did
compile it but didn't instantiate the test module, then it would run
just fine (even without zo stripping)

Jay

On 3/12/12, Robby Findler <robby at eecs.northwestern.edu> 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
>


-- 
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.