Re: [racket-dev] gui responsiveness

2014-04-17 Thread Laurent
As a side note, I remember having stumbled on the same issue some while
back, and the way I dealt with it was to refresh based on a random outcome.
Not clean, but it works pretty well as long as the refresh calls are still
close enough.

Laurent


On Thu, Apr 17, 2014 at 12:11 AM, David Vanderson david.vander...@gmail.com
 wrote:

 Thanks for the great (and quick!) response.  It's good to know that the
 ordering is intentional, and to have some nice ways to work around it if
 needed.

 The reason I thought that refreshes were lower priority was because of the
 scrollbar behavior in the program below.  On Unix/X, dragging the scrollbar
 back and forth does lots of paints, but I only actually see a few of them.

 Does that sound like a bug to you?


 #lang racket/gui

 (define num-on-paint 0)

 (define frame
   (new frame%
(label Refresh)
(width 500)
(height 500)))

 (define (draw-screen canvas dc)
   (set! num-on-paint (add1 num-on-paint))
   (sleep 0.1) ; simulate a longer painting effort
   (send dc draw-text (~a num-on-paint  paints) 400 70))

 (define canvas
   (new canvas%
(parent frame)
(paint-callback draw-screen)
(style '(no-autoclear hscroll

 (send frame show #t)

 (send canvas init-auto-scrollbars 700 #f 0.0 0.0)




 On 04/16/2014 01:56 PM, Matthew Flatt wrote:

 You're right that it's about event ordering and not refresh coalescing.
 Since mouse events are handled after refreshes, you won't get the next
 refresh request until an earlier one is handled, after which the next
 mouse event can trigger another refresh request. I think the difference
 between Unix/X and Windows may be that Windows sends fewer mouse
 events.

 There are trade-offs here, but my experience is that ordering input
 events before refresh does not work well in general. To trigger
 refreshes at a lower priority in this case, you could use Neil's
 suggestion or change

   (send this refresh)

 to

   (set! needed? #t)
   (queue-callback (lambda () (when needed?
(set! needed? #f)
(send this refresh)))
   #f) ; = low priority

 where `needed?` is a field that's initially #f.

 At Wed, 16 Apr 2014 13:33:02 -0400, David Vanderson wrote:

 (moved to dev)

 On Linux, the attached program shows terrible responsiveness when
 dragging points around on the graph.  Can anyone else on Linux reproduce
 this behavior?


 The patch below dramatically improves the responsiveness by forcing the
 eventspace to process medium-level events (mouse movement) before
 refresh events.  Without the patch, each mouse drag causes a paint.
 With it, multiple mouse drags are processed before a paint.


 I'm unsure about this fix.  Windows doesn't show the problem (I don't
 have a mac to test), so I think it's just a GTK issue.

 My guess is that the gui layer is relying on the native libraries to
 coalesce multiple refresh requests (but this is not working with GTK).
 Can anyone confirm this?

 Thanks,
 Dave



 diff -ru
 racket-6.0_clean/share/pkgs/gui-lib/mred/private/wx/common/queue.rkt
 racket-6.0/share/pkgs/gui-lib/mred/private/wx/common/queue.rkt
 --- racket-6.0_clean/share/pkgs/gui-lib/mred/private/wx/common/queue.rkt
 2014-02-18 12:27:43.0 -0500
 +++ racket-6.0/share/pkgs/gui-lib/mred/private/wx/common/queue.rkt
 2014-04-16 09:41:16.810993955 -0400
 @@ -300,8 +300,8 @@
 (lambda (_) #f))
   (or (first hi peek?)
 (timer-first-ready timer peek?)
 -   (first refresh peek?)
   (first med peek?)
 +   (first refresh peek?)
   (and (not peek?)
sync?
;; before going
 with low-priority events,


 
 --
 [text/plain graph_ui.rkt] [~/Desktop  open] [~/Temp  open]
 _
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


[racket-dev] Fwd: [racket] canonical index of Racket courses? [was: Summer programs learning Racket for a student]

2014-04-17 Thread Matthias Felleisen

Would someone volunteer please to create and maintain such a page for Racket? 
Thanks -- Matthias




Begin forwarded message:

 From: j...@math.brown.edu
 Subject: [racket] canonical index of Racket courses? [was: Summer programs 
 learning Racket for a student]
 Date: April 16, 2014 4:45:30 PM EDT
 To: Racket Users us...@racket-lang.org
 
 I recently asked here about in-person Racket courses available this summer 
 which I could recommend to a student I've been tutoring. (Thanks again to 
 everyone who let me know about their courses so far.)
 
 To make this info easier to find, I'm wondering if the racket-lang.org 
 maintainers would be interested in publishing a canonical index of Racket 
 courses (both online and in-person) linked off the Community or Learning 
 sections on the homepage, and inviting the community to add to it.
 
 (Similarly, linking to a canonical index of Racket meetup groups (à la 
 http://clojure.meetup.com/ and https://wiki.python.org/moin/LocalUserGroups)  
 would be great too. Google turned up http://racket.meetup.com/ but 2 of the 3 
 results there are for racket sports.)
 
 Thanks, and looking forward to knowing how to become better plugged into the 
 Racket community!
 
  Racket Users list:
  http://lists.racket-lang.org/users

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] class implementation and make-primitive-class

2014-04-17 Thread dfeltey
For a course project I've been working on adding generators to contracts for 
use with contract-random-generate, and I've been trying to construct classes 
and objects from simple object/c contracts. When trying to find a way to 
functionally create a class at runtime, I came across the 
`make-primitive-class` function in class-internal.rkt. 

This function is exported, and available at a plain racket repl, but has no 
documentation that I have been able to find and the comments about it in 
class-internal.rkt seem to be incorrect. 

Trying to call it from the repl has problems also, for example (ignoring for a 
moment that the arguments aren't of the expected types)

- (make-primitive-class #f #f 'foo object% null #f null null null null)
; compose-class: arity mismatch;
;  the expected number of arguments does not match the given number
;   expected: 28
;   given: 27

The definition is in terms of compose-class and is just missing a `null` 
argument for the abstract-names, but even after fixing that in my local branch 
there is a discrepancy with the comments regarding it's first argument 
`make-struct:prim`. 

; The `make-struct:prim' function takes prop:object, a class,
  ;  a preparer, a dispatcher function, an unwrap property,
  ;  an unwrapper, and a property assoc list, and produces:
  ;* a struct constructor (must have prop:object)
  ;* a struct predicate
  ;* a struct type for derived classes (mustn't have prop:object)
  ;
  ; The supplied preparer takes a symbol and returns a num.
  ; 
  ; The supplied dispatcher takes an object and a num and returns a method.
  ;
  ; The supplied unwrap property is used for adding the unwrapper
  ;  as a property value on new objects.
  ;
  ; The supplied unwrapper takes an object and returns the unwrapped
  ;  version (or the original object).
  ;
  ; When a primitive class has a superclass, the struct:prim maker
  ;  is responsible for ensuring that the returned struct items match
  ;  the supertype predicate.

This suggests that make-struct:prim should take 7 arguments, but passing a 
function of 7 arguments to it from the repl produces:

- (make-primitive-class (lambda (a b c d e f g) (values #f #f #f)) #f 'foo 
object% null #f null null null null)
; #procedure: arity mismatch;
;  the expected number of arguments does not match the given number
;   expected: 7
;   given: 5

Also as far as I can tell `make-primitive-class` is never used in the code 
base, it is defined in class-internal.rkt, but can be commented out without 
seeming to break anything else. Does anyone know if there is a purpose for this 
function, or if there is documentation somewhere on the functions I need to 
pass it in order to construct a class. I think I'm starting to get a better 
idea of how it might work from reading more of class-internal.rkt and how the 
class* macro expands, but any guidance would be appreciated.

Thanks
Dan

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] class implementation and make-primitive-class

2014-04-17 Thread Matthew Flatt
The `make-primitive-class` function is a leftover from pre-v5.1 days,
where the problem was to turn a C++ object into a Racket object. I'm
not surprised that it has rotted away, it should be removed entirely,
and I doubt that it's what you would want even if it worked.

At Thu, 17 Apr 2014 14:49:40 -0400 (EDT), dfel...@ccs.neu.edu wrote:
 For a course project I've been working on adding generators to contracts for 
 use with contract-random-generate, and I've been trying to construct classes 
 and objects from simple object/c contracts. When trying to find a way to 
 functionally create a class at runtime, I came across the 
 `make-primitive-class` function in class-internal.rkt. 
 
 This function is exported, and available at a plain racket repl, but has no 
 documentation that I have been able to find and the comments about it in 
 class-internal.rkt seem to be incorrect. 
 
 Trying to call it from the repl has problems also, for example (ignoring for 
 a 
 moment that the arguments aren't of the expected types)
 
 - (make-primitive-class #f #f 'foo object% null #f null null null null)
 ; compose-class: arity mismatch;
 ;  the expected number of arguments does not match the given number
 ;   expected: 28
 ;   given: 27
 
 The definition is in terms of compose-class and is just missing a `null` 
 argument for the abstract-names, but even after fixing that in my local 
 branch 
 there is a discrepancy with the comments regarding it's first argument 
 `make-struct:prim`. 
 
 ; The `make-struct:prim' function takes prop:object, a class,
   ;  a preparer, a dispatcher function, an unwrap property,
   ;  an unwrapper, and a property assoc list, and produces:
   ;* a struct constructor (must have prop:object)
   ;* a struct predicate
   ;* a struct type for derived classes (mustn't have prop:object)
   ;
   ; The supplied preparer takes a symbol and returns a num.
   ; 
   ; The supplied dispatcher takes an object and a num and returns a method.
   ;
   ; The supplied unwrap property is used for adding the unwrapper
   ;  as a property value on new objects.
   ;
   ; The supplied unwrapper takes an object and returns the unwrapped
   ;  version (or the original object).
   ;
   ; When a primitive class has a superclass, the struct:prim maker
   ;  is responsible for ensuring that the returned struct items match
   ;  the supertype predicate.
 
 This suggests that make-struct:prim should take 7 arguments, but passing a 
 function of 7 arguments to it from the repl produces:
 
 - (make-primitive-class (lambda (a b c d e f g) (values #f #f #f)) #f 'foo 
 object% null #f null null null null)
 ; #procedure: arity mismatch;
 ;  the expected number of arguments does not match the given number
 ;   expected: 7
 ;   given: 5
 
 Also as far as I can tell `make-primitive-class` is never used in the code 
 base, it is defined in class-internal.rkt, but can be commented out without 
 seeming to break anything else. Does anyone know if there is a purpose for 
 this 
 function, or if there is documentation somewhere on the functions I need to 
 pass it in order to construct a class. I think I'm starting to get a better 
 idea of how it might work from reading more of class-internal.rkt and how the 
 class* macro expands, but any guidance would be appreciated.
 
 Thanks
 Dan
 
 _
   Racket Developers list:
   http://lists.racket-lang.org/dev
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] class implementation and make-primitive-class

2014-04-17 Thread Neil Van Dyke
For purposes of your course project, couldn't you make your own 
class-instance object system, atop structs or hashes, that gives you 
whatever dynamic programming features you want?  It's very-very easy to 
do a basic one (with single inheritance and single dispatch), until you 
get into speed optimizations.


Or, if Swindle has a MOP, you could use that.

Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] class implementation and make-primitive-class

2014-04-17 Thread Daniel Feltey
That wouldn't work for this project because I need to be able to generate an 
object that satisfies a given Racket contract and can be passed to user 
functions that expect such an object so I need to use Racket's class system. I 
have a working prototype that builds class syntax then calls eval-syntax on it, 
I was just trying to figure out if there was an easy way to avoid using eval. 

Thanks again
Dan

- Original Message -
From: Neil Van Dyke n...@neilvandyke.org
To: dfel...@ccs.neu.edu
Cc: dev@racket-lang.org
Sent: Thursday, April 17, 2014 4:17:54 PM GMT -05:00 US/Canada Eastern
Subject: Re: [racket-dev] class implementation and make-primitive-class

For purposes of your course project, couldn't you make your own 
class-instance object system, atop structs or hashes, that gives you 
whatever dynamic programming features you want?  It's very-very easy to 
do a basic one (with single inheritance and single dispatch), until you 
get into speed optimizations.

Or, if Swindle has a MOP, you could use that.

Neil V.

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Pre-Release Checklist for v6.0.1

2014-04-17 Thread Ryan Culpepper

Checklist items for the v6.0.1 release
  (using the v6.0.0.900 release candidate build)

Search for your name to find relevant items, reply when you finish an
item (please indicate which item/s is/are done).  Also, if you have any
commits that should have been picked, make sure that the changes are in.

Important: new builds are created without announcement, usually whenever
I pick a few commits.  If you need to commit changes, please make sure
you tell me to pick it into the release branch.

-- Release candidates are at
--   http://pre-release.racket-lang.org/

Please use these installers (or source bundles) -- don't test from
your own git clone (don't test the `master' branch by mistake!).  To
get the tests, you can do this:

  cd ...racket-root...
  ./bin/raco pkg install -i main-distribution-test

--

* Matthew Flatt mfl...@cs.utah.edu
  - Racket Tests
  - Languages Tests
  - GRacket Tests (Also check that `gracket -z' and `gracket-text' still
works in Windows and Mac OS X)
  - mzc --exe tests
  - .plt-packing Tests
  - Games Tests
  - Unit Tests
  - Syntax Color Tests
  - R6RS Tests
  - JPR's test suite
  - Create an executable from a BSL program
  - Run COM tests
  - Try compiling with -funsigned-char
  - Try compiling with TEST_ALTERNATE_TARGET_REGISTER
  Updates:
  - Racket Updates: update HISTORY
  (updates should show v6.0.1 as the most current version)
  - Update man pages in racket/man/man1: racket.1, gracket.1, raco.1
  Email me to pick the changes when they're done, or tell me if there
  are no such changes.

* Robby Findler ro...@eecs.northwestern.edu
  - DrRacket Tests
  - Framework Tests
  - Contracts Tests
  - Games Tests
  - Teachpacks Tests: image tests
  - PLaneT Tests
  - Redex Tests
  Updates:
  - DrRacket Updates: update HISTORY
  - Redex Updates: update HISTORY
  (updates should show v6.0.1 as the most current version)
  - Ensure that previous version of DrRacket's preference files still
starts up with new DrRacket
  - Update man pages in racket/man/man1: drracket.1
  Email me to pick the changes when they're done, or tell me if there
  are no such changes.

* John Clements cleme...@brinckerhoff.org
  - Stepper Tests
  Updates:
  - Stepper Updates: update HISTORY
  (updates should show v6.0.1 as the most current version; email me
  to pick the changes when they're done, or tell me if there are no such
  changes.)

* Sam Tobin-Hochstadt sa...@ccs.neu.edu,
   Vincent St-Amour stamo...@ccs.neu.edu
  - Match Tests
  - Typed Racket Tests
  - Typed Racket Updates: update HISTORY
  (updates should show v6.0.1 as the most current version; email me
  to pick the changes when they're done, or tell me if there are no such
  changes.)

* Matthias Felleisen matth...@ccs.neu.edu
  - Teachpacks Tests: check that new teachpacks are addable
  - Teachpack Docs: check teachpack docs in the bundles
  Updates:
  - Teachpack Updates: update HISTORY
  (updates should show v6.0.1 as the most current version; email me
  to pick the changes when they're done, or tell me if there are no such
  changes.)

* Ryan Culpepper r...@cs.utah.edu
  - Macro Debugger Tests
  - Syntax Classifier Tests
  - RackUnit GUI Tests
  - Data Tests
  - DB Tests

* Jay McCarthy jay.mccar...@gmail.com
  - Web Server Tests
  - XML Tests
  - HTML Tests
  - PLAI Tests
  - Racklog tests
  - Datalog tests

* Kathy Gray kathryn.g...@cl.cam.ac.uk
  - Test Engine Tests

* Noel Welsh noelwe...@gmail.com
  - Rackunit Tests
  - SRFI Tests
  - Ensure that all claimed srfi's are in the installer and they all
load into racket or drracket (as appropriate)

* Stevie Strickland sstri...@ccs.neu.edu
  - Unit Contract Tests
  - Contract Region Tests
  - Class Contract Tests

* Stephen Chang stch...@ccs.neu.edu
  - Lazy Racket Tests
  - Lazy stepper tests

* Eli Barzilay e...@barzilay.org
  - Swindle Tests
  - XREPL Tests
  - Verify PL language
  - Racket Tree: compare new distribution tree to previous one
  - Run the unix installer tests
  - Run zsh completions tests
(. .../racket-completion.zsh; _racket --self-test)
  Version Updates: if a major change has happened, update the version
  number in:
  - racket/collects/mzscheme/info.rkt
  - racket/collects/mred/info.rkt

* Stephen Bloch sbl...@adelphi.edu
  - Picturing Programs Tests

* Greg Cooper g...@cs.brown.edu
  - FrTime Tests

* Carl Eastlund c...@ccs.neu.edu
  - Dracula Tests (confirm that Dracula runs from PLaneT)

* Jon Rafkind rafk...@cs.utah.edu
  Release tests for (one of the) linux releases:
  - Test that the `racket' and `racket-textual' source releases
compile fine (note that they're still called `plt' and `mz' at
this stage).
  - Test that the binary installers for both work, try each one in
both normal and unix-style installation modes. (just ubuntu)
  [Note: get the release candidates from the URL in this email. Use
   the 'static table' link to see a list of all tar files available]

* 

[racket-dev] Adding flvector to match

2014-04-17 Thread Neil Toronto
It would be really handy for me right now to be able to match on 
flvectors, and I think it's useful enough for minimal Racket. I've 
already tried this option:


 1. Export flvector as a match expander from racket/flonum

but racket/match depends on racket/flonum somehow. So I looked through 
the match code and determined that this one would be pretty easy:


 2. Change racket/match to recognize patterns with 'flvector head

(The code is very clean; kudos to whoever last rewrote it. :D)

I think #2 would at worst hijack someone's custom flvector match 
expander, but probably do the same thing or better (e.g. also handle 
ellipses). But in case it's worse than I think, I can always go with this:


 3. Export flvector as a match expander from math/flonum

Question for the match and syntax gurus: would doing #2 be safe enough, 
or should I do #3? Or have I got it backwards; i.e. is #2 actually safer 
than #3?


Neil ⊥
_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] Adding flvector to match

2014-04-17 Thread Sam Tobin-Hochstadt
I think you should do 2': Change racket/match to recognize patterns
with #'flvector heads -- ie, use the binding for flvector from
`racket/flonum` to determine if something matches.

The use of symbolic names in match, rather than bindings, is a
leftover rather than something we should keep adding to.

Sam

On Thu, Apr 17, 2014 at 6:48 PM, Neil Toronto neil.toro...@gmail.com wrote:
 It would be really handy for me right now to be able to match on flvectors,
 and I think it's useful enough for minimal Racket. I've already tried this
 option:

  1. Export flvector as a match expander from racket/flonum

 but racket/match depends on racket/flonum somehow. So I looked through the
 match code and determined that this one would be pretty easy:

  2. Change racket/match to recognize patterns with 'flvector head

 (The code is very clean; kudos to whoever last rewrote it. :D)

 I think #2 would at worst hijack someone's custom flvector match expander,
 but probably do the same thing or better (e.g. also handle ellipses). But in
 case it's worse than I think, I can always go with this:

  3. Export flvector as a match expander from math/flonum

 Question for the match and syntax gurus: would doing #2 be safe enough, or
 should I do #3? Or have I got it backwards; i.e. is #2 actually safer than
 #3?

 Neil ⊥
 _
  Racket Developers list:
  http://lists.racket-lang.org/dev

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Adding flvector to match

2014-04-17 Thread Neil Toronto

Great idea!

Neil ⊥

On 04/17/2014 05:00 PM, Sam Tobin-Hochstadt wrote:

I think you should do 2': Change racket/match to recognize patterns
with #'flvector heads -- ie, use the binding for flvector from
`racket/flonum` to determine if something matches.

The use of symbolic names in match, rather than bindings, is a
leftover rather than something we should keep adding to.

Sam

On Thu, Apr 17, 2014 at 6:48 PM, Neil Toronto neil.toro...@gmail.com wrote:

It would be really handy for me right now to be able to match on flvectors,
and I think it's useful enough for minimal Racket. I've already tried this
option:

  1. Export flvector as a match expander from racket/flonum

but racket/match depends on racket/flonum somehow. So I looked through the
match code and determined that this one would be pretty easy:

  2. Change racket/match to recognize patterns with 'flvector head

(The code is very clean; kudos to whoever last rewrote it. :D)

I think #2 would at worst hijack someone's custom flvector match expander,
but probably do the same thing or better (e.g. also handle ellipses). But in
case it's worse than I think, I can always go with this:

  3. Export flvector as a match expander from math/flonum

Question for the match and syntax gurus: would doing #2 be safe enough, or
should I do #3? Or have I got it backwards; i.e. is #2 actually safer than
#3?

Neil ⊥
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] Pre-Release Checklist for v6.0.1

2014-04-17 Thread David Van Horn
On 4/17/14, 6:44 PM, Ryan Culpepper wrote:
 * David Van Horn dvanh...@ccs.neu.edu
   - EoPL Tests

Done.
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`

2014-04-17 Thread Greg Hendershott
For whoever else might find this useful building on OS X.

Building HEAD today I got this new error:

raco setup: --- creating launchers ---
raco setup: launcher: console-bin/raco
raco setup: --- installing man pages ---
raco setup: --- installing collections ---
raco setup: --- post-installing collections ---
raco setup: --- checking package dependencies ---
make install-common-last
make fix-paths
if [  !=  ]; then \
  racket/racketcgc -G /Users/greg/src/plt/racket/build/config -u \
../../collects/setup/unixstyle-install.rkt \
make-install-destdir-fix ../.. \
/Users/greg/src/plt/racket/racket/bin
/Users/greg/src/plt/racket/racket/collects
/Users/greg/src/plt/racket/racket/doc
/Users/greg/src/plt/racket/racket/lib
/Users/greg/src/plt/racket/racket/include
/Users/greg/src/plt/racket/racket/lib
/Users/greg/src/plt/racket/racket/share
/Users/greg/src/plt/racket/racket/etc
/Users/greg/src/plt/racket/racket/share/applications
/Users/greg/src/plt/racket/racket/man yes; \
fi
make preserve-raco-pkg-default-scope
:
cp ../COPYING-libscheme.txt ../COPYING_LESSER.txt ../COPYING.txt
/Users/greg/src/plt/racket/racket/share/
if racket/bin/racket -G build/config -I racket/base -e '(case
(system-type) [(macosx) (exit 0)] [else (exit 1)])' ; then make
native-from-git ; fi
if [ ! -d native-pkgs/racket-win32-i386 ]; then make complain-no-submodule ; fi
make pkg-links PKGS=main-distribution plt-services LINK_MODE=--save
racket/bin/racket -U -G build/config racket/src/link-all.rkt ++dir
pkgs ++dir native-pkgs --save main-distribution plt-services
racket-lib
Linking packages:
  plt-services
  racket-lib
  main-distribution
Recording packages choice in racket/etc/link-pkgs.rktd
link-all: requested package not available: draw-x86_64-macosx-2
  context...:
   /Users/greg/src/plt/racket/racket/src/link-all.rkt:150:6: for-loop
   /Users/greg/src/plt/racket/racket/src/link-all.rkt:148:2: loop
   /Users/greg/src/plt/racket/racket/src/link-all.rkt: [running body]
make[2]: *** [pkg-links] Error 1
make[1]: *** [plain-in-place] Error 2
make: *** [in-place] Error 2


Although this is unlike the previous symptoms of stale submodules,
draw-x86_64-macosx-2 sounds like something that might be related to
native-pkgs. So on a hunch I tried this:

$ git submodule update
remote: Counting objects: 214, done.
remote: Compressing objects: 100% (157/157), done.
remote: Total 214 (delta 59), reused 183 (delta 44)
Receiving objects: 100% (214/214), 19.84 MiB | 54 KiB/s, done.
Resolving deltas: 100% (59/59), done.
From https://github.com/plt/libs
   b698e73..3d8856e  master - origin/master
Submodule path 'native-pkgs': checked out
'3d8856eb987af16ab27cc99d4d24d5f9e7efc33b'


Although it was an unusually slow/big fetch, it succeeded.

And now the build now. (Well as I type this, my laptop fans are
blazing away, as it is still running the raco setup stage. But it
proceeded OK past the point it was failing before.)

Maybe this is obvious to everyone else, but I wanted to mention it in
case it helped anyone else building on OS X.

On Tue, Dec 17, 2013 at 4:48 PM, Greg Hendershott
greghendersh...@gmail.com wrote:
 To answer my own question, back in July Matthew had posted here:

 On Sat, Jul 27, 2013 at 9:10 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 Nothing has been split out of the current git repository, but there is
 now a native-pkgs git submodule for the native-library packages.

 If you build on Mac OS X or Windows or if you run a snapshot build,
 then you'll need to use

   git pull
   git submodule init
   git submodule update

 once on each repository checkout from now on, and

   git pull
   git submodule update

 for updates after the first checkout.

 If you just `git pull' without the submodule commands, then you'll have
 an empty native-pkgs directory. That's fine if you're building on,
 say, Linux. If you're on Mac OS X or Windows, then the makefile should
 give you a good error message and suggest using `git submodule init'
 and `git submodule update'.

 If you use `git submodule update' today and forget to use it in the
 future, probably things will be fine for a long time, because
 native-pkgs doesn't change often. If native-pkgs does change and
 you forget `git submodule update', then (as I understand things) `git
 status' will tell you that there's a mismatch. The mismatch report
 might take a form that's not entirely clear, but it should be enough to
 remind you to run `git submodule update'.

 It turned out that it wasn't enough to remind _me_. :)  Running `git
 submodule update` resolved this for me.


 On Fri, Sep 20, 2013 at 2:30 PM, Greg Hendershott
 greghendersh...@gmail.com wrote:
 I build Racket while keeping my forked repo's `master` branch an
 exact, fast-forwardable copy of PLT's remote upstream `master`. [1]

 This has worked fine building Racket on Linux, and continues to do so.

 But on OS X, I need to follow these instructions from INSTALL.TXT, wrt
 the pkg re-org:


Re: [racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`

2014-04-17 Thread Spencer Florence
stale git submodules show up on a status. What I've found helpful is to add
a bit in my prompt that tells me if the current git repository has a non
up to date status (And the current branch). If you're running Zsh this is
a good place to start for that:

git_prompt_info() {
  ref=$(git symbolic-ref HEAD 2 /dev/null)
  if [[ -n $ref ]]; then
echo -n [%F{red}${ref#refs/heads/}%f
st=$(git status -s 2 /dev/null)
if [[ -n $st ]]; then
  echo -n %f*%f
fi
echo -n ]
  fi
}
export PS1='$(git_prompt_info)[%F{green}%m%F{white}:%F{blue}%2c%f] '


Or on Bash:


function git_prompt_info() {
  ref=$(git symbolic-ref HEAD 2 /dev/null | cut -d'/' -f3)
  if [[ -n $ref ]]; then
# Zsh prompt this was based on
# echo [%{$fg_bold[green]%}${ref#refs/heads/}%{$reset_color%}]
echo [$(tput setaf 2)$ref$(tput sgr0)]
  fi
}
export PS1=\$(git_prompt_info)$PS1


On Thu, Apr 17, 2014 at 9:25 PM, Greg Hendershott greghendersh...@gmail.com
 wrote:

 For whoever else might find this useful building on OS X.

 Building HEAD today I got this new error:

 raco setup: --- creating launchers ---
 raco setup: launcher: console-bin/raco
 raco setup: --- installing man pages ---
 raco setup: --- installing collections ---
 raco setup: --- post-installing collections ---
 raco setup: --- checking package dependencies ---
 make install-common-last
 make fix-paths
 if [  !=  ]; then \
   racket/racketcgc -G /Users/greg/src/plt/racket/build/config -u \
 ../../collects/setup/unixstyle-install.rkt \
 make-install-destdir-fix ../.. \
 /Users/greg/src/plt/racket/racket/bin
 /Users/greg/src/plt/racket/racket/collects
 /Users/greg/src/plt/racket/racket/doc
 /Users/greg/src/plt/racket/racket/lib
 /Users/greg/src/plt/racket/racket/include
 /Users/greg/src/plt/racket/racket/lib
 /Users/greg/src/plt/racket/racket/share
 /Users/greg/src/plt/racket/racket/etc
 /Users/greg/src/plt/racket/racket/share/applications
 /Users/greg/src/plt/racket/racket/man yes; \
 fi
 make preserve-raco-pkg-default-scope
 :
 cp ../COPYING-libscheme.txt ../COPYING_LESSER.txt ../COPYING.txt
 /Users/greg/src/plt/racket/racket/share/
 if racket/bin/racket -G build/config -I racket/base -e '(case
 (system-type) [(macosx) (exit 0)] [else (exit 1)])' ; then make
 native-from-git ; fi
 if [ ! -d native-pkgs/racket-win32-i386 ]; then make complain-no-submodule
 ; fi
 make pkg-links PKGS=main-distribution plt-services LINK_MODE=--save
 racket/bin/racket -U -G build/config racket/src/link-all.rkt ++dir
 pkgs ++dir native-pkgs --save main-distribution plt-services
 racket-lib
 Linking packages:
   plt-services
   racket-lib
   main-distribution
 Recording packages choice in racket/etc/link-pkgs.rktd
 link-all: requested package not available: draw-x86_64-macosx-2
   context...:
/Users/greg/src/plt/racket/racket/src/link-all.rkt:150:6: for-loop
/Users/greg/src/plt/racket/racket/src/link-all.rkt:148:2: loop
/Users/greg/src/plt/racket/racket/src/link-all.rkt: [running body]
 make[2]: *** [pkg-links] Error 1
 make[1]: *** [plain-in-place] Error 2
 make: *** [in-place] Error 2


 Although this is unlike the previous symptoms of stale submodules,
 draw-x86_64-macosx-2 sounds like something that might be related to
 native-pkgs. So on a hunch I tried this:

 $ git submodule update
 remote: Counting objects: 214, done.
 remote: Compressing objects: 100% (157/157), done.
 remote: Total 214 (delta 59), reused 183 (delta 44)
 Receiving objects: 100% (214/214), 19.84 MiB | 54 KiB/s, done.
 Resolving deltas: 100% (59/59), done.
 From https://github.com/plt/libs
b698e73..3d8856e  master - origin/master
 Submodule path 'native-pkgs': checked out
 '3d8856eb987af16ab27cc99d4d24d5f9e7efc33b'


 Although it was an unusually slow/big fetch, it succeeded.

 And now the build now. (Well as I type this, my laptop fans are
 blazing away, as it is still running the raco setup stage. But it
 proceeded OK past the point it was failing before.)

 Maybe this is obvious to everyone else, but I wanted to mention it in
 case it helped anyone else building on OS X.

 On Tue, Dec 17, 2013 at 4:48 PM, Greg Hendershott
 greghendersh...@gmail.com wrote:
  To answer my own question, back in July Matthew had posted here:
 
  On Sat, Jul 27, 2013 at 9:10 AM, Matthew Flatt mfl...@cs.utah.edu
 wrote:
  Nothing has been split out of the current git repository, but there is
  now a native-pkgs git submodule for the native-library packages.
 
  If you build on Mac OS X or Windows or if you run a snapshot build,
  then you'll need to use
 
git pull
git submodule init
git submodule update
 
  once on each repository checkout from now on, and
 
git pull
git submodule update
 
  for updates after the first checkout.
 
  If you just `git pull' without the submodule commands, then you'll have
  an empty native-pkgs directory. That's fine if you're building on,
  say, Linux. If you're on Mac OS X or Windows, then the 

Re: [racket-dev] Pre-Release Checklist for v6.0.1

2014-04-17 Thread Matthew Flatt
At Thu, 17 Apr 2014 18:44:20 -0400, Ryan Culpepper wrote:
 * Matthew Flatt mfl...@cs.utah.edu
- Racket Tests
- Languages Tests
- GRacket Tests (Also check that `gracket -z' and `gracket-text' still
  works in Windows and Mac OS X)
- mzc --exe tests
- .plt-packing Tests
- Games Tests
- Unit Tests
- Syntax Color Tests
- R6RS Tests
- JPR's test suite
- Create an executable from a BSL program
- Run COM tests
- Try compiling with -funsigned-char
- Try compiling with TEST_ALTERNATE_TARGET_REGISTER

Done.

Updates:
- Racket Updates: update HISTORY
(updates should show v6.0.1 as the most current version)

Patch sent.

- Update man pages in racket/man/man1: racket.1, gracket.1, raco.1
Email me to pick the changes when they're done, or tell me if there
are no such changes.

No changes.

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`

2014-04-17 Thread Greg Hendershott
Yes. FWIW I do:

function parse_git_dirty() {
  [[ $(git status 2 /dev/null | tail -n1) != *working directory
clean* ]]  echo *
}

function parse_git_branch() {
  git branch --no-color 2 /dev/null | sed -e '/^[^*]/d' -e s/*
\(.*\)/\1$(parse_git_dirty)/
}

Which goes into the the end of:

greg@mbp in ~/src/plt/racket on master*
$

And now that you mention it, I _did_ see the * in my prompt. I
should have paid attention to it, but
`git status` showed nothing. I should have done `git diff`.

Sorry for the noise here. (My total experience with git submodule
updates consists of the 2 or 3 times I've had to do this with Racket
-- and at intervals of enough months that I manage to forget in
between.)


On Thu, Apr 17, 2014 at 9:37 PM, Spencer Florence spen...@florence.io wrote:
 stale git submodules show up on a status. What I've found helpful is to add
 a bit in my prompt that tells me if the current git repository has a non up
 to date status (And the current branch). If you're running Zsh this is a
 good place to start for that:

 git_prompt_info() {
   ref=$(git symbolic-ref HEAD 2 /dev/null)
   if [[ -n $ref ]]; then
 echo -n [%F{red}${ref#refs/heads/}%f
 st=$(git status -s 2 /dev/null)
 if [[ -n $st ]]; then
   echo -n %f*%f
 fi
 echo -n ]
   fi
 }
 export PS1='$(git_prompt_info)[%F{green}%m%F{white}:%F{blue}%2c%f] '


 Or on Bash:


 function git_prompt_info() {
   ref=$(git symbolic-ref HEAD 2 /dev/null | cut -d'/' -f3)
   if [[ -n $ref ]]; then
 # Zsh prompt this was based on
 # echo [%{$fg_bold[green]%}${ref#refs/heads/}%{$reset_color%}]
 echo [$(tput setaf 2)$ref$(tput sgr0)]
   fi
 }
 export PS1=\$(git_prompt_info)$PS1
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Pre-Release Checklist for v6.0.1

2014-04-17 Thread Robby Findler
On Thu, Apr 17, 2014 at 5:44 PM, Ryan Culpepper ry...@ccs.neu.edu wrote:
 * Robby Findler ro...@eecs.northwestern.edu
   - DrRacket Tests

All but populate-compiled.rkt, which uncovered the need for commit
fe2c796c41154. Can you please include it in the release branch?

   - Framework Tests
   - Contracts Tests
   - Games Tests
   - Teachpacks Tests: image tests
   - PLaneT Tests
   - Redex Tests
   Updates:
   - DrRacket Updates: update HISTORY
   - Redex Updates: update HISTORY
   (updates should show v6.0.1 as the most current version)
   - Ensure that previous version of DrRacket's preference files still
 starts up with new DrRacket
   - Update man pages in racket/man/man1: drracket.1
   Email me to pick the changes when they're done, or tell me if there
   are no such changes.

One commit marked for the release notes update.

With the exception of the populate-compiled.rkt test (as above), done.

Robby
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Pre-Release Checklist for v6.0.1

2014-04-17 Thread Jon Rafkind

 * Jon Rafkind rafk...@cs.utah.edu
   Release tests for (one of the) linux releases:
   - Test that the `racket' and `racket-textual' source releases
 compile fine (note that they're still called `plt' and `mz' at
 this stage).
   - Test that the binary installers for both work, try each one in
 both normal and unix-style installation modes. (just ubuntu)
   [Note: get the release candidates from the URL in this email. Use
the 'static table' link to see a list of all tar files available]


Done. For the binaries I only tested on 64-bit precise-pangolin.
_
  Racket Developers list:
  http://lists.racket-lang.org/dev