<div dir="ltr">Looks like most of the size increase from racket/date is that you're pulling in the contract system. Still, there was some dead code in that file whose removal let me remove a few requires from it (eliminating a dependency on racket/match, since none of the things racket/date requires require it). I'll push those changes later on today.<div>
<br></div><div>Robby</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 12, 2014 at 7:59 AM, Manfred Lotz <span dir="ltr"><<a href="mailto:manfred.lotz@arcor.de" target="_blank">manfred.lotz@arcor.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Wed, 12 Feb 2014 06:07:17 -0700<br>
Matthew Flatt <<a href="mailto:mflatt@cs.utah.edu">mflatt@cs.utah.edu</a>> wrote:<br>
<br>
> At Wed, 12 Feb 2014 06:02:30 +0100, Manfred Lotz wrote:<br>
> > I just read Neil van Dyke's statement:<br>
> ><br>
> > < "#lang racket" is for demos, IMHO; I *always* use "#lang<br>
> > racket/base" < for any code that's not a demo.<br>
> ><br>
> > Question: What are the advantages of doing requires explicitly?<br>
> ><br>
> > In a program of mine I changed #lang racket to #lang racket/base and<br>
> > added:<br>
> ><br>
> > (require racket/cmdline)<br>
> > (require racket/string)<br>
> > (require racket/format)<br>
> > (require racket/port)<br>
> > (require racket/path)<br>
> > (require racket/list)<br>
> ><br>
> ><br>
> > The resulting executable (created by raco exe...) had the same size.<br>
><br>
> I'm surprised that they were the same size, assuming that you didn't<br>
> import other libraries that have more dependencies.<br>
><br>
> With these two files:<br>
><br>
>  r.rkt<br>
>  -----<br>
>  #lang racket<br>
><br>
><br>
<br>
</div>My system is a 64 bit Fedora 20.<br>
<br>
Size here is: 5045135<br>
<div class=""><br>
>  b.rkt<br>
>  -----<br>
>  #lang racket/base<br>
>  (require racket/cmdline<br>
>           racket/string<br>
>           racket/format<br>
>           racket/port<br>
>           racket/path<br>
>           racket/list)<br>
><br>
> on my machine, `raco exe b.rkt` produces a 2.4 MB executable, while<br>
> `raco exe r.rkt` produces a 5.2MB executable.<br>
><br>
<br>
</div>Hm, ok you are right. This one has size: 2123527<br>
<br>
I had to add more stuff:<br>
<br>
racket/date which makes it much larger: 4029753<br>
<br>
<br>
(require openssl)<br>
(require openssl/sha1)<br>
<br>
which makes a size of: 4511202<br>
<br>
<br>
In my source I found a mistake. I had a require for a file.rkt<br>
which still had racket instead of racket/base. Changing this saved me 1<br>
MB compared to the initial 5602007 bytes size.<br>
<div class=""><br>
<br>
> There's a similarly significant difference in startup times for me:<br>
><br>
>  laptop% time racket -l racket/base<br>
>  0.030u 0.013s 0:00.04 100.0% 0+0k 0+0io 0pf+0w<br>
>  laptop% time racket -l racket/base -l racket/string -l<br>
> racket/cmdline \ -l racket/format -l racket/port -l racket/path -l<br>
> racket/list 0.103u 0.029s 0:00.13 92.3%       0+0k 0+0io 0pf+0w<br>
>  laptop% time racket -l racket<br>
>  0.155u 0.041s 0:00.19 100.0% 0+0k 0+0io 0pf+0w<br>
><br>
<br>
</div>These times are similar on my system.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Manfred<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</div></div></blockquote></div><br></div>