[racket-dev] Racket runs on 64-bit ubuntu, right?

2010-10-05 Thread John Clements
I have a student who hasn't succeeded in running compiled-from-source DrRacket 
on 64-bit ubuntu.  Specifically, he claims it dumps core with


SIGSEGV MAPERR si_code 1 fault on addr 0x4
Aborted


on startup.  I have *not* tried to verify this myself, so he's almost certainly 
made a minor mistake.  I'm writing this just in case one of you has a knee-jerk 
oh yeah, that doesn't work  to give me.  Otherwise, please ignore this e-mail.

John



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

[racket-dev] single-instantiation trick: kludgy workaround for planet packages?

2010-10-05 Thread John Clements
A couple of weeks ago, you showed me the trick that rackunit uses to allow 
single-instantiation of a modules.  I'm now trying to do this
for a planet package, and it looks like I have to change the required module 
from being a relative to being an absolute path.  That is:

(require (prefix-in drlink: private/drracket-link))

must become

(require (prefix-in drlink: (planet drracket-link.rkt (clements 
rsound.plt) private)))

This works, but seems extremely fragile.  Does it make sense to you that this 
would be required?  Without it, I get the error below:


namespace-attach-module: unknown module (in the source namespace): 
#resolved-module-path:/Users/clements/clements/planet-collects/rsound/private/drracket-link.rkt

 === context ===
/Users/clements/plt/collects/drracket/private/rep.rkt:1660:6: 
initialize-console method in ...cket/private/rep.rkt:508:4
/Users/clements/plt/collects/drracket/private/unit.rkt:4755:4: 
create-new-drscheme-frame
/Users/clements/plt/collects/drracket/private/main.rkt:663:0: make-basic
/Users/clements/plt/collects/drracket/tool-lib.rkt: [running body]
/Users/clements/plt/collects/drracket/private/drracket-normal.rkt: [running 
body]
/Users/clements/plt/collects/drracket/drracket.rkt: [running body]


semi-happy,

John



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

Re: [racket-dev] [plt] Push #21156: master branch updated

2010-09-28 Thread John Clements

On Sep 28, 2010, at 8:23 AM, Eli Barzilay wrote:

 Can we please not have this??  The whole point of having uniform names
 is that you can use require/provide things easily so there's no need
 for a library.

Sure, I don't feel strongly about it.  Done.

To be clear, my use case is this: I'm trying to debug a seg fault in a large 
library, with 500 uses of 'unsafe-' operators.  I want to see whether using 
the corresponding safe variants eliminates the crash.  The global search and 
replace is a bit of a pain; replacing racket/unsafe/ops with 
racket/unsafe/safe-ops is much easier.

Naturally, though, you can always roll your own as needed.

John



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

Re: [racket-dev] [plt] Push #21156: master branch updated

2010-09-28 Thread John Clements

On Sep 28, 2010, at 10:09 AM, Eli Barzilay wrote:

 An hour ago, John Clements wrote:
 
 On Sep 28, 2010, at 8:23 AM, Eli Barzilay wrote:
 
 Can we please not have this??  The whole point of having uniform names
 is that you can use require/provide things easily so there's no need
 for a library.
 
 Sure, I don't feel strongly about it.  Done.
 
 Thanks(!)
 
 I should have clarified further -- what we have at the momemt is a
 consisten use of an unsafe part in the path for potentially
 segfaulting functionality.  So having some unsafe/safe thing doesn't
 make much sense (and begs the question about undebugging some things
 with unsafe/safe/unsafe).
 
 In any case, I think that something that would have made you happier
 is for the `unsafe/foo' libraries to provide the same name as the safe
 ones.  This way you'd only need to toggle the `unsafe/' prefix on or
 off.  (I'd like that change too, but we're probably deep enough in the
 current setup to change that...)

I thought about this, but I really like the current setup, where the 
unsafe-ness must be indicated at the use of the function.  I think this is 
especially true of common primitives like vector-length.  If I were debugging 
a piece of code, it would never occur to me that an ordinary-looking call to 
'vector-length' might actually be unsafe.

 
 
 To be clear, my use case is this: I'm trying to debug a seg fault in
 a large library, with 500 uses of 'unsafe-' operators.  I want to
 see whether using the corresponding safe variants eliminates the
 crash.  The global search and replace is a bit of a pain; replacing
 racket/unsafe/ops with racket/unsafe/safe-ops is much easier.
 
 Naturally, though, you can always roll your own as needed.
 
 First, I think that what was suggested earlier should work -- changing
 this:
 
  (require unsafe/foo)
  -
  (require (prefix-in unsafe- foo))

