Re: [racket-dev] Pre-Release Checklist for v6.1
On Jul 17, 2014, at 6:03 PM, Ryan Culpepper ry...@ccs.neu.edu wrote: * Stevie Strickland sstri...@ccs.neu.edu - Unit Contract Tests - Contract Region Tests - Class Contract Tests Done. Stevie _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v6.1
On Jul 17, 2014, at 8:03 PM, Ryan Culpepper ry...@ccs.neu.edu wrote: * Stephen Bloch sbl...@adelphi.edu - Picturing Programs Tests Everything works except one check-error because the wording of the error message has changed. Out of town right now, and can't get to pltgit from this laptop, but will fix tomorrow or Monday. Stephen Bloch sbl...@adelphi.edu GPG key at http://home.adelphi.edu/sbloch/sbloch.pubkey.asc signature.asc Description: Message signed with OpenPGP using GPGMail _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] [plt] Push #29061: master branch updated
Ouch, This is precisely the kind of (imperative) change I didn't hope to see. I will look at the file in a moment but I'd hope you can do this with a lambda wrapper instead of a set!. -- Matthias On Jul 19, 2014, at 1:27 AM, gcoo...@racket-lang.org wrote: pkgs/frtime/lang-ext.rkt --- OLD/pkgs/frtime/lang-ext.rkt +++ NEW/pkgs/frtime/lang-ext.rkt @@ -412,17 +412,7 @@ (current-inexact-milliseconds)) empty)] [head last] - [consumer (proc-signal - (lambda () -(let* ([now (current-inexact-milliseconds)] - [new (deep-value-now beh empty)] - [ms (value-now ms-b)]) - (when (not (equal? new (car (mcar last -(set-mcdr! last (mcons (cons new now) - empty)) -(set! last (mcdr last)) -(schedule-alarm (+ now ms) producer - beh ms-b)] + [consumer #f] [producer (proc-signal (lambda () (let* ([now (and (signal? consumer) (current-inexact-milliseconds))] @@ -437,7 +427,19 @@ (begin (set! head (mcdr head)) (loop)))]) -producer)) +(begin + (set! consumer (proc-signal + (lambda () +(let* ([now (current-inexact-milliseconds)] + [new (deep-value-now beh empty)] + [ms (value-now ms-b)]) + (when (not (equal? new (car (mcar last +(set-mcdr! last (mcons (cons new now) + empty)) +(set! last (mcdr last)) +(schedule-alarm (+ now ms) producer + beh ms-b)) + producer))) (define (inf-delay beh) (delay-by beh 0)) @@ -451,8 +453,8 @@ [last-time (current-inexact-milliseconds)] [last-val (value-now b)] [last-alarm 0] - [producer (proc-signal (lambda () (and (signal? consumer) accum)))] - [consumer (proc-signal void b ms-b)]) + [consumer (proc-signal void b ms-b)] + [producer (proc-signal (lambda () (and (signal? consumer) accum)))]) (set-signal-thunk! consumer (lambda () _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] [plt] Push #29062: master branch updated
Thanks for the extensive internal documentation. -- Matthias On Jul 19, 2014, at 7:07 PM, gcoo...@racket-lang.org wrote: gcooper has updated `master' from 45306397cc to 2881b60536. http://git.racket-lang.org/plt/45306397cc..2881b60536 =[ One Commit ]= Directory summary: 100.0% pkgs/frtime/ ~~ 2881b60 Gregory Cooper ghcoo...@gmail.com 2014-07-19 16:06 : | Rewrite the delay-by primitive so it's easier to understand. | | Also, add comments that attempt to explain how it's intended to work. : M pkgs/frtime/lang-ext.rkt | 139 =[ Overall Diff ]=== pkgs/frtime/lang-ext.rkt --- OLD/pkgs/frtime/lang-ext.rkt +++ NEW/pkgs/frtime/lang-ext.rkt @@ -3,6 +3,7 @@ (only-in racket/list first second last-pair empty empty?)) (only-in racket/list first second cons? empty empty? rest last-pair) (only-in racket/function identity) + data/queue (only-in frtime/core/frp super-lift undefined undefined? behavior? do-in-manager-after do-in-manager proc-signal set-signal-thunk! register unregister signal? signal-depth signal:switching? signal-value value-now signal:compound? signal:compound-content signal:switching-current signal:switching-trigger set-cell! snap? iq-enqueue value-now/no-copy event-receiver event-set? proc-signal:switching set-signal-producers! set-signal-depth! safe-signal-depth @@ -403,46 +404,110 @@ (set-signal-value! ret ((signal-thunk ret))) ret)) -; XXX general efficiency fix for delay -; signal[a] signal[num] - signal[a] -(define (delay-by beh ms-b) - (letrec ([last (mcons (cons (if (zero? (value-now ms-b)) - (value-now/no-copy beh) - undefined) - (current-inexact-milliseconds)) -empty)] - [head last] - [consumer #f] - [producer (proc-signal - (lambda () -(let* ([now (and (signal? consumer) (current-inexact-milliseconds))] - [ms (value-now ms-b)]) - (let loop () -(if (or (empty? (mcdr head)) -( now (+ ms (cdr (mcar (mcdr head)) - (let ([val (car (mcar head))]) -(if (event-set? val) - (make-events-now (event-set-events val)) - val)) - (begin -(set! head (mcdr head)) -(loop)))]) +;; signal[a] num - signal[a] +;; +;; Returns a signal whose value at (approximately) time (+ t |delay-millis|) is a (deep) snapshot +;; of the value of |sig| at time t, for all times t from now on. For earlier times, the value of the +;; returned signal is undefined. +;; +;; Assumptions: (current-inexact-milliseconds) is monotonically non-decreasing; |delay-millis| is +;; positive and finite. +(define (delay-by sig delay-millis) + ;; Implementation strategy: + ;; + ;; Maintain a queue of pairs (snapshot . timestamp) of the observed signal going back in + ;; time for at least |delay-millis|. Start with (undefined . -inf.0) and (current-value . now), so + ;; there should always be at least one item (value . timestamp) in the queue such that + ;; (= now (+ timestamp delay-millis)). + ;; + ;; |consumer| runs whenever |sig| changes and adds an item with the observed value and current + ;; time to the queue; schedules |producer| to run at |delay-millis| in the future, by which + ;; time it should be ready to take on that observed value. + ;; + ;; |producer| has no dependencies recorded in the dataflow graph and only runs when scheduled + ;; by the consumer. (This is what allows delay-by to break cycles.) It traverses the queue + ;; looking for the latest observation (value . timestamp) such that + ;; (= now (+ timestamp delay-millis)), and takes on the observed value. |producer| is the + ;; value returned by this procedure, so it stays alive as long as anything cares about its + ;; value. + (let* ([queue (make-queue)] + + ;; finish : (a . num) a - a + ;; Puts |queue-item| back on the front of the queue and returns |val|, updating the + ;; occurrence timestamp if |val| represents an event set. + ;; TODO(gcooper): We could avoid this if data/queue supported a peek operation. + [finish! (lambda (queue-item val) +(enqueue-front! queue queue-item) +
[racket-dev] Help with build failed error message
I made a fork of the racket repo and committed some changes in a topic branch, but I got this: make[8]: Leaving directory `/home/travis/build/AlexKnauth/racket/racket/src/build' make[7]: Leaving directory `/home/travis/build/AlexKnauth/racket/racket/src/build' make[6]: Leaving directory `/home/travis/build/AlexKnauth/racket/racket/src/build' racket/racket3m -X /home/travis/build/AlexKnauth/racket/racket/collects -G /home/travis/build/AlexKnauth/racket/racket/etc -G /home/travis/build/AlexKnauth/racket/build/config -N raco -l- setup --no-user -j 2 raco setup: bootstrapping from source... Killed make[5]: *** [install-3m] Error 137 make[5]: Leaving directory `/home/travis/build/AlexKnauth/racket/racket/src/build' make[4]: *** [install] Error 2 make[4]: Leaving directory `/home/travis/build/AlexKnauth/racket/racket/src/build' make[3]: *** [base] Error 2 make[3]: Leaving directory `/home/travis/build/AlexKnauth/racket' make[2]: *** [plain-in-place] Error 2 make[2]: Leaving directory `/home/travis/build/AlexKnauth/racket' make[1]: *** [cpus-in-place] Error 2 make[1]: Leaving directory `/home/travis/build/AlexKnauth/racket' make: *** [in-place] Error 2 The command make CPUS=2 PKGS=racket-test db-test unstable-flonum-lib net-test exited with 2. (lines 812-830 of https://travis-ci.org/AlexKnauth/racket/jobs/30368892) What does this mean? What does the “Killed” mean? And what is error 137? _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] flatten-begin
On 2014-07-18 09:52:26 -0500, Robby Findler wrote: Unless someone knows why it is a bad idea, how about adding a #:all? argument that flattens all the way down? I don't see many uses of flatten-begin in our tree, but the one in compatibility/package sure looks like it could use the #:all? argument. Ditto the one in TR (in class-prims.rkt). And I'm pretty sure that replacing the hand-rolled loops in drracket for doing this (they predate that library) would use the #:all? argument if they were rewritten. This sounds like a nice solution and it would be fine for my use-case too. Anyone have any reasons against? (otherwise I can make the change) Cheers, Asumu _ Racket Developers list: http://lists.racket-lang.org/dev