[racket-dev] drdrdown?

2010-08-28 Thread John Clements
Is DrDr down?  The latest build I see on drdr.racket-lang.org is from 
2010-08-25.

Apologies if I missed an announcement.

John



smime.p7s
Description: S/MIME cryptographic signature
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] RFC: Coding Guidelines

2010-08-28 Thread Eli Barzilay
On Aug 19, Jay McCarthy wrote:
 I hope I've incorporated much of the feedback from this thread:
 
 http://faculty.cs.byu.edu/~jay/tmp/201008161509-guidelines.html

I (finally) read this and the thread that went on at the time, and I
don't see any point in all of this, besides a vage plea to encourage
tests, and a slightly more concrete (but impractical) call for stress
tests.

* It talks about code in general -- no distinction between introducing
  new functionality, and fixing existing code.  It looks like the
  emphasis is on the former, but that's not clear.  These two cases
  are very different.

* For the latter case of fixing someone else's code, much of this is
  irrelevant.  If I see a bug in a library, and I tell the author
  about it but it is not fixed after a while -- if the fix is simple,
  I'll probably push it.  (*I*'ll probably fix it right away.)  But
  does that mean that the responsibility of keeping the code (and
  therefore maintaining a test suite) is now all mine?  The text makes
  it look that way, but if these rules were enforced in some concrete
  way (for example -- you touch the slideshow code, and you get to be
  responsible for all its bugs) the net result would be no fixes.

