From 2880edcb8cd131768559007e5a08261446ad3832 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Mon, 14 Feb 2011 22:04:44 -0500 Subject: [PATCH 01/13] v5.1 stuff --- collects/meta/web/download/data.rkt | 3 ++- collects/meta/web/download/installers.txt | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/collects/meta/web/download/data.rkt b/collects/meta/web/download/data.rkt index d53ebbab9b..90f3b40a5b 100644 --- a/collects/meta/web/download/data.rkt +++ b/collects/meta/web/download/data.rkt @@ -1,7 +1,8 @@ #lang racket/base (define -versions+dates- - '(["5.0.2" "November 2010"] + '(["5.1" "February 2011"] + ["5.0.2" "November 2010"] ["5.0.1" "August 2010"] ["5.0" "June 2010"] ["4.2.5" "April 2010"] diff --git a/collects/meta/web/download/installers.txt b/collects/meta/web/download/installers.txt index 51e29f1d75..9079a6ade6 100644 --- a/collects/meta/web/download/installers.txt +++ b/collects/meta/web/download/installers.txt @@ -64,3 +64,23 @@ 16M 5.0/racket/racket-5.0-src-mac.dmg 16M 5.0/racket/racket-5.0-src-unix.tgz 20M 5.0/racket/racket-5.0-src-win.zip +11M 5.1/racket-textual/racket-textual-5.1-bin-i386-linux-f12.sh +11M 5.1/racket-textual/racket-textual-5.1-bin-i386-linux-ubuntu-jaunty.sh +11M 5.1/racket-textual/racket-textual-5.1-bin-i386-osx-mac.dmg +7.6M 5.1/racket-textual/racket-textual-5.1-bin-i386-win32.exe +11M 5.1/racket-textual/racket-textual-5.1-bin-ppc-darwin.sh +11M 5.1/racket-textual/racket-textual-5.1-bin-ppc-osx-mac.dmg +11M 5.1/racket-textual/racket-textual-5.1-bin-x86_64-linux-f14.sh +5.8M 5.1/racket-textual/racket-textual-5.1-src-mac.dmg +5.7M 5.1/racket-textual/racket-textual-5.1-src-unix.tgz +5.8M 5.1/racket-textual/racket-textual-5.1-src-win.zip +50M 5.1/racket/racket-5.1-bin-i386-linux-f12.sh +50M 5.1/racket/racket-5.1-bin-i386-linux-ubuntu-jaunty.sh +51M 5.1/racket/racket-5.1-bin-i386-osx-mac.dmg +32M 5.1/racket/racket-5.1-bin-i386-win32.exe +49M 5.1/racket/racket-5.1-bin-ppc-darwin.sh +52M 5.1/racket/racket-5.1-bin-ppc-osx-mac.dmg +50M 5.1/racket/racket-5.1-bin-x86_64-linux-f14.sh +16M 5.1/racket/racket-5.1-src-mac.dmg +16M 5.1/racket/racket-5.1-src-unix.tgz +18M 5.1/racket/racket-5.1-src-win.zip From 6dccc8f0594923c2cdadede9445e07e83810cdbf Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Tue, 15 Feb 2011 11:20:36 -0500 Subject: [PATCH 02/13] 5.1 improvement to sierpinski code from robby, can go live now --- collects/meta/web/www/index.rkt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/collects/meta/web/www/index.rkt b/collects/meta/web/www/index.rkt index b9762e8840..39af7bcd01 100644 --- a/collects/meta/web/www/index.rkt +++ b/collects/meta/web/www/index.rkt @@ -89,11 +89,11 @@ (graphical-example ; --------------------------------------------- @code{#lang racket ; A picture (require 2htdp/image) - (let sierpinski ([n 6]) + (let sierpinski ([n 8]) (if (zero? n) - (triangle 2 'solid 'red) - (let ([next (sierpinski (- n 1))]) - (above next (beside next next)))))} + (triangle 2 'solid 'red) + (let ([t (sierpinski (- n 1))]) + (above t (beside t t)))))} @desc{The @elemcode{2htdp/image} library provides easy-to-use functions for constructing images, and DrRacket can display an image result as easily as it can display a number result. In this case, a From 3358b40377fb67c1180842cbca5a12da63664e28 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Tue, 15 Feb 2011 11:34:09 -0500 Subject: [PATCH 03/13] Forgot the meat of the change... --- collects/meta/web/www/index.rkt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collects/meta/web/www/index.rkt b/collects/meta/web/www/index.rkt index 39af7bcd01..7adf82dc0e 100644 --- a/collects/meta/web/www/index.rkt +++ b/collects/meta/web/www/index.rkt @@ -93,7 +93,7 @@ (if (zero? n) (triangle 2 'solid 'red) (let ([t (sierpinski (- n 1))]) - (above t (beside t t)))))} + (freeze (above t (beside t t))))))} @desc{The @elemcode{2htdp/image} library provides easy-to-use functions for constructing images, and DrRacket can display an image result as easily as it can display a number result. In this case, a From 21c6a9f5c84c6fe41c348f3d66eb060e516fe622 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 15 Feb 2011 13:16:27 -0700 Subject: [PATCH 04/13] Slideshow/Scribble: fix size of PDF generated for pict in a doc --- collects/texpict/private/mrpict-extra.rkt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/collects/texpict/private/mrpict-extra.rkt b/collects/texpict/private/mrpict-extra.rkt index 4a0bfa4c2b..262250fccb 100644 --- a/collects/texpict/private/mrpict-extra.rkt +++ b/collects/texpict/private/mrpict-extra.rkt @@ -457,12 +457,15 @@ (send bm save-file s 'png) (get-output-bytes s)))] [(eps-bytes pdf-bytes) - (let ([s (open-output-bytes)]) + (let ([s (open-output-bytes)] + [xs (box 1)] + [ys (box 1)]) + (send (current-ps-setup) get-scaling xs ys) (let ([dc (new (if (eq? format 'eps-bytes) post-script-dc% pdf-dc%) [interactive #f] [as-eps #t] - [width (pict-width p)] - [height (pict-height p)] + [width (* (pict-width p) (unbox xs))] + [height (* (pict-height p) (unbox ys))] [output s])]) (send dc start-doc "pict") (send dc start-page) From 156153f692fb40e5ac8c38d72ce7c9c23af13976 Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Tue, 15 Feb 2011 12:57:48 -0700 Subject: [PATCH 05/13] calling sync on a place-channel now returns the channel message just like standard racket channels --- collects/tests/racket/place-channel.rktl | 2 +- src/racket/src/places.c | 85 ++++++++++++++---------- 2 files changed, 52 insertions(+), 35 deletions(-) diff --git a/collects/tests/racket/place-channel.rktl b/collects/tests/racket/place-channel.rktl index ef03be323c..4db723f771 100644 --- a/collects/tests/racket/place-channel.rktl +++ b/collects/tests/racket/place-channel.rktl @@ -101,7 +101,7 @@ END (define-values (pc5 pc6) (place-channel)) (place-channel-send pl pc5) - (test "Ready5" sync (handle-evt pc6 (lambda (p) (place-channel-recv p)))) + (test "Ready5" sync pc6) (place-wait pl) ) diff --git a/src/racket/src/places.c b/src/racket/src/places.c index 07deb8f6f0..2091ccc2dc 100644 --- a/src/racket/src/places.c +++ b/src/racket/src/places.c @@ -26,11 +26,12 @@ static Scheme_Object *scheme_place_channel(int argc, Scheme_Object *args[]); static Scheme_Place_Async_Channel *scheme_place_async_channel_create(); static Scheme_Place_Bi_Channel *scheme_place_bi_channel_create(); static Scheme_Place_Bi_Channel *scheme_place_bi_peer_channel_create(Scheme_Place_Bi_Channel *orig); -static int scheme_place_channel_ready(Scheme_Object *so); +static int scheme_place_channel_ready(Scheme_Object *so, Scheme_Schedule_Info *sinfo); -static void scheme_place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Object *o, void *msg_memory); -static Scheme_Object *scheme_place_async_recv(Scheme_Place_Async_Channel *ch, void **msg_memory); + +static void scheme_place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Object *o); +static Scheme_Object *scheme_place_async_recv(Scheme_Place_Async_Channel *ch); static Scheme_Object *scheme_places_deep_copy_to_master(Scheme_Object *so); /* Scheme_Object *scheme_places_deep_copy(Scheme_Object *so); */ @@ -1186,7 +1187,6 @@ Scheme_Object *scheme_places_deserialize(Scheme_Object *so, void *msg_memory) { Scheme_Object *scheme_place_send(int argc, Scheme_Object *args[]) { if (argc == 2) { - Scheme_Object *mso; Scheme_Place_Bi_Channel *ch; if (SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_type)) { ch = (Scheme_Place_Bi_Channel *) ((Scheme_Place *) args[0])->channel; @@ -1198,11 +1198,7 @@ Scheme_Object *scheme_place_send(int argc, Scheme_Object *args[]) { ch = NULL; scheme_wrong_type("place-channel-send", "place-channel", 0, argc, args); } - { - void *msg_memory = NULL; - mso = scheme_places_serialize(args[1], &msg_memory); - scheme_place_async_send((Scheme_Place_Async_Channel *) ch->sendch, mso, msg_memory); - } + scheme_place_async_send((Scheme_Place_Async_Channel *) ch->sendch, args[1]); } else { scheme_wrong_count_m("place-channel-send", 2, 2, argc, args, 0); @@ -1212,7 +1208,6 @@ Scheme_Object *scheme_place_send(int argc, Scheme_Object *args[]) { Scheme_Object *scheme_place_recv(int argc, Scheme_Object *args[]) { if (argc == 1) { - Scheme_Object *mso; Scheme_Place_Bi_Channel *ch; if (SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_type)) { ch = (Scheme_Place_Bi_Channel *) ((Scheme_Place *) args[0])->channel; @@ -1224,11 +1219,7 @@ Scheme_Object *scheme_place_recv(int argc, Scheme_Object *args[]) { ch = NULL; scheme_wrong_type("place-channel-recv", "place-channel", 0, argc, args); } - { - void *msg_memory = NULL; - mso = scheme_place_async_recv((Scheme_Place_Async_Channel *) ch->recvch, &msg_memory); - return scheme_places_deserialize(mso, msg_memory); - } + return scheme_place_async_recv((Scheme_Place_Async_Channel *) ch->recvch); } else { scheme_wrong_count_m("place-channel-recv", 1, 1, argc, args, 0); @@ -1437,8 +1428,13 @@ static Scheme_Object *scheme_place_channel_p(int argc, Scheme_Object *args[]) return SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_bi_channel_type) ? scheme_true : scheme_false; } -static void scheme_place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Object *o, void *msg_memory) { +static void scheme_place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Object *uo) { + void *msg_memory = NULL; + Scheme_Object *o; int cnt; + + o = scheme_places_serialize(uo, &msg_memory); + mzrt_mutex_lock(ch->lock); { cnt = ch->count; @@ -1482,6 +1478,34 @@ static void scheme_place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Objec } } +static Scheme_Object *scheme_place_async_try_recv(Scheme_Place_Async_Channel *ch) { + Scheme_Object *msg = NULL; + void *msg_memory = NULL; + + mzrt_mutex_lock(ch->lock); + { + void *signaldescr; + signaldescr = scheme_get_signal_handle(); + ch->wakeup_signal = signaldescr; + if (ch->count > 0) { /* GET MSG */ + msg = ch->msgs[ch->out]; + msg_memory = ch->msg_memory[ch->out]; + + ch->msgs[ch->out] = NULL; + ch->msg_memory[ch->out] = NULL; + + --ch->count; + ch->out = (++ch->out % ch->size); + } + } + mzrt_mutex_unlock(ch->lock); + + if (msg) { + return scheme_places_deserialize(msg, msg_memory); + } + return msg; +} + static int scheme_place_async_ch_ready(Scheme_Place_Async_Channel *ch) { int ready = 0; mzrt_mutex_lock(ch->lock); @@ -1495,35 +1519,28 @@ static int scheme_place_async_ch_ready(Scheme_Place_Async_Channel *ch) { return ready; } -static int scheme_place_channel_ready(Scheme_Object *so) { +static int scheme_place_channel_ready(Scheme_Object *so, Scheme_Schedule_Info *sinfo) { Scheme_Place_Bi_Channel *ch; + Scheme_Object *msg = NULL; if (SAME_TYPE(SCHEME_TYPE(so), scheme_place_type)) { ch = (Scheme_Place_Bi_Channel *) ((Scheme_Place *) so)->channel; } else { ch = (Scheme_Place_Bi_Channel *)so; } - - return scheme_place_async_ch_ready((Scheme_Place_Async_Channel *) ch->recvch); + + msg = scheme_place_async_try_recv((Scheme_Place_Async_Channel *) ch->recvch); + if (msg != NULL) { + scheme_set_sync_target(sinfo, msg, NULL, NULL, 0, 0, NULL); + return 1; + } + return 0; } -static Scheme_Object *scheme_place_async_recv(Scheme_Place_Async_Channel *ch, void **msg_memory) { +static Scheme_Object *scheme_place_async_recv(Scheme_Place_Async_Channel *ch) { Scheme_Object *msg = NULL; while(1) { - mzrt_mutex_lock(ch->lock); - { - if (ch->count > 0) { /* GET MSG */ - msg = ch->msgs[ch->out]; - *msg_memory = ch->msg_memory[ch->out]; - - ch->msgs[ch->out] = NULL; - ch->msg_memory[ch->out] = NULL; - - --ch->count; - ch->out = (++ch->out % ch->size); - } - } - mzrt_mutex_unlock(ch->lock); + msg = scheme_place_async_try_recv(ch); if(msg) break; else { void *signaldescr; From c1f76d418f208781e943bbf161816618ae056c73 Mon Sep 17 00:00:00 2001 From: John Clements Date: Fri, 4 Feb 2011 08:59:11 -0800 Subject: [PATCH 06/13] bug fixed --- collects/tests/stepper/manual-tests.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/collects/tests/stepper/manual-tests.txt b/collects/tests/stepper/manual-tests.txt index cde635e56c..b72d6949d7 100644 --- a/collects/tests/stepper/manual-tests.txt +++ b/collects/tests/stepper/manual-tests.txt @@ -17,5 +17,3 @@ Try programs which print snips (print-convert-test.ss) try programs that contain test cases; make sure that the popups behave sensibly. Try jumping to the end on a program with an error. -** jumping to end when already at end doesn't behave properly ("no step - matching that criterion") From 1b843ea161e58d718c01a8ace1a3f972fcf04048 Mon Sep 17 00:00:00 2001 From: John Clements Date: Tue, 15 Feb 2011 13:20:10 -0800 Subject: [PATCH 07/13] added checking on planet unlink --- collects/planet/private/cmdline-tool.rkt | 11 ++++++++--- collects/planet/private/planet-shared.rkt | 2 +- collects/planet/util.rkt | 15 ++++++++++----- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/collects/planet/private/cmdline-tool.rkt b/collects/planet/private/cmdline-tool.rkt index 210546dde2..01fb091963 100644 --- a/collects/planet/private/cmdline-tool.rkt +++ b/collects/planet/private/cmdline-tool.rkt @@ -21,6 +21,7 @@ PLANNED FEATURES: (define erase? (make-parameter #f)) (define displayer (make-parameter (λ () (show-installed-packages)))) + (define quiet-unlink? (make-parameter #f)) (define (start raco?) @@ -85,10 +86,12 @@ Install local file into the planet cache as though it had been downlo (add-hard-link-cmd owner pkg maj min path))] ["unlink" "remove a package development link" "\nRemove development link associated with the given package" + #:once-each + [("-q" "--quiet") "don't signal an error on nonexistent links" (quiet-unlink? #t)] #:args (owner pkg maj min) (begin (verify-package-name pkg) - (remove-hard-link-cmd owner pkg maj min))] + (remove-hard-link-cmd owner pkg maj min (quiet-unlink?)))] ["fetch" "download a package file without installing it" "\nDownload the given package file without installing it" #:args (owner pkg maj min) @@ -264,10 +267,12 @@ This command does not unpack or install the named .plt file." (fail "Invalid major/minor version")) (add-hard-link ownerstr pkgstr maj min path))) - (define (remove-hard-link-cmd ownerstr pkgstr majstr minstr) + (define (remove-hard-link-cmd ownerstr pkgstr majstr minstr quiet?) (let* ([maj (read-from-string majstr)] [min (read-from-string minstr)]) - (remove-hard-link ownerstr pkgstr maj min))) + (unless (and (integer? maj) (integer? min) (> maj 0) (>= min 0)) + (fail "Invalid major/minor version")) + (remove-hard-link ownerstr pkgstr maj min quiet?))) (define (get-download-url ownerstr pkgstr majstr minstr) (let ([fps (params->full-pkg-spec ownerstr pkgstr majstr minstr)]) diff --git a/collects/planet/private/planet-shared.rkt b/collects/planet/private/planet-shared.rkt index 3d693c549e..dbed9bd4aa 100644 --- a/collects/planet/private/planet-shared.rkt +++ b/collects/planet/private/planet-shared.rkt @@ -197,7 +197,7 @@ Various common pieces of code that both the client and server need to access original-table))]) (save-hard-link-table new-table)))) - ;; filter-link-table! : (row -> boolean) -> void + ;; filter-link-table! : (row -> boolean) (row -> any/c) -> void ;; removes all rows from the hard link table that don't match the given predicate. ;; also updates auxiliary datastructures that might have dangling pointers to ;; the removed links diff --git a/collects/planet/util.rkt b/collects/planet/util.rkt index ed5a32eac3..f50d28a1a5 100644 --- a/collects/planet/util.rkt +++ b/collects/planet/util.rkt @@ -68,7 +68,8 @@ [add-hard-link (-> string? (and/c string? #rx"[.]plt") natural-number/c natural-number/c path? void?)] [remove-hard-link - (-> string? (and/c string? #rx"[.]plt") natural-number/c natural-number/c void?)] + (-> string? (and/c string? #rx"[.]plt") natural-number/c natural-number/c boolean? + void?)] [remove-pkg (-> string? (and/c string? #rx"[.]plt") natural-number/c natural-number/c void?)] [erase-pkg @@ -766,12 +767,16 @@ (path->string path)))) (add-hard-link! pkg-name (list owner) maj min path)) -;; remove-hard-link : string string num num -> void +;; remove-hard-link : string string num num boolean -> void ;; removes any development association from the given package spec -(define (remove-hard-link owner pkg-name maj min) +(define (remove-hard-link owner pkg-name maj min quiet?) + (define (matching-link? row) + (points-to? row pkg-name (list owner) maj min)) + (when (and (empty? (filter matching-link? (get-hard-link-table))) + (not quiet?)) + (error "no existing links match the given specification")) (filter-link-table! - (lambda (row) - (not (points-to? row pkg-name (list owner) maj min))) + (lambda (row) (not (matching-link? row))) (lambda (row) (let ([p (row->package row)]) (when p From 9de3f25d15ae4ddcf9a60a19965baccdc8a9cc55 Mon Sep 17 00:00:00 2001 From: John Clements Date: Tue, 15 Feb 2011 14:57:51 -0800 Subject: [PATCH 08/13] added docs, changed to optional param --- collects/planet/planet.scrbl | 11 +++++++++-- collects/planet/private/cmdline-tool.rkt | 2 +- collects/planet/util.rkt | 7 ++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/collects/planet/planet.scrbl b/collects/planet/planet.scrbl index b13a16b13a..1c4ec2d172 100644 --- a/collects/planet/planet.scrbl +++ b/collects/planet/planet.scrbl @@ -400,10 +400,13 @@ package specifier and the specified directory name. @subsection[#:tag "unlink"]{@exec{unlink}} Usage: -@commandline{raco planet unlink } +@commandline{raco planet unlink [