This doesn't work for (require racket/unsafe/ops); that's why I wanted to add 
it.

 
 But the more common use case (which I've done in a number of places)
 is to use `foo' first, make sure the code runs and write a ton of
 tests, then turn the require into one that *drops* the `unsafe-'
 prefix.

This frightens me, for the reasons I describe above.

 
 A slightly different approach is in `racket/private/sort' -- define
 names that are used throughout, and switch the definition from a safe
 one to an unsafe one.

That sounds like what you described before, though perhaps I'm not 
understanding you.


John



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

[racket-dev] random-access file reading

2010-09-28 Thread John Clements
I want to read a chunk from the middle of a 50-megabyte file.  As far as I can 
see, there are no random-access file primitives currently in DrRacket.  Also, I 
don't see a skip-bytes, so it looks like I should be allocating a junk buffer 
and then repeatedly calling read-bytes to read the skipped portion into the 
junk buffer.  

Tell me if there's a simpler way to do this; doc pointers always appreciated.

John



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

[racket-dev] safe version of racket/unsafe/ops?

2010-09-27 Thread John Clements
I'm sure I'm just missing something obvious here, but is there a library that 
provides things like unsafe-vector-length that are actually references to the 
safe versions? I have a core dump occurring in (someone else's) unsafe code, 
and I'd much rather just import a different library than go through and take 
out the unsafe everywhere.  I know that TR has such a library (mutatis 
mutandis).  If it doesn't already exist, could I create 

racket/unsafe/safe-ops

?

John



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

Re: [racket-dev] safe version of racket/unsafe/ops?

2010-09-27 Thread John Clements

On Sep 27, 2010, at 3:45 PM, Robby Findler wrote:

 How about prefix-in with unsafe- as the prefix?

You still have to specify the right set of functions, right? But yes, that's 
all I'm thinking of.

John

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

[racket-dev] File is really large ( 5 MB), really open?

2010-09-26 Thread John Clements
I accidentally opened a sound file in DrRacket today; cue six minutes of 
thrashing and computer unhappiness.  Would it be okay if I added a second-check 
dialog to DrRacket that checked the size of a file before opening it, and asked 
for confirmation before opening files larger than, say, 5MB? 

John



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

[racket-dev] u8vector-cpointer documented but unimplemented

2010-09-26 Thread John Clements
The function u8vector-cpointer is documented, but doesn't exist; this is 
presumably because the u8vector functions are actually byte-string functions, 
but it's not clear to me whether the absence of u8vector-cpointer is an 
oversight or whether it would violate abstractions in bad ways and hence simply 
shouldn't exist.

John



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

Re: [racket-dev] File is really large ( 5 MB), really open?

2010-09-26 Thread John Clements

On Sep 26, 2010, at 9:58 PM, Jake Eakle wrote:

 I would humbly suggest that this dialog should, in order of ease-to-implement
 
 a) display the size of the file,
 b) let the user know why they might not wish to proceed, and
 c) give some indication of how much memory they should probably have in order 
 to expect reasonable performance.

Sounds good to me: go for it!

John Clements



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

[racket-dev] speeding up 16-bit integer adds

2010-09-23 Thread John Clements
I'm trying to add together big buffers. The following code creates two big fat 
buffers of 16-bit integers, and adds them together destructively. It looks to 
me like this code *could* run really fast, but it doesn't; this takes about 8.5 
seconds. Changing + to unsafe-fx+ has no detectable effect.  Is there 
allocation going on in the inner loop? I'd hoped that since an _sint16 fits 
safely in 31 bits, that no memory would be allocated in the inner loop. Grr! 
Any suggestions? (I ran a similar test on floats, and C ran about 64x faster, 
about a tenth of a second).

Doc pointers appreciated as always,

John

#lang racket 

(require ffi/unsafe)

(define (make-buffer-of-small-random-ints len)
  (let ([buf (malloc _sint16 len)])
(for ([i (in-range len)])
  (ptr-set! buf _sint16 i 73))
buf))

(define buf-len (* 44100 2 200))

(define b1 (make-buffer-of-small-random-ints buf-len))
(define b2 (make-buffer-of-small-random-ints buf-len))

(time
 (for ([i (in-range buf-len)])
   (ptr-set! b1 _sint16 i 
 (+ (ptr-ref b1 _sint16 i)
(ptr-ref b2 _sint16 i)

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

Re: [racket-dev] speeding up 16-bit integer adds

2010-09-23 Thread John Clements

On Sep 23, 2010, at 8:16 PM, Matthew Flatt wrote:

 One more thought: Do you get to pick whether you use 16-bit integers or
 64-bit floating-point numbers? The `flvector-' and `f64vector-'
 operations are inlined by the JIT and recognized for unboxing, so using
 flonum vectors and operations could be much faster than using raw
 pointers and 16-bit integers.

Well, that's an option, albeit a somewhat unappetizing one; as the 44100 in my 
code no doubt signaled, I'm reading and writing sound data here, and both 
16-bit ints and 32-bit floats are fairly common. 64-bit floats will be another 
factor of 2 in memory, for a total of 42 megabytes per minute.

I ran some tests, using flvectors and unsafe operations everywhere. (Code 
below.)

My tests called for 400 seconds of audio, or 282 Megabytes, and this made 
DrRacket flustered.  Restarting and running with half that size yielded (quite 
variable) times between 1 and 3 seconds, so that appears about twice as fast as 
the fixed-point one.

I'm tempted to write a little C code, but then of course I have to compile it 
separately for every darn platform.

Thanks again for your help,

John


#lang racket

(require ffi/unsafe
 racket/flonum
 racket/unsafe/ops)

(define (make-buffer-of-small-randoms len)
  (let ([buf (make-flvector len)])
(for ([i (in-range len)])
  (unsafe-flvector-set! buf i 0.73))
buf))

(define buf-len (* 44100 2 100))

(define b1 (make-buffer-of-small-randoms buf-len))
(define b2 (make-buffer-of-small-randoms buf-len))

(time
 (for ([i (in-range buf-len)])
   (unsafe-flvector-set! b1 i
 (unsafe-fl+ (unsafe-flvector-ref b1 i)
 (unsafe-flvector-ref b2 i)

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

Re: [racket-dev] speeding up 16-bit integer adds

2010-09-23 Thread John Clements

On Sep 23, 2010, at 9:46 PM, John Clements wrote:

 
 On Sep 23, 2010, at 8:16 PM, Matthew Flatt wrote:
 
 One more thought: Do you get to pick whether you use 16-bit integers or
 64-bit floating-point numbers? The `flvector-' and `f64vector-'
 operations are inlined by the JIT and recognized for unboxing, so using
 flonum vectors and operations could be much faster than using raw
 pointers and 16-bit integers.
 
 Well, that's an option, albeit a somewhat unappetizing one; as the 44100 in 
 my code no doubt signaled, I'm reading and writing sound data here, and both 
 16-bit ints and 32-bit floats are fairly common. 64-bit floats will be 
 another factor of 2 in memory, for a total of 42 megabytes per minute.
 
 I ran some tests, using flvectors and unsafe operations everywhere. (Code 
 below.)

Update before going to bed; re-running the C tests with doubles everywhere and 
the same setup (simply adding together two big buffers) took about half a 
second, so in fact in this instance Racket is less that 10x slower, which is as 
fast as I would expect it to be.  So basically, it sounds like the flvectors 
are the way to go, if I can stomach the memory usage.

Thanks again,

John



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

[racket-dev] rename + changes = bad? (was: Fwd: [plt] Push #21110: master branch updated)

2010-09-17 Thread John Clements
Oof... it looks like doing a rename plus a few changes pretty effectively hides 
those changes, though I can dig them out with 'git annotate'.  Do we have a 
policy (or should we have) a policy stating that you shouldn't put a rename and 
modifications to that file in the same commit?

John

Begin forwarded message:

 From: cleme...@racket-lang.org
 Date: September 17, 2010 10:19:37 AM PDT
 To: dev@racket-lang.org
 Subject: [plt] Push #21110: master branch updated
 
 clements has updated `master' from 04defa4937 to a095ebc326.
  http://git.racket-lang.org/plt/04defa4937..a095ebc326
 
 =[ 1 Commits ]==
 
 Directory summary:
 100.0% collects/test-engine/
 
 ~~
 
 a095ebc John Clements cleme...@racket-lang.org 2010-09-17 10:18
 :
 | added format arg to printf to avoid corner-case printf bugs, rackety changes
 :
  M collects/test-engine/racket-tests.rkt |2 +-
  M collects/test-engine/test-display.scm |2 +-
  R collects/test-engine/{test-engine.scm = test-engine.rkt} (99%)
 
 =[ Overall Diff ]===
 
 collects/test-engine/racket-tests.rkt
 ~
 --- OLD/collects/test-engine/racket-tests.rkt
 +++ NEW/collects/test-engine/racket-tests.rkt
 @@ -5,7 +5,7 @@
  scheme/match
lang/private/continuation-mark-key
  (only scheme/base for memf findf)
 - test-engine.scm
 + test-engine.rkt
test-info.scm
  )
 
 
 collects/test-engine/test-display.scm
 ~
 --- OLD/collects/test-engine/test-display.scm
 +++ NEW/collects/test-engine/test-display.scm
 @@ -6,7 +6,7 @@
  framework
  string-constants
  test-info.scm
 - test-engine.scm
 + test-engine.rkt
print.ss
(except-in deinprogramm/signature/signature signature-violation) ; 
 clashes with test-engine
deinprogramm/quickcheck/quickcheck)
 
 *** See above for renames and copies ***



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

Re: [racket-dev] rename + changes = bad? (was: Fwd: [plt] Push #21110: master branch updated)

2010-09-17 Thread John Clements

On Sep 17, 2010, at 11:03 AM, Sam Tobin-Hochstadt wrote:

 On Fri, Sep 17, 2010 at 1:36 PM, John Clements
 cleme...@brinckerhoff.org wrote:
 Oof... it looks like doing a rename plus a few changes pretty effectively 
 hides those changes, though I can dig them out with 'git annotate'.  Do we 
 have a policy (or should we have) a policy stating that you shouldn't put a 
 rename and modifications to that file in the same commit?
 
 I believe that this is an issue with Eli's email formatting script,
 and not with git itself (the github diff is fine:
 http://github.com/plt/racket/commit/a095ebc326aa35b5b19f314080855db5d55ed49b

Github seems to do a better job than 'git diff' or 'git show' with these; both 
of these simply showed me an entire file of lines added and an entire file of 
lines deleted.

John




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

[racket-dev] Shared-instantiation modules

2010-09-10 Thread John Clements
Seems like a FAQ, but:

I want to associate a single sound player with a drscheme process.  When 
student code runs, it needs to send messages to that sound player.  I want to 
make sure there's only one running at a time.

The first thing that pops into my head is some kind of shared-require form, 
but I don't see such a thing.

The second thing that pops into my head is a tool; I understand how I can set 
up a tool so that it gets run only once at startup, and creates a value that 
gets associated with every DrRacket frame.  Unfortunately, I can't figure out 
the second part of the equation: how does a user program then connect to the 
DrRacket frame to get the value? I don't want to make the user click some extra 
button every time they run their program, and I *really* don't want to mess 
around with language levels and manipulating the user's source code.

Basically, I just want a process-level global value.  I must be missing 
something really obvious, here.

Thanks,

John





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

Re: [racket-dev] Shared-instantiation modules

2010-09-10 Thread John Clements

On Sep 10, 2010, at 8:17 PM, Eli Barzilay wrote:

 On Sep 10, Robby Findler wrote:
 FWIW, this is one path that tools can use to circumvent DrRacket's
 property (well, the property we work towards anyways) that no program
 can cause DrRacket itself to crash or freeze. So if you do provide
 things to the user's program in this manner, please try to keep that
 invariant in mind.
 
 Actually, for John's case I think that what he really needs is to be
 able to break more than just drracket...  There was a plan at some
 point to have a single process-global hash table which he'd be able to
 use for cases where some external resource is concerned -- and this
 sounds like what is really needed here.  For example, he'll need it if
 he wants to make sounds at syntax time.  [This is also related to some
 huge and bloody flamewar on c.l.s a few years ago, re the ability to
 implement IO buffering in racket.]

Sounds at syntax time

:)

I certainly hadn't thought about that, and it seems unlikely that my 
first-quarter students will be clamoring for it, either.

Nevertheless, it's true that a process-global hash table for external resources 
is more or less what I was thinking about.

The question is (for the moment) moot, though, because it looks like the tool 
interface does everything I need.

John



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

Re: [racket-dev] [racket-bug] all/11166: stepper index off by one

2010-09-07 Thread John Clements

On Sep 7, 2010, at 6:56 AM, mlsm...@cs.vassar.edu wrote:

 A new problem report is waiting at
  http://bugs.racket-lang.org/query/?cmd=viewpr=11166
 
 Reported by Marc Smith for release: 5.0.1
 
 *** Description:
 When stepping through a program in BSL, the stepper shows current progress, 
 e.g., 
 0/3, 1/3, 2/3
 But since the step numbers start at 0, the progress only goes to (n-1)/n, and 
 not n/n when the user has stepped through the entire program.
 I didn't notice this situation, but my students did during class, which 
 became their first lesson in 0-based indexing (for better or worse).
 Thanks! Marc

That was a deliberate choice, though I could be convinced that it was the wrong 
one; I think I was trying to mirror the behavior of the current search 
command.

Any other opinions?

John



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

[racket-dev] Q. about live snips

2010-09-07 Thread John Clements
I'm writing code for beginners that produces sound values.  I'd like to 
render these values as snips that have a start and a stop button.  

My first experiment looked like this:

#lang racket

(require racket/gui)

(define f (make-object image-snip% 
/Users/clements/plt/collects/icons/mini-plt.xpm))

(define (g)
  (send f load-file /Users/clements/plt/collects/icons/j.gif))


This worked in the sense that the value was rendered graphically, but didn't 
work in the sense that calling (g) didn't change an already-displayed image. 
Viz:

inline: Screen shot 2010-09-07 at 3.37.28 PM.png 

This suggests to me that it would be hard to implement a sound-player-snip 
that updated itself to display its status.

My hope is that I'm wrong, and there's some easy way to make snips live in 
this sense.

Any help greatly appreciated.

John



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

[racket-dev] match/fail*: re-inventing the wheel for better error messages with match?

2010-09-02 Thread John Clements
Match is fantastic, and sometimes you want finer control over the error 
messages. This morning I whipped up a match/fail* macro, which successively 
matches against a sequence of patterns, and allows you to specify a separate 
fail message for each layer.

It's a simple macro, and I give a use of it  (my use of it) below, followed by 
its simple definition.

FWIW, I *love* how check syntax shows the binding arrows from the pattern 
variables to the uses, outside of the defining clause.  

Is there something like this already in an existing library? If not, would this 
be useful to anyone?

John

p.s.: the use of syntax-parse in the definition of the macro was awesome, and 
produced at least one really nice error message for me.


;; first-line-checker : string - (or/c string symbol)
;; returns a string, indicating an error message, or 'success,
;; indicating success.
(provide first-line-checker)
(define (first-line-checker first-line)
  (match/fail* 'success
[(tokenize-string first-line) `(public ,rest ...) This function 
signature must begin with the word \public\.]
[rest `(,(? type-name? ty) ,rest ...) (format After the word public, you 
need a type name.)]
[ty int This function's return type must be \int\.]
[rest `(,pre ... ( ,args ... ) ,leftover ...) A function header must 
contain a pair of parentheses around the argument list.]
[leftover `() There shouldn't be anything after the right-paren (\)\).]
[pre `(,name) (if (empty? pre)
  There must be a function name between the type of the 
function and the argument list.
  The function name (a single word) is the only thing that 
comes between the type of the function and the argument list.)]
[name getApproxAge The name of the function should be \getApproxAge\.]
[args `(,arg1 ... , ,arg2 ...) You need a comma in the argument list to 
separate the two arguments.]
[arg1 `(,arg1ty ,arg1name) The first argument should consist of a type and 
a name (exactly two words).]
[arg1ty (? type-name? _) The first part of the first argument must be a 
type.]
[arg1ty int The first argument should be of type \int\.]
[arg1name birthYear The name of the first argument should be 
\birthYear\.]
[arg2 `(,arg2ty ,arg2name) The second argument should consist of a type 
and a name.]
[arg2ty (? type-name? _) The first part of the second argument must be a 
type.]
[arg2ty int The second argument should be of type \int\.]
[arg2name birthYear The name of the second argument should be 
\birthYear\.]))

;; the match/fail macro.  
;; A use of match/fail contains a single 'success' value
;; followed by a bunch of fail clauses.  Each fail clause
;; matches a value against a pattern and signals the given
;; error if it fails.  If it succeeds, it goes on to the 
;; next clause.  Note that pattern variables bound in each
;; pattern may be used in the remaining clauses.
(define-syntax (match/fail* stx)
  (define-syntax-class match/fail-clause
#:description match/fail clause
;; pat:expr *can't* be right here...
(pattern (val:expr pat:expr fail:expr)))
  
  (syntax-parse stx
[(_ retval) #'retval]
[(_ retval:expr clause:match/fail-clause more-clauses ...)
 #`(match clause.val 
 [clause.pat (match/fail* retval more-clauses ...)]
 [fail clause.fail])]))

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

Re: [racket-dev] parallel raco setup failing on Linux machine?

2010-09-01 Thread John Clements

On Sep 1, 2010, at 1:55 PM, John Clements wrote:

 I'm trying to run 'make install' on a Linux VPS, and it's halting -- at 
 different points -- with errors that look like this:
 
 ...
 raco setup: made: framework
 raco setup: made: browser/private
 raco setup: made: framework/private
 raco setup: made: games
 raco setup: made: graphics
 raco setup: made: graphics/scribblings
 raco setup: made: frtime (FrTime)
 raco setup: made: gui-debugger
 match: no matching clause for (list (list (cc '(#path:frtime) 
 #path:/home/clements/plt/collects/frtime frtime (FrTime) 
 #procedure:info? #path:/home/clements/plt/collects 
 #path:/home/clements/plt/collects/info-domain/compiled/cache.rktd '((lib 
 frtime) 1 0)) scribblings...
 
 === context ===
 /home/clements/plt/collects/racket/match/runtime.rkt:19:0: match:error
 /home/clements/plt/collects/setup/parallel-do.rkt:102:69
 /home/clements/plt/collects/setup/setup-unit.rkt:601:17: thunk
 
 make[1]: *** [install-3m] Error 1
 make[1]: Leaving directory `/home/clements/plt/src/build'
 make: *** [install] Error 2
 ESC]0;cleme...@li21-127: ~/plt/src/build^gcleme...@li21-127:~/plt/src/build$ 
 
 FWIW, this is today's commit 
 
 4c35af2eef7fe95efe89a465e221443b1b653702
 
 .

More info: the system log suggests that this is what happens when a process is 
killed for running out of memory (thanks, logcheck!). I'm guessing that the 
parallel build could observe and report this more transparently.

John

Here's the log, FWIW:

This email is sent by logcheck. If you no longer wish to receive
such mails, you can either deinstall the logcheck package or modify
its configuration file (/etc/logcheck/logcheck.conf).

System Events
=-=-=-=-=-=-=
Sep  1 16:41:58 li21-127 kernel: oom-killer: gfp_mask=0x201d2, order=0
Sep  1 16:41:58 li21-127 kernel:  [c014f979] out_of_memory+0x1c9/0x200
Sep  1 16:41:58 li21-127 kernel:  [c015172f] __alloc_pages+0x28f/0x310
Sep  1 16:41:58 li21-127 kernel:  [c0152af9] 
__do_page_cache_readahead+0x139/0x2f0
Sep  1 16:41:58 li21-127 kernel:  [c014a30d] __delayacct_blkio_end+0x2d/0x60
Sep  1 16:41:58 li21-127 kernel:  [c04e294b] __wait_on_bit_lock+0x5b/0x70
Sep  1 16:41:58 li21-127 kernel:  [c014bbc0] sync_page+0x0/0x60
Sep  1 16:41:58 li21-127 kernel:  [c014bbae] __lock_page+0x7e/0x90
Sep  1 16:41:58 li21-127 kernel:  [c014c812] filemap_nopage+0x2f2/0x3f0
Sep  1 16:41:58 li21-127 kernel:  [c015b504] __handle_mm_fault+0x1d4/0x18a0
Sep  1 16:41:58 li21-127 kernel:  [c014f217] mempool_free+0x77/0x90
Sep  1 16:41:58 li21-127 kernel:  [c033704a] elv_next_request+0x12a/0x210
Sep  1 16:41:58 li21-127 kernel:  [c01782f0] bio_endio+0x40/0x80
Sep  1 16:41:58 li21-127 kernel:  [c038e629] do_blkif_request+0x29/0x3c0
Sep  1 16:41:58 li21-127 kernel:  [c014f217] mempool_free+0x77/0x90
Sep  1 16:41:58 li21-127 kernel:  [c033c23d] blk_start_queue+0x6d/0xb0
Sep  1 16:41:58 li21-127 kernel:  [c038eb88] blkif_int+0x198/0x230
Sep  1 16:41:58 li21-127 kernel:  [c0112127] do_page_fault+0x797/0xbb8
Sep  1 16:41:58 li21-127 kernel:  [c0111990] do_page_fault+0x0/0xbb8
Sep  1 16:41:58 li21-127 kernel:  [c01055df] error_code+0x2b/0x30
Sep  1 16:41:58 li21-127 kernel: Mem-info:
Sep  1 16:41:58 li21-127 kernel: DMA per-cpu:
Sep  1 16:41:58 li21-127 kernel: cpu 0 hot: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: cpu 0 cold: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: cpu 1 hot: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: cpu 1 cold: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: cpu 2 hot: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: cpu 2 cold: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: cpu 3 hot: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: cpu 3 cold: high 0, batch 1 used:0
Sep  1 16:41:58 li21-127 kernel: DMA32 per-cpu: empty
Sep  1 16:41:58 li21-127 kernel: Normal per-cpu:
Sep  1 16:41:58 li21-127 kernel: cpu 0 hot: high 186, batch 31 used:28
Sep  1 16:41:58 li21-127 kernel: cpu 0 cold: high 62, batch 15 used:51
Sep  1 16:41:58 li21-127 kernel: cpu 1 hot: high 186, batch 31 used:109
Sep  1 16:41:58 li21-127 kernel: cpu 1 cold: high 62, batch 15 used:60
Sep  1 16:41:58 li21-127 kernel: cpu 2 hot: high 186, batch 31 used:16
Sep  1 16:41:58 li21-127 kernel: cpu 2 cold: high 62, batch 15 used:45
Sep  1 16:41:58 li21-127 kernel: cpu 3 hot: high 186, batch 31 used:178
Sep  1 16:41:58 li21-127 kernel: cpu 3 cold: high 62, batch 15 used:34
Sep  1 16:41:58 li21-127 kernel: HighMem per-cpu: empty
Sep  1 16:41:58 li21-127 kernel: Free pages:4908kB (0kB HighMem)
Sep  1 16:41:58 li21-127 kernel: Active:60124 inactive:60041 dirty:0 
writeback:0 unstable:0 free:1227 slab:3459 mapped:17 pagetables:902
Sep  1 16:41:58 li21-127 kernel: DMA free:2104kB min:88kB low:108kB high:132kB 
active:3612kB inactive:3500kB present:16384kB pages_scanned:11649 
all_unreclaimable? yes
Sep  1 16:41:58 li21-127 kernel: lowmem_reserve[]: 0 0 504 504
Sep  1 16:41:58 li21-127 kernel: DMA32 free:0kB min:0kB low:0kB high:0kB 
active

[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] Racket stuffs

2010-08-26 Thread John Clements

On Aug 26, 2010, at 2:51 PM, Eli Barzilay wrote:

 On Aug 17, Eli Barzilay wrote:
 So now I have these counts:
 
  http://tmp.barzilay.org/r1.png   4
  http://tmp.barzilay.org/r3.png   1
  http://tmp.barzilay.org/r4.png   2
 
 Update on this: the first version (r1 above) was by far the most
 popular one, and it's the one on the zazzle store now.  I just got a
 batch of round stickers (with and without urls) and bumper stickers,
 and they look very nice (and they're from before the minor adjustment
 to the url line).
 
 This is all at:
 
  http://www.zazzle.com/elibarzilay

Wait... seven dollars to ship a single bumper sticker!?

John



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

Re: [racket-dev] stepper UI question

2010-08-26 Thread John Clements

On Aug 26, 2010, at 10:59 AM, Shriram Krishnamurthi wrote:

 Got it.  Thanks for all the inputs and for the great suggestion!


A couple of comments:

1) I could very well be mis-stating his position, but I think that Guillaume 
felt quite strongly that the reductions should occur in the definitions window. 
 Guillaume?

2) you describe showing steps only for non-definitions; that seems like a 
needless restriction.  Most definitions won't have steps, but those that do 
should probably be step-able. This will require at least some change to Robby's 
click on a result suggestion, since definitions don't currently produce 
output text. Perhaps this is why you (Robby?) suggested excluding these.

3) It's not clear how you want to handle test cases; they don't currently 
generate anything in the interactions window, and yet this sounds like the 
thing that you're *most* likely to want to be able to step.  For the sake of 
argument, let me propose something:

the result of generate-report (the hidden summary-generation call that 
check-expect inserts) should be a snip that shows up in the interactions 
window, called (e.g.) Test Report.  Clicking on this (right-clicking on 
this?) should open a window showing the test cases in some tabular format, 
indicating which ones succeeded and which ones failed.  Selecting one of these, 
the user could choose to see its steps. 

Additional hidden benefit of this structure: because of the syntactic 
fol-de-rol that surrounds test cases, it should be fairly easy in such a 
tabular window to also show those test cases that didn't get run at all, 
because an earlier one caused a runtime error.

Finally, we probably want to think a bit about what happens on a runaway 
computation.  The current stepper handles this reasonably; it would be nice if 
the user could step through these computations to see what went wrong.  Most of 
my initial thoughts on how to handle this require unpleasantly significant 
changes to the way that the interactions window works.


John



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

Re: [racket-dev] stepper UI question

2010-08-26 Thread John Clements

On Aug 26, 2010, at 5:23 PM, Shriram Krishnamurthi wrote:

 I know Guillaume proposed to do it in the context of the editor.  I'm
 unconvinced that that's the right way to go.  At any rate, integrating
 into an existing bit of infrastructure (def'ns or inter's) is going to
 be much more complex than an off-line prototype that people can
 critique.  So we should do that regardless.
 
 You and Kathy raise good and interesting points.  This tells me that
 there is not yet a good answer to *where* the stepper should run.  I
 believe this is quite separable from *how* the stepper runs, ie, how
 it displays the sequence of expressions.  Since I feel that is
 currently the biggest problem with it, it seems wise that we focus on
 the latter for now.  Once we make some real progress on that
 high-order bit, we can see what percolates up.
 
 Do others agree that this is the high-order bit?  If not (and perhaps
 even if so), can you articulate why?

I do agree.  Your original message seemed to be entirely focused on the *where* 
question, which I think is why it's what we've all been discussing.

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-19 Thread John Clements

On Aug 17, 2010, at 4:27 PM, Jay McCarthy wrote:

 On Tue, Aug 17, 2010 at 2:24 PM, John Clements
 cleme...@brinckerhoff.org wrote:
 
 On Aug 17, 2010, at 3:57 PM, Jay McCarthy wrote:
 
 We're attempting to write down coding guidelines for the project.
 
 Here is a first attempt:
 
 http://faculty.cs.byu.edu/~jay/tmp/201008161509-guidelines.html
 
 Please comment.
 
 You write
 
 As long as your code fulfills its promises and meets each of these 
 criteria, you can push incrementally.
 
 For example, I may be working on adding an exhaustive queue library to 
 Racket. I imagine supporting 30 different functions across 5 different queue 
 implementations. I don't have to wait to push until all 150 function 
 implementations are documented, tested, and stressed. I can push whenever I 
 make progress on each of the required points.
 
 Either this is contradictory, or I'm misunderstanding it.  The first 
 paragraph suggests that the code must meet each of the criteria; the second 
 suggests that as long as it's *closer* to meeting the required criteria, 
 it's fine.
 
 Maybe you can help me say it better. What I'm trying to get at is that
 150 functions is perfect to me, but if I only promise 30 functions and
 meet the criteria for each of them, then I can commit even though it
 is not perfect. Progress here is meeting the 4 points for each new
 function I push.

Okay, so every individual piece that's committed should meet the criteria.  I 
think that's the most sensible reading of what you wrote, but it also frightens 
me. I don't think that very much of our current code meets these criteria, and 
I'm worried that trying to enforce them is going to pull us into a sinkhole of 
no-new-functionality. I suppose that we should write down what we want before 
we figure out how to get there, though. 

As far as this piece text is concerned, I think I would replace that last 
sentence with essentially what you wrote in response:

 For example, I may be working on adding an exhaustive queue library to 
 Racket. I imagine supporting 30 different functions across 5 different queue 
 implementations, for a total of 150 functions.  If I have just 30 of these 
 documented, tested, and stressed, then it's fine for me to push.

 
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-17 Thread John Clements

On Aug 17, 2010, at 3:57 PM, Jay McCarthy wrote:

 We're attempting to write down coding guidelines for the project.
 
 Here is a first attempt:
 
 http://faculty.cs.byu.edu/~jay/tmp/201008161509-guidelines.html

 and that you and your readers will so in the future

Will so? Should that have been will also? Or do so?

John



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

[racket-dev] Added Sierpinski example to wikipedia page

2010-08-16 Thread John Clements
I happened upon the Racket wikipedia page again, and yet again the Hello 
World section made me want to cry.  So I deleted it, and replaced it with the 
straightforward version of racket's Hello, World! program, viz.:

#lang racket
Hello, World!

...then I added the sierpinski example from the racket-lang front page.  I'm 
hoping that whoever wrote this code will either not object, or change it.

John



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

[racket-dev] x86_64 libs not available to 32-bit ffi, right?

2010-08-03 Thread John Clements
Reality check: I can't use the Racket ffi libraries to load 64-bit x86_64 
shared libs, can I?

John



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

Re: [racket-dev] P4P: A Syntax Proposal

2010-07-30 Thread John Clements

On Jul 30, 2010, at 6:47 AM, Robby Findler wrote:

 On Fri, Jul 30, 2010 at 4:05 AM, Eli Barzilay e...@barzilay.org wrote:
 IMO, this thing is missing the point (the usual parens, ewww! one),
 as long as it ignores infix.
 
 Seems to me that this point directly contradicts one of Shriram's
 design goals, namely showing that + is no more special than append or
 one of your own functions.

That may be true, but it doesn't counter Eli's point, which I think is entirely 
valid.  I had precisely the same reaction when I saw that code.

John 



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

[racket-dev] Windows test bundle 29M vs. 47M for other platforms?

2010-07-19 Thread John Clements
On this page

http://pre.racket-lang.org/release/installers/

the reported size of the Windows installer is 29M, vs. about 47 or 48 M for 
other platforms.  I see that this was true of the 5.0 release as well, so this 
is probably expected, but I'm curious: why is this? Is it just that the other 
platforms are distributed uncompressed and rely upon dynamic compression?

John



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

[racket-dev] make xml structs transparent?

2010-06-18 Thread John Clements
Is there some good reason why the 'document' and 'prolog' structures in the xml 
library are not transparent? In the just trying to see what's there stage of 
programming, it would be a lot simpler not to have to dig through them with 
explicit accessors.

John 



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

Re: [racket-dev] [racket] [scribble] rendering syntax

2010-06-09 Thread John Clements

On Jun 9, 2010, at 5:05 AM, Sam Tobin-Hochstadt wrote:

 On Tue, Jun 8, 2010 at 11:27 PM, Eric Tanter etan...@dcc.uchile.cl wrote:
 Yes, Carl got my point right. And yes, that's like showing square brackets 
 in the stepper ;)
 
 Right now, the two cases are slightly asymmetric, since there's a
 syntax property indicating the use of [] or {}, but none indicating
 the use of ', #', #`, etc.  Similarly there's no syntax property
 indicating the difference between (a b) and (a . (b)) (something I
 once tried to fix, but gave up on).

Wait... what!?

I had no idea. Well, that's *great* news!

Next question: is there a way to push this through pretty-print?  I looked for 
a mechanism in the docs, but didn't find one.

Perhaps the stepper should just forget about using pretty-print. Is the 
editor's indentation machinery exposed in a way that could be used by the 
stepper?

John



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

[racket-dev] Wikipedia page

2010-06-08 Thread John Clements
I've taken a first crack at creating a 

Racket (programming language)

page in wikipedia, simply by copying the first few chunks of the PLT Scheme 
page.

This is a bit experimental, because it may be that Wikipedia has an existing 
mechanism for renaming, so I figured I'd just spend five minutes on it and wait 
for Wikipedia admins to tell me if I'm doing something redundant.

FWIW, there's also a DrScheme page to update and presumably a whole pile of 
references to PLT scheme, membership in various categories, etc.

John
 

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

<    1   2   3   4