* So obviously some concrete ownership change is out of the question.
  Is there some implicit change, or something less radical like you
  own your changes?  Probably -- but such things are hard to
  impossible to formalize in any way.  I think that ultimately it's
  something that gets settled between the owner of the code and the
  person fixing it.

  As someone who was very often at the fixing side, I've just learned
  to deal with things on a case by case basis.  In some cases the
  owner is happy for any fix, even if testing it is very difficult (or
  if the fix is obvious that there's no need for a test).  In other
  cases the owner rejected any change and my fixes got dumped -- and I
  learned to completely avoid such pieces of code.  It yet other cases
  the owner is relatively new, and I'll do more radical changes.  The
  bottom line is that I don't see any formal way to formalize sane
  rules and keep moving at the same time.

* As long as your code fulfills its promises seems like a weasel
  passage that can admit anything -- it's me who writes the code and
  me who does the promising, so I can always claim that I never
  promised [whatever you don't like about it, including bugs].

* There's an emphasis on stress testing -- but I don't see anything
  concrete there, and I don't see any way of making any concrete
  conclusions wrt such testing.  To give a few examples:

  - We still have the `seqn' operators in, and they still imply a
runtime cost of ~200.  What should I do in light of the stress
tests passage?
- Add a test that will actually break, knowing that fixing it is
  not a matter of some local change to the code?
- Remove the code, because a 200x is bad enough to be considered a
  bug?
- Spend a month rewriting how sequences are represented to
  actually solve the problem?
- Shut up about it, and learn to ignore it?

  - The unstable/queue code had a much smaller performance hit, but
the code in question was simple enough to make that hit much more
noticeable, so in that case even a small 5x factor is bad.

  - In Hari's code there is generally a similar performance hit, but
in that case the added functionality (being pure) is worth it, and
the code is less simple (certainly not something I'd want to write
myself whenever I need purity).  So a 5x factor is not a problem.

* A minor note: the text refers to the tests/stress/stress library,
  but that code has no real documentation.  (Looking at the code,
  there's some aspects that should really go into `time' -- like the
  ability to run the body multiple times, and average the results.)

* \Primum non nocere\ -- after looking this up (bad for such a
  document), I strongly disagree with it.  IIUC, it reads as if it
  works, don't mess with it -- which is a recipe for an ever growing
  codebase with almost no changes to existing code.  There are places
  where this does apply (eg, everything around drracket involve
  subtle state-based issues that random by-passers are unaware of),
  and places where it clearly should not apply.

  The question should really involve ownership: your own dialog with
  the owner of the code, or your willingness to become its owner.

* Speaking about ownership -- IMO it is one of the important aspect of
  any coding guidelines, yet there is nothing about it in the text.
  So IMO this is a huge omission.

  More specifically, much of my criticism of the unstable collection
  is related to ownership -- code being dumped as is and left as an
  orphan with noone to take care of problems.  (Yes, there's a policy
  of clarifying the owner of each bit, but the bottom line is that
  except for a few things, there was no discussion on it and many of
  the 

Re: [racket-dev] drdrdown?

2010-08-28 Thread Jay McCarthy
Over the past few weeks, it has been stalling during the git fetch.
The process tree looks like this:

 5907 ?S  0:00  \_ /usr/bin/git fetch
http://git.racket-lang.org/plt.git
 5908 ?S  0:00  \_ git-remote-http
http://git.racket-lang.org/plt.git http://git.racket-lang.org/plt.git
 5911 ?S  0:00  \_ git fetch-pack
--stateless-rpc --lock-pack --thin --no-progress
http://git.racket-lang.org/plt.git  EAD
 5912 ?S  0:00  \_ git fetch-pack
--stateless-rpc --lock-pack --thin --no-progress
http://git.racket-lang.org/plt.git  EAD

I'll have to spend some time debugging it on Monday. [If anyone knows
why it would stop at that point, I'd like to know.]

This output might be from git:
error: RPC failed; result=56, HTTP code = 200

I've manually restarted it so it should be fine until I can debug again.

Jay

On Sat, Aug 28, 2010 at 10:25 AM, John Clements
cleme...@brinckerhoff.org wrote:
 Is DrDr down?  The latest build I see on drdr.racket-lang.org is from 
 2010-08-25.

 Apologies if I missed an announcement.

 John


 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev




-- 
Jay McCarthy j...@cs.byu.edu
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

The glory of God is Intelligence - DC 93
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

[racket-dev] relationship between define-struct and struct

2010-08-28 Thread Shriram Krishnamurthi
What is the relationship between define-struct and struct in Racket
5.0.1?  By define-struct I mean the construct provided in ASL.  In my
custom language I have

(define-struct tv (tag value))
(provide (struct-out tv))

and I get the error

struct-out: no import for structure-type identifier in: struct:tv

Is this because define-struct suppresses the struct:tv structure-type
information?  (If so, why?)  ((And if so, is there a way to make
struct-out work shy of copying the implementation of define-struct and
adding/removing the line that hides this?))

Shriram
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] relationship between define-struct and struct

2010-08-28 Thread Shriram Krishnamurthi
On Sat, Aug 28, 2010 at 3:38 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 This works fine in #lang racket, eg:

 #lang racket
 (define-struct s (a b))
 (provide (struct-out s))

 I think that ASL's define-struct is not racket's tho, so you'd
 probably have to read the docs carefully to understand what's
 different and what it does and why it is not working properly with
 racket's struct-out.

Yes, thank you, you've just repeated my question...
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] relationship between define-struct and struct

2010-08-28 Thread Jay McCarthy
The student languages have a completely separate implementation of
define-struct from Racket.

[lang/private/teach.rkt: do-define-struct: line 716

For a reason unknown to me, the struct type descriptor [line 805]
returned by make-struct-type does not get defined (although it does
check to make sure it could be defined.) [line 931]

I'm not entirely sure why this is although I anticipate that is has to
do with the fact that such a value has no worth in *SL, because there
are no operations on it. Thus it would be very awkward in the docs to
say that a thing is defined with define-struct that has no meaning to
students.

Since struct-out expects this thing to be defined, it errors. It is a
bit awkward that the error suggests that it should have been imported,
rather than defined in the file.

Jay

On Sat, Aug 28, 2010 at 1:23 PM, Shriram Krishnamurthi s...@cs.brown.edu 
wrote:
 What is the relationship between define-struct and struct in Racket
 5.0.1?  By define-struct I mean the construct provided in ASL.  In my
 custom language I have

 (define-struct tv (tag value))
 (provide (struct-out tv))

 and I get the error

 struct-out: no import for structure-type identifier in: struct:tv

 Is this because define-struct suppresses the struct:tv structure-type
 information?  (If so, why?)  ((And if so, is there a way to make
 struct-out work shy of copying the implementation of define-struct and
 adding/removing the line that hides this?))

 Shriram
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev




-- 
Jay McCarthy j...@cs.byu.edu
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

The glory of God is Intelligence - DC 93
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] printing images in REPL

