diff --git a/basis/compiler/compiler.factor b/basis/compiler/compiler.factor index 093b215013..58d16e17af 100755 --- a/basis/compiler/compiler.factor +++ b/basis/compiler/compiler.factor @@ -4,7 +4,7 @@ USING: kernel namespaces arrays sequences io inference.backend inference.state generator debugger words compiler.units continuations vocabs assocs alien.compiler dlists optimizer definitions math compiler.errors threads graphs generic -inference combinators dequeues search-dequeues ; +inference combinators deques search-deques ; IN: compiler SYMBOL: +failed+ @@ -60,8 +60,8 @@ SYMBOL: +failed+ } cleave ] curry with-return ; -: compile-loop ( dequeue -- ) - [ (compile) yield ] slurp-dequeue ; +: compile-loop ( deque -- ) + [ (compile) yield ] slurp-deque ; : decompile ( word -- ) f 2array 1array t modify-code-heap ; diff --git a/basis/concurrency/conditions/conditions.factor b/basis/concurrency/conditions/conditions.factor index 72f520dab3..43374d3127 100755 --- a/basis/concurrency/conditions/conditions.factor +++ b/basis/concurrency/conditions/conditions.factor @@ -1,13 +1,13 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: dequeues threads kernel arrays sequences alarms ; +USING: deques threads kernel arrays sequences alarms ; IN: concurrency.conditions -: notify-1 ( dequeue -- ) - dup dequeue-empty? [ drop ] [ pop-back resume-now ] if ; +: notify-1 ( deque -- ) + dup deque-empty? [ drop ] [ pop-back resume-now ] if ; -: notify-all ( dequeue -- ) - [ resume-now ] slurp-dequeue ; +: notify-all ( deque -- ) + [ resume-now ] slurp-deque ; : queue-timeout ( queue timeout -- alarm ) #! Add an alarm which removes the current thread from the diff --git a/basis/concurrency/locks/locks.factor b/basis/concurrency/locks/locks.factor index 2ab204e91d..95b6801db2 100755 --- a/basis/concurrency/locks/locks.factor +++ b/basis/concurrency/locks/locks.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: dequeues dlists kernel threads continuations math +USING: deques dlists kernel threads continuations math concurrency.conditions ; IN: concurrency.locks @@ -80,7 +80,7 @@ TUPLE: rw-lock readers writers reader# writer ; : release-write-lock ( lock -- ) f over set-rw-lock-writer - dup rw-lock-readers dequeue-empty? + dup rw-lock-readers deque-empty? [ notify-writer ] [ rw-lock-readers notify-all ] if ; : reentrant-read-lock-ok? ( lock -- ? ) diff --git a/basis/concurrency/mailboxes/mailboxes.factor b/basis/concurrency/mailboxes/mailboxes.factor index 11624ab473..993c26d922 100755 --- a/basis/concurrency/mailboxes/mailboxes.factor +++ b/basis/concurrency/mailboxes/mailboxes.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2008 Chris Double, Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: concurrency.mailboxes -USING: dlists dequeues threads sequences continuations +USING: dlists deques threads sequences continuations destructors namespaces random math quotations words kernel arrays assocs init system concurrency.conditions accessors debugger debugger.threads ; @@ -14,7 +14,7 @@ M: mailbox dispose* threads>> notify-all ; f mailbox boa ; : mailbox-empty? ( mailbox -- bool ) - data>> dequeue-empty? ; + data>> deque-empty? ; : mailbox-put ( obj mailbox -- ) [ data>> push-front ] diff --git a/basis/concurrency/messaging/messaging-tests.factor b/basis/concurrency/messaging/messaging-tests.factor index f782870783..b5c022effe 100755 --- a/basis/concurrency/messaging/messaging-tests.factor +++ b/basis/concurrency/messaging/messaging-tests.factor @@ -2,12 +2,12 @@ ! See http://factorcode.org/license.txt for BSD license. ! USING: kernel threads vectors arrays sequences -namespaces tools.test continuations dequeues strings math words +namespaces tools.test continuations deques strings math words match quotations concurrency.messaging concurrency.mailboxes concurrency.count-downs accessors ; IN: concurrency.messaging.tests -[ ] [ my-mailbox mailbox-data clear-dequeue ] unit-test +[ ] [ my-mailbox mailbox-data clear-deque ] unit-test [ "received" ] [ [ @@ -64,4 +64,4 @@ SYMBOL: exit ! receive drop ! ] "Bad synchronous send" spawn "t" set -! [ 3 "t" get send-synchronous ] must-fail \ No newline at end of file +! [ 3 "t" get send-synchronous ] must-fail diff --git a/basis/deques/authors.txt b/basis/deques/authors.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/basis/deques/authors.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/basis/deques/deques-docs.factor b/basis/deques/deques-docs.factor new file mode 100644 index 0000000000..5a4b33887b --- /dev/null +++ b/basis/deques/deques-docs.factor @@ -0,0 +1,89 @@ +IN: deques +USING: help.markup help.syntax kernel ; + +ARTICLE: "deques" "Dequeues" +"A deque is a data structure with constant-time insertion and removal of elements at both ends. Dequeue operations are defined in the " { $vocab-link "deques" } " vocabulary." +$nl +"Dequeues must be instances of a mixin class:" +{ $subsection deque } +"Dequeues must implement a protocol." +$nl +"Querying the deque:" +{ $subsection peek-front } +{ $subsection peek-back } +{ $subsection deque-length } +{ $subsection deque-member? } +"Adding and removing elements:" +{ $subsection push-front* } +{ $subsection push-back* } +{ $subsection pop-front* } +{ $subsection pop-back* } +{ $subsection clear-deque } +"Working with node objects output by " { $link push-front* } " and " { $link push-back* } ":" +{ $subsection delete-node } +{ $subsection node-value } +"Utility operations built in terms of the above:" +{ $subsection deque-empty? } +{ $subsection push-front } +{ $subsection push-all-front } +{ $subsection push-back } +{ $subsection push-all-back } +{ $subsection pop-front } +{ $subsection pop-back } +{ $subsection slurp-deque } +"When using a deque as a queue, the convention is to queue elements with " { $link push-front } " and deque them with " { $link pop-back } "." ; + +ABOUT: "deques" + +HELP: deque-empty? +{ $values { "deque" { $link deque } } { "?" "a boolean" } } +{ $description "Returns true if a deque is empty." } +{ $notes "This operation is O(1)." } ; + +HELP: push-front +{ $values { "obj" object } { "deque" deque } } +{ $description "Push the object onto the front of the deque." } +{ $notes "This operation is O(1)." } ; + +HELP: push-front* +{ $values { "obj" object } { "deque" deque } { "node" "a node" } } +{ $description "Push the object onto the front of the deque and return the newly created node." } +{ $notes "This operation is O(1)." } ; + +HELP: push-back +{ $values { "obj" object } { "deque" deque } } +{ $description "Push the object onto the back of the deque." } +{ $notes "This operation is O(1)." } ; + +HELP: push-back* +{ $values { "obj" object } { "deque" deque } { "node" "a node" } } +{ $description "Push the object onto the back of the deque and return the newly created node." } +{ $notes "This operation is O(1)." } ; + +HELP: peek-front +{ $values { "deque" deque } { "obj" object } } +{ $description "Returns the object at the front of the deque." } ; + +HELP: pop-front +{ $values { "deque" deque } { "obj" object } } +{ $description "Pop the object off the front of the deque and return the object." } +{ $notes "This operation is O(1)." } ; + +HELP: pop-front* +{ $values { "deque" deque } } +{ $description "Pop the object off the front of the deque." } +{ $notes "This operation is O(1)." } ; + +HELP: peek-back +{ $values { "deque" deque } { "obj" object } } +{ $description "Returns the object at the back of the deque." } ; + +HELP: pop-back +{ $values { "deque" deque } { "obj" object } } +{ $description "Pop the object off the back of the deque and return the object." } +{ $notes "This operation is O(1)." } ; + +HELP: pop-back* +{ $values { "deque" deque } } +{ $description "Pop the object off the back of the deque." } +{ $notes "This operation is O(1)." } ; diff --git a/basis/deques/deques.factor b/basis/deques/deques.factor new file mode 100644 index 0000000000..1d86a3f1db --- /dev/null +++ b/basis/deques/deques.factor @@ -0,0 +1,43 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel sequences math ; +IN: deques + +GENERIC: push-front* ( obj deque -- node ) +GENERIC: push-back* ( obj deque -- node ) +GENERIC: peek-front ( deque -- obj ) +GENERIC: peek-back ( deque -- obj ) +GENERIC: pop-front* ( deque -- ) +GENERIC: pop-back* ( deque -- ) +GENERIC: delete-node ( node deque -- ) +GENERIC: deque-length ( deque -- n ) +GENERIC: deque-member? ( value deque -- ? ) +GENERIC: clear-deque ( deque -- ) +GENERIC: node-value ( node -- value ) + +: deque-empty? ( deque -- ? ) + deque-length zero? ; + +: push-front ( obj deque -- ) + push-front* drop ; + +: push-all-front ( seq deque -- ) + [ push-front ] curry each ; + +: push-back ( obj deque -- ) + push-back* drop ; + +: push-all-back ( seq deque -- ) + [ push-back ] curry each ; + +: pop-front ( deque -- obj ) + [ peek-front ] [ pop-front* ] bi ; + +: pop-back ( deque -- obj ) + [ peek-back ] [ pop-back* ] bi ; + +: slurp-deque ( deque quot -- ) + [ drop [ deque-empty? not ] curry ] + [ [ pop-back ] prepose curry ] 2bi [ ] while ; inline + +MIXIN: deque diff --git a/basis/deques/summary.txt b/basis/deques/summary.txt new file mode 100644 index 0000000000..2f348ebb05 --- /dev/null +++ b/basis/deques/summary.txt @@ -0,0 +1 @@ +Double-ended queue protocol and common operations diff --git a/basis/deques/tags.txt b/basis/deques/tags.txt new file mode 100644 index 0000000000..42d711b32b --- /dev/null +++ b/basis/deques/tags.txt @@ -0,0 +1 @@ +collections diff --git a/basis/dlists/dlists-docs.factor b/basis/dlists/dlists-docs.factor index 8ee3510bb9..557010cf7c 100755 --- a/basis/dlists/dlists-docs.factor +++ b/basis/dlists/dlists-docs.factor @@ -1,16 +1,16 @@ USING: help.markup help.syntax kernel quotations -dequeues ; +deques ; IN: dlists ARTICLE: "dlists" "Double-linked lists" -"A double-linked list is the canonical implementation of a " { $link dequeue } "." +"A double-linked list is the canonical implementation of a " { $link deque } "." $nl "Double-linked lists form a class:" { $subsection dlist } { $subsection dlist? } "Constructing a double-linked list:" { $subsection } -"Double-linked lists support all the operations of the dequeue protocol (" { $link "dequeues" } ") as well as the following." +"Double-linked lists support all the operations of the deque protocol (" { $link "deques" } ") as well as the following." $nl "Iterating over elements:" { $subsection dlist-each } diff --git a/basis/dlists/dlists-tests.factor b/basis/dlists/dlists-tests.factor index 119a0acadb..15022452ee 100755 --- a/basis/dlists/dlists-tests.factor +++ b/basis/dlists/dlists-tests.factor @@ -1,17 +1,17 @@ -USING: dequeues dlists dlists.private kernel tools.test random +USING: deques dlists dlists.private kernel tools.test random assocs sets sequences namespaces sorting debugger io prettyprint math accessors classes ; IN: dlists.tests -[ t ] [ dequeue-empty? ] unit-test +[ t ] [ deque-empty? ] unit-test [ T{ dlist f T{ dlist-node f 1 f f } T{ dlist-node f 1 f f } 1 } ] [ 1 over push-front ] unit-test ! Make sure empty lists are empty -[ t ] [ dequeue-empty? ] unit-test -[ f ] [ 1 over push-front dequeue-empty? ] unit-test -[ f ] [ 1 over push-back dequeue-empty? ] unit-test +[ t ] [ deque-empty? ] unit-test +[ f ] [ 1 over push-front deque-empty? ] unit-test +[ f ] [ 1 over push-back deque-empty? ] unit-test [ 1 ] [ 1 over push-front pop-front ] unit-test [ 1 ] [ 1 over push-front pop-back ] unit-test @@ -50,17 +50,17 @@ IN: dlists.tests [ t ] [ 1 over push-back [ 1 = ] dlist-contains? ] unit-test [ 1 ] [ 1 over push-back [ 1 = ] delete-node-if ] unit-test -[ t ] [ 1 over push-back dup [ 1 = ] delete-node-if drop dequeue-empty? ] unit-test -[ t ] [ 1 over push-back dup [ 1 = ] delete-node-if drop dequeue-empty? ] unit-test -[ 0 ] [ 1 over push-back dup [ 1 = ] delete-node-if drop dequeue-length ] unit-test -[ 1 ] [ 1 over push-back 2 over push-back dup [ 1 = ] delete-node-if drop dequeue-length ] unit-test -[ 2 ] [ 1 over push-back 2 over push-back 3 over push-back dup [ 1 = ] delete-node-if drop dequeue-length ] unit-test -[ 2 ] [ 1 over push-back 2 over push-back 3 over push-back dup [ 2 = ] delete-node-if drop dequeue-length ] unit-test -[ 2 ] [ 1 over push-back 2 over push-back 3 over push-back dup [ 3 = ] delete-node-if drop dequeue-length ] unit-test +[ t ] [ 1 over push-back dup [ 1 = ] delete-node-if drop deque-empty? ] unit-test +[ t ] [ 1 over push-back dup [ 1 = ] delete-node-if drop deque-empty? ] unit-test +[ 0 ] [ 1 over push-back dup [ 1 = ] delete-node-if drop deque-length ] unit-test +[ 1 ] [ 1 over push-back 2 over push-back dup [ 1 = ] delete-node-if drop deque-length ] unit-test +[ 2 ] [ 1 over push-back 2 over push-back 3 over push-back dup [ 1 = ] delete-node-if drop deque-length ] unit-test +[ 2 ] [ 1 over push-back 2 over push-back 3 over push-back dup [ 2 = ] delete-node-if drop deque-length ] unit-test +[ 2 ] [ 1 over push-back 2 over push-back 3 over push-back dup [ 3 = ] delete-node-if drop deque-length ] unit-test -[ 0 ] [ dequeue-length ] unit-test -[ 1 ] [ 1 over push-front dequeue-length ] unit-test -[ 0 ] [ 1 over push-front dup pop-front* dequeue-length ] unit-test +[ 0 ] [ deque-length ] unit-test +[ 1 ] [ 1 over push-front deque-length ] unit-test +[ 0 ] [ 1 over push-front dup pop-front* deque-length ] unit-test [ t ] [ 4 over push-back 5 over push-back [ obj>> 4 = ] dlist-find-node drop class dlist-node = ] unit-test [ t ] [ 4 over push-back 5 over push-back [ obj>> 5 = ] dlist-find-node drop class dlist-node = ] unit-test @@ -72,8 +72,8 @@ IN: dlists.tests [ pop-front ] [ empty-dlist? ] must-fail-with [ pop-back ] [ empty-dlist? ] must-fail-with -[ t ] [ 3 over push-front 4 over push-back 3 swap dequeue-member? ] unit-test +[ t ] [ 3 over push-front 4 over push-back 3 swap deque-member? ] unit-test -[ f ] [ 3 over push-front 4 over push-back -1 swap dequeue-member? ] unit-test +[ f ] [ 3 over push-front 4 over push-back -1 swap deque-member? ] unit-test -[ f ] [ 0 swap dequeue-member? ] unit-test +[ f ] [ 0 swap deque-member? ] unit-test diff --git a/basis/dlists/dlists.factor b/basis/dlists/dlists.factor index 91a5f610ad..3b3cae2820 100755 --- a/basis/dlists/dlists.factor +++ b/basis/dlists/dlists.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007, 2008 Mackenzie Straight, Doug Coleman, ! Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: combinators kernel math sequences accessors dequeues +USING: combinators kernel math sequences accessors deques summary ; IN: dlists @@ -11,7 +11,7 @@ TUPLE: dlist front back length ; dlist new 0 >>length ; -M: dlist dequeue-length length>> ; +M: dlist deque-length length>> ; > ] prepose delete-node-if* drop ; inline -M: dlist clear-dequeue ( dlist -- ) +M: dlist clear-deque ( dlist -- ) f >>front f >>back 0 >>length @@ -156,4 +156,4 @@ M: dlist clear-dequeue ( dlist -- ) : 1dlist ( obj -- dlist ) [ push-front ] keep ; -INSTANCE: dlist dequeue +INSTANCE: dlist deque diff --git a/basis/generator/generator.factor b/basis/generator/generator.factor index e646010c4c..a5443a6e8c 100755 --- a/basis/generator/generator.factor +++ b/basis/generator/generator.factor @@ -5,7 +5,7 @@ effects generator.fixup generator.registers generic hashtables inference inference.backend inference.dataflow io kernel kernel.private layouts math namespaces optimizer optimizer.specializers prettyprint quotations sequences system -threads words vectors sets dequeues ; +threads words vectors sets deques ; IN: generator SYMBOL: compile-queue diff --git a/basis/help/handbook/handbook.factor b/basis/help/handbook/handbook.factor index fc0d00e94d..e44ba441ea 100755 --- a/basis/help/handbook/handbook.factor +++ b/basis/help/handbook/handbook.factor @@ -128,10 +128,10 @@ ARTICLE: "collections" "Collections" { $subsection "alists" } { $subsection "enums" } { $heading "Double-ended queues" } -{ $subsection "dequeues" } +{ $subsection "deques" } "Implementations:" { $subsection "dlists" } -{ $subsection "search-dequeues" } +{ $subsection "search-deques" } { $heading "Other collections" } { $subsection "boxes" } { $subsection "heaps" } diff --git a/basis/search-deques/authors.txt b/basis/search-deques/authors.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/basis/search-deques/authors.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/basis/search-deques/search-deques-docs.factor b/basis/search-deques/search-deques-docs.factor new file mode 100644 index 0000000000..fef770b0f8 --- /dev/null +++ b/basis/search-deques/search-deques-docs.factor @@ -0,0 +1,21 @@ +IN: search-deques +USING: help.markup help.syntax kernel dlists hashtables +deques assocs ; + +ARTICLE: "search-deques" "Search deques" +"A search deque is a data structure with constant-time insertion and removal of elements at both ends, and constant-time membership tests. Inserting an element more than once has no effect. Search deques implement all deque operations in terms of an underlying deque, and membership testing with " { $link deque-member? } " is implemented with an underlying assoc. Search deques are defined in the " { $vocab-link "search-deques" } " vocabulary." +$nl +"Creating a search deque:" +{ $subsection } +"Default implementation:" +{ $subsection } ; + +ABOUT: "search-deques" + +HELP: ( assoc deque -- search-deque ) +{ $values { "assoc" assoc } { "deque" deque } { "search-deque" search-deque } } +{ $description "Creates a new " { $link search-deque } "." } ; + +HELP: ( -- search-deque ) +{ $values { "search-deque" search-deque } } +{ $description "Creates a new " { $link search-deque } " backed by a " { $link dlist } ", with a " { $link hashtable } " for fast membership tests." } ; diff --git a/basis/search-deques/search-deques-tests.factor b/basis/search-deques/search-deques-tests.factor new file mode 100644 index 0000000000..cf2837a84c --- /dev/null +++ b/basis/search-deques/search-deques-tests.factor @@ -0,0 +1,35 @@ +IN: search-deques.tests +USING: search-deques tools.test namespaces +kernel sequences words deques vocabs ; + + "h" set + +[ t ] [ "h" get deque-empty? ] unit-test + +[ ] [ 3 "h" get push-front* "1" set ] unit-test +[ ] [ 1 "h" get push-front ] unit-test +[ ] [ 3 "h" get push-front* "2" set ] unit-test +[ ] [ 3 "h" get push-front* "3" set ] unit-test +[ ] [ 7 "h" get push-front ] unit-test + +[ t ] [ "1" get "2" get eq? ] unit-test +[ t ] [ "2" get "3" get eq? ] unit-test + +[ 3 ] [ "h" get deque-length ] unit-test +[ t ] [ 7 "h" get deque-member? ] unit-test + +[ 3 ] [ "1" get node-value ] unit-test +[ ] [ "1" get "h" get delete-node ] unit-test + +[ 2 ] [ "h" get deque-length ] unit-test +[ 1 ] [ "h" get pop-back ] unit-test +[ 7 ] [ "h" get pop-back ] unit-test + +[ f ] [ 7 "h" get deque-member? ] unit-test + +[ ] [ + + [ all-words swap [ push-front ] curry each ] + [ [ drop ] slurp-deque ] + bi +] unit-test diff --git a/basis/search-deques/search-deques.factor b/basis/search-deques/search-deques.factor new file mode 100644 index 0000000000..8e5506090c --- /dev/null +++ b/basis/search-deques/search-deques.factor @@ -0,0 +1,53 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors kernel assocs deques dlists hashtables ; +IN: search-deques + +TUPLE: search-deque assoc deque ; + +C: search-deque + +: ( -- search-deque ) + 0 ; + +M: search-deque deque-length deque>> deque-length ; + +M: search-deque peek-front deque>> peek-front ; + +M: search-deque peek-back deque>> peek-back ; + +M: search-deque push-front* + 2dup assoc>> at* [ 2nip ] [ + drop + [ deque>> push-front* ] [ assoc>> ] 2bi + [ 2drop ] [ set-at ] 3bi + ] if ; + +M: search-deque push-back* + 2dup assoc>> at* [ 2nip ] [ + drop + [ deque>> push-back* ] [ assoc>> ] 2bi + [ 2drop ] [ set-at ] 3bi + ] if ; + +M: search-deque pop-front* + [ [ deque>> peek-front ] [ assoc>> ] bi delete-at ] + [ deque>> pop-front* ] + bi ; + +M: search-deque pop-back* + [ [ deque>> peek-back ] [ assoc>> ] bi delete-at ] + [ deque>> pop-back* ] + bi ; + +M: search-deque delete-node + [ deque>> delete-node ] + [ [ node-value ] [ assoc>> ] bi* delete-at ] 2bi ; + +M: search-deque clear-deque + [ deque>> clear-deque ] [ assoc>> clear-assoc ] bi ; + +M: search-deque deque-member? + assoc>> key? ; + +INSTANCE: search-deque deque diff --git a/basis/search-deques/summary.txt b/basis/search-deques/summary.txt new file mode 100644 index 0000000000..9102bf2d58 --- /dev/null +++ b/basis/search-deques/summary.txt @@ -0,0 +1 @@ +Double-ended queues with sub-linear membership testing diff --git a/basis/search-deques/tags.txt b/basis/search-deques/tags.txt new file mode 100644 index 0000000000..42d711b32b --- /dev/null +++ b/basis/search-deques/tags.txt @@ -0,0 +1 @@ +collections diff --git a/basis/threads/threads-docs.factor b/basis/threads/threads-docs.factor index 944526e05c..da308f5abf 100755 --- a/basis/threads/threads-docs.factor +++ b/basis/threads/threads-docs.factor @@ -1,6 +1,6 @@ USING: help.markup help.syntax kernel kernel.private io threads.private continuations dlists init quotations strings -assocs heaps boxes namespaces dequeues ; +assocs heaps boxes namespaces deques ; IN: threads ARTICLE: "threads-start/stop" "Starting and stopping threads" @@ -86,7 +86,7 @@ HELP: run-queue { $var-description "Global variable holding the queue of runnable threads. Calls to " { $link yield } " switch to the thread which has been in the queue for the longest period of time." $nl "By convention, threads are queued with " { $link push-front } -" and dequeued with " { $link pop-back } "." } ; +" and dequed with " { $link pop-back } "." } ; HELP: resume { $values { "thread" thread } } diff --git a/basis/threads/threads.factor b/basis/threads/threads.factor index c406d0db12..e6ffbf9857 100755 --- a/basis/threads/threads.factor +++ b/basis/threads/threads.factor @@ -4,7 +4,7 @@ USING: arrays hashtables heaps kernel kernel.private math namespaces sequences vectors continuations continuations.private dlists assocs system combinators init boxes accessors -math.order dequeues strings quotations ; +math.order deques strings quotations ; IN: threads SYMBOL: initial-thread @@ -91,7 +91,7 @@ PRIVATE> : sleep-time ( -- ms/f ) { - { [ run-queue dequeue-empty? not ] [ 0 ] } + { [ run-queue deque-empty? not ] [ 0 ] } { [ sleep-queue heap-empty? ] [ f ] } [ sleep-queue heap-peek nip millis [-] ] } cond ; @@ -151,7 +151,7 @@ DEFER: next : next ( -- * ) expire-sleep-loop - run-queue dup dequeue-empty? [ + run-queue dup deque-empty? [ drop no-runnable-threads ] [ pop-back dup array? [ first2 ] [ f swap ] if (next) diff --git a/checksums.txt b/checksums.txt new file mode 100644 index 0000000000..875e3ad24f --- /dev/null +++ b/checksums.txt @@ -0,0 +1,4 @@ +boot.x86.32.image 07cd1d5506e508e8054d22f03cd0e63b +boot.x86.64.image 4e99cd0902df35bbef4d1ad30559d911 +boot.linux-ppc.image 2188d87eb2920b7f34b5c6f2ddf7bd27 +boot.macosx-ppc.image 37e05c8b04df0386032959bdbd9dc9cc diff --git a/extra/io/paths/paths.factor b/extra/io/paths/paths.factor index 98cf3e5769..fb4f6d3a6d 100755 --- a/extra/io/paths/paths.factor +++ b/extra/io/paths/paths.factor @@ -1,5 +1,5 @@ USING: io.files kernel sequences accessors -dlists dequeues arrays sequences.lib ; +dlists deques arrays sequences.lib ; IN: io.paths TUPLE: directory-iterator path bfs queue ; @@ -18,7 +18,7 @@ TUPLE: directory-iterator path bfs queue ; dup path>> over push-directory ; : next-file ( iter -- file/f ) - dup queue>> dequeue-empty? [ drop f ] [ + dup queue>> deque-empty? [ drop f ] [ dup queue>> pop-back first2 [ over push-directory next-file ] [ nip ] if ] if ; diff --git a/extra/ui/gadgets/gadgets-tests.factor b/extra/ui/gadgets/gadgets-tests.factor index 1a2555d538..0bce366fcc 100755 --- a/extra/ui/gadgets/gadgets-tests.factor +++ b/extra/ui/gadgets/gadgets-tests.factor @@ -1,6 +1,6 @@ IN: ui.gadgets.tests USING: accessors ui.gadgets ui.gadgets.packs ui.gadgets.worlds -tools.test namespaces models kernel dlists dequeues math sets +tools.test namespaces models kernel dlists deques math sets math.parser ui sequences hashtables assocs io arrays prettyprint io.streams.string math.geometry.rect ; @@ -91,26 +91,26 @@ M: mock-gadget ungraft* [ \ graft-queue [ [ ] [ dup queue-graft unqueue-graft ] unit-test - [ t ] [ graft-queue dequeue-empty? ] unit-test + [ t ] [ graft-queue deque-empty? ] unit-test ] with-variable \ graft-queue [ - [ t ] [ graft-queue dequeue-empty? ] unit-test + [ t ] [ graft-queue deque-empty? ] unit-test "g" set [ ] [ "g" get queue-graft ] unit-test - [ f ] [ graft-queue dequeue-empty? ] unit-test + [ f ] [ graft-queue deque-empty? ] unit-test [ { f t } ] [ "g" get gadget-graft-state ] unit-test [ ] [ "g" get graft-later ] unit-test [ { f t } ] [ "g" get gadget-graft-state ] unit-test [ ] [ "g" get ungraft-later ] unit-test [ { f f } ] [ "g" get gadget-graft-state ] unit-test - [ t ] [ graft-queue dequeue-empty? ] unit-test + [ t ] [ graft-queue deque-empty? ] unit-test [ ] [ "g" get ungraft-later ] unit-test [ ] [ "g" get graft-later ] unit-test [ ] [ notify-queued ] unit-test [ { t t } ] [ "g" get gadget-graft-state ] unit-test - [ t ] [ graft-queue dequeue-empty? ] unit-test + [ t ] [ graft-queue deque-empty? ] unit-test [ ] [ "g" get graft-later ] unit-test [ 1 ] [ "g" get mock-gadget-graft-called ] unit-test [ ] [ "g" get ungraft-later ] unit-test @@ -146,7 +146,7 @@ M: mock-gadget ungraft* [ { f t } ] [ "1" get gadget-graft-state ] unit-test [ { f t } ] [ "2" get gadget-graft-state ] unit-test [ { f t } ] [ "3" get gadget-graft-state ] unit-test - [ ] [ graft-queue [ "x" print notify ] slurp-dequeue ] unit-test + [ ] [ graft-queue [ "x" print notify ] slurp-deque ] unit-test [ ] [ notify-queued ] unit-test [ V{ { t t } } ] [ status-flags ] unit-test ] with-variable ; diff --git a/extra/ui/gadgets/gadgets.factor b/extra/ui/gadgets/gadgets.factor index 90eea255e8..15a28801d6 100755 --- a/extra/ui/gadgets/gadgets.factor +++ b/extra/ui/gadgets/gadgets.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays hashtables kernel models math namespaces sequences quotations math.vectors combinators sorting - binary-search vectors dlists dequeues models threads + binary-search vectors dlists deques models threads concurrency.flags math.order math.geometry.rect ; IN: ui.gadgets diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index 29d1d16642..0e00627cb9 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2006, 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays assocs io kernel math models namespaces -prettyprint dlists dequeues sequences threads sequences words +prettyprint dlists deques sequences threads sequences words debugger ui.gadgets ui.gadgets.worlds ui.gadgets.tracks ui.gestures ui.backend ui.render continuations init combinators hashtables concurrency.flags sets accessors ; @@ -15,7 +15,7 @@ SYMBOL: stop-after-last-window? : event-loop? ( -- ? ) { { [ stop-after-last-window? get not ] [ t ] } - { [ graft-queue dequeue-empty? not ] [ t ] } + { [ graft-queue deque-empty? not ] [ t ] } { [ windows get-global empty? not ] [ t ] } [ f ] } cond ; @@ -126,7 +126,7 @@ SYMBOL: ui-hook in-layout? on layout-queue [ dup layout find-world [ , ] when* - ] slurp-dequeue + ] slurp-deque ] { } make prune ; : redraw-worlds ( seq -- ) @@ -141,7 +141,7 @@ SYMBOL: ui-hook } case ; : notify-queued ( -- ) - graft-queue [ notify ] slurp-dequeue ; + graft-queue [ notify ] slurp-deque ; : update-ui ( -- ) [ notify-queued layout-queued redraw-worlds ] assert-depth ;