2010-08-28 Thread Shriram Krishnamurthi
The value I was returning is whatever kind of object is returned when
you embed an image in the Definitions window.  That is, this was a
pasted, atomic image, not one created by a computation.  I guess
they're not treated the same, but I'm surprised that ASL processing
the Definitions window didn't do the right conversion...

On Thu, Aug 26, 2010 at 8:25 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 At the moment there is a barn-door sized security hole in DrRacket,
 whereby it will take any snip% instance from the user's program and
 just display it in the repl. You can exploit this for Good by making
 the current-print of your language turn some values into snips (like
 images and things). 2htdp/image already does this, so that should just
 work if you return those. Its hard to tell what value Shriram's
 program was returning tho. But if it is a bitmap% object, he just has
 to do

  (make-object image-snip% ...the-bitmap-goes-here...)

 We will close this hole at some point, when we have a reasonable way
 to allow people to add new kinds of values without the security
 breach.

 Robby

 On Thu, Aug 26, 2010 at 6:17 PM, Jay McCarthy jay.mccar...@gmail.com wrote:
 From what I can tell, it comes from ensuring that DrRacket shares the
 htdp/image (or whatever) namespace with the running program so the
 structs are the same and DrRacket's default renderer is detecting it.
 I'm not sure how to replicate it though. (I tried for a bit so I could
 make #lang frtime work.)

 Jay

 On Thu, Aug 26, 2010 at 11:55 AM, Shriram Krishnamurthi s...@cs.brown.edu 
 wrote:
 What is the #lang magic that makes

 (get-image-from-web http://racket-lang.org/logo.png;)
 (instantiate (class ...) ...)

 show the image rather than just its constructor?

 Shriram
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev




 --
 Jay McCarthy j...@cs.byu.edu
 Assistant Professor / Brigham Young University
 http://teammccarthy.org/jay

 The glory of God is Intelligence - DC 93
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] printing images in REPL

2010-08-28 Thread Shriram Krishnamurthi
... which was my original question.  But thanks.

On Sat, Aug 28, 2010 at 9:36 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 I guess you don't have the print handler set up right.

 On Sat, Aug 28, 2010 at 8:23 PM, Shriram Krishnamurthi s...@cs.brown.edu 
 wrote:
 The value I was returning is whatever kind of object is returned when
 you embed an image in the Definitions window.  That is, this was a
 pasted, atomic image, not one created by a computation.  I guess
 they're not treated the same, but I'm surprised that ASL processing
 the Definitions window didn't do the right conversion...

 On Thu, Aug 26, 2010 at 8:25 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 At the moment there is a barn-door sized security hole in DrRacket,
 whereby it will take any snip% instance from the user's program and
 just display it in the repl. You can exploit this for Good by making
 the current-print of your language turn some values into snips (like
 images and things). 2htdp/image already does this, so that should just
 work if you return those. Its hard to tell what value Shriram's
 program was returning tho. But if it is a bitmap% object, he just has
 to do

  (make-object image-snip% ...the-bitmap-goes-here...)

 We will close this hole at some point, when we have a reasonable way
 to allow people to add new kinds of values without the security
 breach.

 Robby

 On Thu, Aug 26, 2010 at 6:17 PM, Jay McCarthy jay.mccar...@gmail.com 
 wrote:
 From what I can tell, it comes from ensuring that DrRacket shares the
 htdp/image (or whatever) namespace with the running program so the
 structs are the same and DrRacket's default renderer is detecting it.
 I'm not sure how to replicate it though. (I tried for a bit so I could
 make #lang frtime work.)

 Jay

 On Thu, Aug 26, 2010 at 11:55 AM, Shriram Krishnamurthi 
 s...@cs.brown.edu wrote:
 What is the #lang magic that makes

 (get-image-from-web http://racket-lang.org/logo.png;)
 (instantiate (class ...) ...)

 show the image rather than just its constructor?

 Shriram
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev




 --
 Jay McCarthy j...@cs.byu.edu
 Assistant Professor / Brigham Young University
 http://teammccarthy.org/jay

 The glory of God is Intelligence - DC 93
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] printing images in REPL

2010-08-28 Thread Robby Findler
And sorry: here's a keyword: read-language. You'll want to set up your
language so that it can answer those queries. Then drracket will call
the info proc with 'configure-runtime. I could have sworn that was
documented somewhere, but I'm not finding it (I think that must be a
bug in searching or the entry got lost or something). In any case
drracket usees it like this:

(let ([configs (get-info 'configure-runtime '())])
  (for ([config (in-list configs)])
((dynamic-require (vector-ref config 0)
  (vector-ref config 1))
 (vector-ref config 2

where get-info comes from read-language.

And yes, this is on my list to add to the guide-like docs in the tools manual.

hth,
Robby

On Sat, Aug 28, 2010 at 8:49 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 Did you forget what I explained at PLT day? You don't seem to be
 asking questions in terms of those things, so I'm not sure whether
 what I say is getting thru at all.

 Robby

 On Sat, Aug 28, 2010 at 8:47 PM, Shriram Krishnamurthi s...@cs.brown.edu 
 wrote:
 ... which was my original question.  But thanks.

 On Sat, Aug 28, 2010 at 9:36 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 I guess you don't have the print handler set up right.

 On Sat, Aug 28, 2010 at 8:23 PM, Shriram Krishnamurthi s...@cs.brown.edu 
 wrote:
 The value I was returning is whatever kind of object is returned when
 you embed an image in the Definitions window.  That is, this was a
 pasted, atomic image, not one created by a computation.  I guess
 they're not treated the same, but I'm surprised that ASL processing
 the Definitions window didn't do the right conversion...

 On Thu, Aug 26, 2010 at 8:25 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 At the moment there is a barn-door sized security hole in DrRacket,
 whereby it will take any snip% instance from the user's program and
 just display it in the repl. You can exploit this for Good by making
 the current-print of your language turn some values into snips (like
 images and things). 2htdp/image already does this, so that should just
 work if you return those. Its hard to tell what value Shriram's
 program was returning tho. But if it is a bitmap% object, he just has
 to do

  (make-object image-snip% ...the-bitmap-goes-here...)

 We will close this hole at some point, when we have a reasonable way
 to allow people to add new kinds of values without the security
 breach.

 Robby

 On Thu, Aug 26, 2010 at 6:17 PM, Jay McCarthy jay.mccar...@gmail.com 
 wrote:
 From what I can tell, it comes from ensuring that DrRacket shares the
 htdp/image (or whatever) namespace with the running program so the
 structs are the same and DrRacket's default renderer is detecting it.
 I'm not sure how to replicate it though. (I tried for a bit so I could
 make #lang frtime work.)

 Jay

 On Thu, Aug 26, 2010 at 11:55 AM, Shriram Krishnamurthi 
 s...@cs.brown.edu wrote:
 What is the #lang magic that makes

 (get-image-from-web http://racket-lang.org/logo.png;)
 (instantiate (class ...) ...)

 show the image rather than just its constructor?

 Shriram
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev




 --
 Jay McCarthy j...@cs.byu.edu
 Assistant Professor / Brigham Young University
 http://teammccarthy.org/jay

 The glory of God is Intelligence - DC 93
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev