From b3e20dfdf2bba6c85c6828e7f38876fc35a54d08 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 13 Feb 2009 15:10:46 -0600 Subject: [PATCH 01/36] better factor annotations docs --- extra/annotations/annotations-docs.factor | 30 ++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/extra/annotations/annotations-docs.factor b/extra/annotations/annotations-docs.factor index c340554119..1effdf4067 100644 --- a/extra/annotations/annotations-docs.factor +++ b/extra/annotations/annotations-docs.factor @@ -9,6 +9,22 @@ IN: annotations : comment-usage.-word ( base -- word ) "s." append "annotations" lookup ; PRIVATE> +: $annotation ( element -- ) + P first + [ "!" " your comment here" surround 1array $syntax ] + [ [ "Treats the rest of the line after the exclamation point as a code annotation that can be looked up with the " \ $link ] dip comment-usage.-word 2array " word." 3array $description ] + [ ": foo ( x y z -- w )\n !" " --w-ó()ò-w-- kilroy was here\n + * ;" surround 1array $unchecked-example ] + tri ; + +: $annotation-usage. ( element -- ) + first + [ "Displays a list of words, help articles, and vocabularies that contain " \ $link ] dip comment-word 2array " annotations." 3array $description ; + +: $annotation-usage ( element -- ) + first + { "usages" sequence } $values + [ "Returns a list of words, help articles, and vocabularies that contain " \ $link ] dip [ comment-word 2array " annotations. For a more user-friendly display, use the " \ $link ] [ comment-usage.-word 2array " word." 6 narray ] bi 1array $description ; + "Code annotations" { "The " { $vocab-link "annotations" } " vocabulary provides syntax for comment-like annotations that can be looked up with Factor's " { $link usage } " mechanism." @@ -26,17 +42,9 @@ annotation-tags natural-sort annotation-tags [ { - [ [ \ $syntax ] dip "!" " your comment here" surround 2array ] - [ [ \ $description "Treats the rest of the line after the exclamation point as a code annotation that can be looked up with the " \ $link ] dip comment-usage.-word 2array " word." 4array ] - [ [ \ $unchecked-example ] dip ": foo ( x y z -- w )\n !" " --w-ó()ò-w-- kilroy was here\n + * ;" surround 2array 3array ] - [ comment-word set-word-help ] - - [ [ \ $description "Displays a list of words, help articles, and vocabularies that contain " \ $link ] dip comment-word 2array " annotations." 4array 1array ] - [ comment-usage.-word set-word-help ] - - [ [ { $values { "usages" sequence } } \ $description "Returns a list of words, help articles, and vocabularies that contain " \ $link ] dip [ comment-word 2array " annotations. For a more user-friendly display, use the " \ $link ] [ comment-usage.-word 2array " word." 6 narray 2array ] bi ] - [ comment-usage-word set-word-help ] - + [ [ \ $annotation swap 2array 1array ] [ comment-word set-word-help ] bi ] + [ [ \ $annotation-usage swap 2array 1array ] [ comment-usage-word set-word-help ] bi ] + [ [ \ $annotation-usage. swap 2array 1array ] [ comment-usage.-word set-word-help ] bi ] [ [ comment-word ] [ comment-usage-word ] [ comment-usage.-word ] tri 3array related-words ] } cleave ] each From 20053c7f5c00b0d3127d71bc63a9aa4f58cb79d5 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 16 Feb 2009 19:00:09 -0600 Subject: [PATCH 02/36] Deploy tool: if debugger is not stripped out, actually use it to report errors; print an error if vocab has no MAIN: word --- basis/debugger/debugger.factor | 2 +- basis/tools/deploy/backend/backend.factor | 13 ------ basis/tools/deploy/deploy-tests.factor | 5 +++ basis/tools/deploy/shaker/shaker.factor | 48 ++++++++++++++++++----- 4 files changed, 45 insertions(+), 23 deletions(-) diff --git a/basis/debugger/debugger.factor b/basis/debugger/debugger.factor index 23fd101991..5f7431ecf3 100644 --- a/basis/debugger/debugger.factor +++ b/basis/debugger/debugger.factor @@ -70,7 +70,7 @@ M: string error. print ; "Type :help for debugging help." print flush ; : try ( quot -- ) - [ print-error-and-restarts ] recover ; + [ print-error-and-restarts ] recover ; inline : expired-error. ( obj -- ) "Object did not survive image save/load: " write third . ; diff --git a/basis/tools/deploy/backend/backend.factor b/basis/tools/deploy/backend/backend.factor index ff851edce6..7d8f357240 100755 --- a/basis/tools/deploy/backend/backend.factor +++ b/basis/tools/deploy/backend/backend.factor @@ -58,25 +58,17 @@ DEFER: ?make-staging-image : staging-command-line ( profile -- flags ) [ "-staging" , - dup empty? [ "-i=" my-boot-image-name append , ] [ dup but-last ?make-staging-image - "-resource-path=" "" resource-path append , - "-i=" over but-last staging-image-name append , - "-run=tools.deploy.restage" , ] if - "-output-image=" over staging-image-name append , - "-include=" swap " " join append , - strip-word-names? [ "-no-stack-traces" , ] when - "-no-user-init" , ] { } make ; @@ -101,16 +93,11 @@ DEFER: ?make-staging-image [ "-i=" bootstrap-profile staging-image-name append , - "-resource-path=" "" resource-path append , - "-run=tools.deploy.shaker" , - [ "-deploy-vocab=" prepend , ] [ make-deploy-config "-deploy-config=" prepend , ] bi - "-output-image=" prepend , - strip-word-names? [ "-no-stack-traces" , ] when ] { } make ] bind ; diff --git a/basis/tools/deploy/deploy-tests.factor b/basis/tools/deploy/deploy-tests.factor index 600b1d8d55..0dea093081 100644 --- a/basis/tools/deploy/deploy-tests.factor +++ b/basis/tools/deploy/deploy-tests.factor @@ -104,3 +104,8 @@ M: quit-responder call-responder* "tools.deploy.test.10" shake-and-bake run-temp-image ] unit-test + +[ ] [ + "tools.deploy.test.11" shake-and-bake + run-temp-image +] unit-test \ No newline at end of file diff --git a/basis/tools/deploy/shaker/shaker.factor b/basis/tools/deploy/shaker/shaker.factor index 0a0aa82c52..7ba5cee507 100755 --- a/basis/tools/deploy/shaker/shaker.factor +++ b/basis/tools/deploy/shaker/shaker.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2007, 2008 Slava Pestov. +! Copyright (C) 2007, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors io.backend io.streams.c init fry namespaces make assocs kernel parser lexer strings.parser vocabs @@ -232,7 +232,6 @@ IN: tools.deploy.shaker "tools" "io.launcher" "random" - "compiler" "stack-checker" "bootstrap" "listener" @@ -241,7 +240,7 @@ IN: tools.deploy.shaker strip-dictionary? [ "libraries" "alien" lookup , - { } { "cpu" } strip-vocab-globals % + { } { "cpu" "compiler" } strip-vocab-globals % { gensym @@ -359,12 +358,26 @@ IN: tools.deploy.shaker SYMBOL: deploy-vocab -: set-boot-quot* ( word -- ) +: [:c] ( -- word ) ":c" "debugger" lookup ; + +: [print-error] ( -- word ) "print-error" "debugger" lookup ; + +: deploy-boot-quot ( word -- ) [ - \ boot , + [ boot ] % init-hooks get values concat % - , - strip-io? [ \ flush , ] unless + strip-debugger? [ , ] [ + ! Don't reference try directly + [:c] + [print-error] + '[ + [ _ execute ] [ + _ execute nl + _ execute + ] recover + ] % + ] if + strip-io? [ [ flush ] % ] unless [ 0 exit ] % ] [ ] make set-boot-quot ; @@ -392,7 +405,7 @@ SYMBOL: deploy-vocab strip-init-hooks strip-c-io f 5 setenv ! we can't use the Factor debugger or Factor I/O anymore - deploy-vocab get vocab-main set-boot-quot* + deploy-vocab get vocab-main deploy-boot-quot stripped-word-props stripped-globals strip-globals compress-byte-arrays @@ -401,16 +414,33 @@ SYMBOL: deploy-vocab compress-wrappers strip-words ; +: deploy-error-handler ( quot -- ) + [ + strip-debugger? + [ error-continuation get call>> callstack>array die ] + ! Don't reference these words literally, if we're stripping the + ! debugger out we don't want to load the prettyprinter at all + [ [:c] nl [print-error] ] if + 1 exit + ] recover ; inline + : (deploy) ( final-image vocab config -- ) #! Does the actual work of a deployment in the slave #! stage2 image [ [ + strip-debugger? [ + "debugger" require + "inspector" require + ] unless deploy-vocab set deploy-vocab get require + deploy-vocab get vocab-main [ + "Vocabulary has no MAIN: word." print flush 1 exit + ] unless strip finish-deploy - ] [ error-continuation get call>> callstack>array die 1 exit ] recover + ] deploy-error-handler ] bind ; : do-deploy ( -- ) From 1a4aaf219fcc930ac8e5b4dedf63feab594547cc Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 16 Feb 2009 19:36:02 -0600 Subject: [PATCH 03/36] Fix deploy tool: error wasn't printed properly --- basis/tools/deploy/shaker/shaker.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/tools/deploy/shaker/shaker.factor b/basis/tools/deploy/shaker/shaker.factor index 7ba5cee507..5095f9e93e 100755 --- a/basis/tools/deploy/shaker/shaker.factor +++ b/basis/tools/deploy/shaker/shaker.factor @@ -420,7 +420,7 @@ SYMBOL: deploy-vocab [ error-continuation get call>> callstack>array die ] ! Don't reference these words literally, if we're stripping the ! debugger out we don't want to load the prettyprinter at all - [ [:c] nl [print-error] ] if + [ [:c] execute nl [print-error] execute flush ] if 1 exit ] recover ; inline From 6b25e994703de26f7d37eceb6aa11d7bd1f5c0d5 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 16 Feb 2009 21:05:13 -0600 Subject: [PATCH 04/36] Add summary for heaps more vocabs --- basis/alien/complex/functor/summary.txt | 1 + basis/alien/parser/summary.txt | 1 + basis/alien/prettyprint/summary.txt | 1 + basis/alien/strings/summary.txt | 1 + basis/alien/strings/unix/summary.txt | 1 + basis/alien/strings/windows/summary.txt | 1 + basis/alien/structs/fields/summary.txt | 1 + basis/assoc-heaps/summary.txt | 1 + basis/bitstreams/summary.txt | 1 + basis/bootstrap/help/help.factor | 1 + basis/cairo/ffi/summary.txt | 1 + basis/cairo/gadgets/summary.txt | 1 + basis/calendar/format/macros/summary.txt | 1 + basis/calendar/unix/summary.txt | 1 + basis/calendar/windows/summary.txt | 1 + basis/call/summary.txt | 1 + basis/checksums/adler-32/summary.txt | 1 + basis/checksums/md5/summary.txt | 1 + basis/checksums/null/summary.txt | 1 + basis/checksums/openssl/summary.txt | 1 + basis/checksums/sha1/summary.txt | 1 + basis/checksums/sha2/summary.txt | 1 + basis/checksums/stream/summary.txt | 1 + basis/cocoa/enumeration/summary.txt | 1 + basis/cocoa/plists/summary.txt | 1 + basis/colors/gray/summary.txt | 1 + basis/colors/hsv/summary.txt | 1 + basis/combinators/short-circuit/smart/summary.txt | 1 + basis/combinators/short-circuit/summary.txt | 1 + basis/combinators/smart/summary.txt | 1 + basis/compiler/alien/summary.txt | 1 + basis/compiler/cfg/alias-analysis/summary.txt | 1 + basis/compiler/cfg/copy-prop/summary.txt | 1 + basis/compiler/cfg/dead-code/summary.txt | 1 + basis/compiler/cfg/debugger/summary.txt | 1 + basis/compiler/cfg/def-use/summary.txt | 1 + basis/compiler/cfg/hats/summary.txt | 1 + basis/compiler/cfg/height/summary.txt | 1 + basis/compiler/cfg/instructions/summary.txt | 1 + .../compiler/cfg/instructions/syntax/summary.txt | 1 + basis/compiler/cfg/intrinsics/alien/summary.txt | 1 + basis/compiler/cfg/intrinsics/allot/summary.txt | 1 + basis/compiler/cfg/intrinsics/fixnum/summary.txt | 1 + basis/compiler/cfg/intrinsics/float/summary.txt | 1 + basis/compiler/cfg/intrinsics/misc/summary.txt | 1 + basis/compiler/cfg/intrinsics/slots/summary.txt | 1 + basis/compiler/cfg/intrinsics/summary.txt | 1 + basis/compiler/cfg/iterator/summary.txt | 1 + .../cfg/linear-scan/allocation/summary.txt | 1 + .../cfg/linear-scan/assignment/summary.txt | 1 + .../compiler/cfg/linear-scan/debugger/summary.txt | 1 + .../cfg/linear-scan/live-intervals/summary.txt | 1 + basis/compiler/cfg/linear-scan/summary.txt | 1 + basis/compiler/cfg/linearization/summary.txt | 1 + basis/compiler/cfg/optimizer/summary.txt | 1 + basis/compiler/cfg/predecessors/summary.txt | 1 + basis/compiler/cfg/registers/summary.txt | 1 + basis/compiler/cfg/rpo/summary.txt | 1 + basis/compiler/cfg/stack-frame/summary.txt | 1 + basis/compiler/cfg/stacks/summary.txt | 1 + basis/compiler/cfg/summary.txt | 1 + basis/compiler/cfg/two-operand/summary.txt | 1 + basis/compiler/cfg/useless-blocks/summary.txt | 1 + basis/compiler/cfg/utilities/summary.txt | 1 + .../cfg/value-numbering/expressions/summary.txt | 1 + .../cfg/value-numbering/graph/summary.txt | 1 + .../cfg/value-numbering/propagate/summary.txt | 1 + .../cfg/value-numbering/rewrite/summary.txt | 1 + .../cfg/value-numbering/simplify/summary.txt | 1 + basis/compiler/cfg/value-numbering/summary.txt | 1 + basis/compiler/cfg/write-barrier/summary.txt | 1 + basis/compiler/codegen/summary.txt | 1 + basis/compiler/tree/builder/summary.txt | 1 + basis/compiler/tree/checker/summary.txt | 1 + basis/compiler/tree/cleanup/summary.txt | 1 + basis/compiler/tree/combinators/summary.txt | 1 + basis/compiler/tree/comparisons/summary.txt | 1 + .../compiler/tree/dead-code/branches/summary.txt | 1 + .../compiler/tree/dead-code/liveness/summary.txt | 1 + .../compiler/tree/dead-code/recursive/summary.txt | 1 + basis/compiler/tree/dead-code/simple/summary.txt | 1 + basis/compiler/tree/dead-code/summary.txt | 1 + basis/compiler/tree/debugger/summary.txt | 1 + .../compiler/tree/def-use/simplified/summary.txt | 1 + .../tree/escape-analysis/allocations/summary.txt | 1 + .../tree/escape-analysis/branches/summary.txt | 1 + .../tree/escape-analysis/check/summary.txt | 1 + .../tree/escape-analysis/nodes/summary.txt | 1 + .../tree/escape-analysis/recursive/summary.txt | 1 + .../tree/escape-analysis/simple/summary.txt | 1 + basis/compiler/tree/escape-analysis/summary.txt | 1 + basis/compiler/tree/finalization/summary.txt | 1 + basis/compiler/tree/identities/summary.txt | 1 + .../compiler/tree/late-optimizations/summary.txt | 1 + .../compiler/tree/modular-arithmetic/summary.txt | 1 + .../tree/normalization/introductions/summary.txt | 1 + .../tree/normalization/renaming/summary.txt | 1 + basis/compiler/tree/normalization/summary.txt | 1 + basis/compiler/tree/optimizer/summary.txt | 1 + .../tree/propagation/branches/summary.txt | 1 + .../tree/propagation/constraints/summary.txt | 1 + basis/compiler/tree/propagation/copy/summary.txt | 1 + basis/compiler/tree/propagation/info/summary.txt | 1 + .../tree/propagation/inlining/summary.txt | 1 + .../tree/propagation/known-words/summary.txt | 1 + basis/compiler/tree/propagation/nodes/summary.txt | 1 + .../tree/propagation/recursive/summary.txt | 1 + .../compiler/tree/propagation/simple/summary.txt | 1 + basis/compiler/tree/propagation/slots/summary.txt | 1 + basis/compiler/tree/recursive/summary.txt | 1 + basis/compiler/tree/tuple-unboxing/summary.txt | 1 + basis/compiler/utilities/summary.txt | 1 + basis/compression/lzw/summary.txt | 1 + basis/compression/zlib/ffi/summary.txt | 1 + basis/compression/zlib/summary.txt | 1 + basis/concurrency/flags/summary.txt | 1 + basis/concurrency/mailboxes/summary.txt | 1 + basis/constructors/summary.txt | 1 + basis/core-foundation/arrays/summary.txt | 1 + basis/core-foundation/bundles/summary.txt | 1 + basis/core-foundation/data/summary.txt | 1 + .../core-foundation/file-descriptors/summary.txt | 1 + basis/core-foundation/fsevents/summary.txt | 1 + basis/core-foundation/strings/summary.txt | 1 + basis/core-foundation/time/summary.txt | 1 + basis/core-foundation/timers/summary.txt | 1 + basis/core-foundation/urls/summary.txt | 1 + basis/cpu/ppc/linux/summary.txt | 1 + basis/cpu/ppc/macosx/summary.txt | 1 + basis/cpu/x86/32/summary.txt | 1 + basis/cpu/x86/64/unix/summary.txt | 1 + basis/cpu/x86/64/winnt/summary.txt | 1 + basis/cpu/x86/assembler/summary.txt | 1 + basis/cpu/x86/assembler/syntax/summary.txt | 1 + basis/db/errors/summary.txt | 1 + basis/db/pools/summary.txt | 1 + basis/db/postgresql/summary.txt | 1 + basis/db/queries/summary.txt | 1 + basis/db/sqlite/summary.txt | 1 + basis/db/tuples/summary.txt | 1 + basis/db/types/summary.txt | 1 + basis/delegate/protocols/summary.txt | 1 + basis/endian/summary.txt | 1 + basis/environment/unix/macosx/summary.txt | 1 + basis/environment/unix/summary.txt | 1 + basis/environment/winnt/summary.txt | 1 + basis/farkup/tags.txt | 1 + basis/ftp/client/summary.txt | 1 + basis/ftp/server/summary.txt | 1 + basis/ftp/summary.txt | 1 + basis/help/html/summary.txt | 1 + basis/html/summary.txt | 1 + basis/html/templates/chloe/compiler/summary.txt | 1 + basis/http/server/dispatchers/summary.txt | 1 + basis/http/server/filters/summary.txt | 1 + basis/http/server/redirection/summary.txt | 1 + basis/http/server/remapping/summary.txt | 1 + basis/http/server/responses/summary.txt | 1 + basis/http/server/static/summary.txt | 1 + basis/images/bitmap/summary.txt | 1 + basis/images/loader/summary.txt | 1 + basis/images/summary.txt | 1 + basis/images/tiff/summary.txt | 1 + basis/interpolate/summary.txt | 1 + .../backend/unix/multiplexers/epoll/summary.txt | 1 + .../backend/unix/multiplexers/kqueue/summary.txt | 1 + .../unix/multiplexers/run-loop/summary.txt | 1 + .../backend/unix/multiplexers/select/summary.txt | 1 + basis/io/backend/unix/multiplexers/summary.txt | 1 + basis/io/directories/search/summary.txt | 1 + basis/io/encodings/chinese/summary.txt | 1 + basis/io/encodings/korean/tags.txt | 1 - basis/io/encodings/strict/tags.txt | 1 - basis/io/encodings/string/summary.txt | 2 +- basis/io/encodings/string/tags.factor | 1 - basis/io/encodings/{8-bit => string}/tags.txt | 0 basis/io/encodings/utf16/tags.txt | 1 - basis/io/encodings/utf16n/summary.txt | 1 + basis/io/encodings/utf32/tags.txt | 1 - basis/io/files/types/summary.txt | 1 + basis/io/files/unique/summary.txt | 1 + basis/io/pipes/summary.txt | 1 + basis/io/streams/byte-array/summary.txt | 1 + basis/io/streams/limited/summary.txt | 1 + basis/io/streams/memory/summary.txt | 1 + basis/lcs/diff2html/summary.txt | 1 + basis/lists/lazy/examples/summary.txt | 1 + basis/locals/backend/summary.txt | 1 + basis/locals/definitions/summary.txt | 1 + basis/locals/errors/summary.txt | 1 + basis/locals/fry/summary.txt | 1 + basis/locals/macros/summary.txt | 1 + basis/locals/parser/summary.txt | 1 + basis/locals/prettyprint/summary.txt | 1 + basis/locals/rewrite/closures/summary.txt | 1 + basis/locals/rewrite/point-free/summary.txt | 1 + basis/locals/rewrite/sugar/summary.txt | 1 + basis/locals/types/summary.txt | 1 + basis/macros/expander/summary.txt | 1 + basis/math/partial-dispatch/summary.txt | 1 + .../positioning/positioning-docs.factor | 0 basis/mime/multipart/summary.txt | 1 + basis/mime/types/summary.txt | 1 + basis/models/compose/summary.txt | 1 + basis/models/delay/summary.txt | 1 + basis/models/filter/summary.txt | 1 + basis/models/history/summary.txt | 1 + basis/models/mapping/summary.txt | 1 + basis/models/range/summary.txt | 1 + basis/nibble-arrays/summary.txt | 1 + basis/openssl/libcrypto/summary.txt | 1 + basis/openssl/libssl/summary.txt | 1 + basis/pack/summary.txt | 1 + basis/peg/ebnf/summary.txt | 2 +- basis/peg/ebnf/tags.txt | 1 + basis/peg/parsers/summary.txt | 1 + .../{io/encodings/ascii => peg/parsers}/tags.txt | 0 basis/peg/summary.txt | 2 +- basis/prettyprint/custom/summary.txt | 1 + basis/random/dummy/summary.txt | 1 + basis/random/unix/summary.txt | 1 + basis/random/windows/summary.txt | 1 + basis/smtp/server/summary.txt | 1 + basis/sorting/slots/summary.txt | 1 + .../specialized-arrays/direct/functor/summary.txt | 1 + basis/specialized-arrays/functor/summary.txt | 1 + basis/specialized-vectors/functor/summary.txt | 1 + basis/stack-checker/alien/summary.txt | 1 + basis/stack-checker/branches/summary.txt | 1 + basis/stack-checker/inlining/summary.txt | 1 + basis/stack-checker/recursive-state/summary.txt | 1 + .../recursive-state/tree/summary.txt | 1 + basis/stack-checker/values/summary.txt | 1 + basis/stack-checker/visitor/dummy/summary.txt | 1 + basis/stack-checker/visitor/summary.txt | 1 + basis/tools/deploy/test/11/11-tests.factor | 4 ++++ basis/tools/deploy/test/11/11.factor | 8 ++++++++ basis/tools/deploy/test/11/authors.txt | 1 + basis/tools/deploy/test/11/deploy.factor | 15 +++++++++++++++ basis/tools/files/summary.txt | 1 + basis/tools/scaffold/summary.txt | 1 + basis/tools/threads/summary.txt | 1 + basis/tools/vocabs/browser/summary.txt | 1 + basis/tools/vocabs/summary.txt | 1 + basis/ui/gadgets/canvas/summary.txt | 1 + basis/ui/tools/deploy/summary.txt | 1 + basis/ui/windows/summary.txt | 1 + basis/ui/x11/summary.txt | 1 + basis/unicode/breaks/summary.txt | 1 + basis/unicode/case/summary.txt | 1 + basis/unicode/categories/summary.txt | 1 + basis/unicode/collation/summary.txt | 1 + .../binary => unicode/collation}/tags.txt | 0 basis/unicode/data/summary.txt | 1 + basis/unicode/normalize/summary.txt | 1 + .../japanese => unicode/script}/tags.txt | 0 basis/unicode/summary.txt | 2 +- basis/unicode/syntax/summary.txt | 1 + basis/unix/groups/summary.txt | 1 + basis/unix/users/summary.txt | 1 + basis/unrolled-lists/summary.txt | 1 + basis/urls/secure/summary.txt | 1 + basis/vlists/summary.txt | 1 + basis/wrap/strings/summary.txt | 1 + basis/wrap/words/summary.txt | 1 + basis/xml/entities/html/summary.txt | 1 + basis/xmode/code2html/summary.txt | 1 + basis/xmode/marker/summary.txt | 1 + core/classes/algebra/summary.txt | 1 + core/classes/builtin/summary.txt | 1 + core/classes/intersection/summary.txt | 1 + core/classes/parser/summary.txt | 1 + core/classes/singleton/summary.txt | 1 + core/classes/tuple/parser/summary.txt | 1 + core/classes/tuple/summary.txt | 2 +- core/combinators/summary.txt | 2 +- core/effects/parser/summary.txt | 1 + core/generic/parser/summary.txt | 1 + .../standard/engines/predicate/summary.txt | 1 + core/generic/standard/engines/summary.txt | 1 + core/generic/standard/engines/tag/summary.txt | 1 + core/generic/standard/engines/tuple/summary.txt | 1 + core/io/encodings/utf8/tags.txt | 1 - core/io/streams/null/summary.txt | 1 + core/math/order/summary.txt | 1 + core/splitting/tags.txt | 1 + core/strings/parser/summary.txt | 1 + core/system/summary.txt | 2 +- core/vocabs/parser/summary.txt | 1 + core/words/constant/summary.txt | 1 + core/words/symbol/summary.txt | 1 + extra/peg/javascript/ast/tags.txt | 1 - extra/peg/javascript/parser/tags.txt | 1 - extra/peg/javascript/tags.txt | 1 - extra/peg/javascript/tokenizer/tags.txt | 1 - 295 files changed, 304 insertions(+), 17 deletions(-) create mode 100644 basis/alien/complex/functor/summary.txt create mode 100644 basis/alien/parser/summary.txt create mode 100644 basis/alien/prettyprint/summary.txt create mode 100644 basis/alien/strings/summary.txt create mode 100644 basis/alien/strings/unix/summary.txt create mode 100644 basis/alien/strings/windows/summary.txt create mode 100644 basis/alien/structs/fields/summary.txt create mode 100644 basis/assoc-heaps/summary.txt create mode 100644 basis/bitstreams/summary.txt create mode 100644 basis/cairo/ffi/summary.txt create mode 100644 basis/cairo/gadgets/summary.txt create mode 100644 basis/calendar/format/macros/summary.txt create mode 100644 basis/calendar/unix/summary.txt create mode 100644 basis/calendar/windows/summary.txt create mode 100644 basis/call/summary.txt create mode 100644 basis/checksums/adler-32/summary.txt create mode 100644 basis/checksums/md5/summary.txt create mode 100644 basis/checksums/null/summary.txt create mode 100644 basis/checksums/openssl/summary.txt create mode 100644 basis/checksums/sha1/summary.txt create mode 100644 basis/checksums/sha2/summary.txt create mode 100644 basis/checksums/stream/summary.txt create mode 100644 basis/cocoa/enumeration/summary.txt create mode 100644 basis/cocoa/plists/summary.txt create mode 100644 basis/colors/gray/summary.txt create mode 100644 basis/colors/hsv/summary.txt create mode 100644 basis/combinators/short-circuit/smart/summary.txt create mode 100644 basis/combinators/short-circuit/summary.txt create mode 100644 basis/combinators/smart/summary.txt create mode 100644 basis/compiler/alien/summary.txt create mode 100644 basis/compiler/cfg/alias-analysis/summary.txt create mode 100644 basis/compiler/cfg/copy-prop/summary.txt create mode 100644 basis/compiler/cfg/dead-code/summary.txt create mode 100644 basis/compiler/cfg/debugger/summary.txt create mode 100644 basis/compiler/cfg/def-use/summary.txt create mode 100644 basis/compiler/cfg/hats/summary.txt create mode 100644 basis/compiler/cfg/height/summary.txt create mode 100644 basis/compiler/cfg/instructions/summary.txt create mode 100644 basis/compiler/cfg/instructions/syntax/summary.txt create mode 100644 basis/compiler/cfg/intrinsics/alien/summary.txt create mode 100644 basis/compiler/cfg/intrinsics/allot/summary.txt create mode 100644 basis/compiler/cfg/intrinsics/fixnum/summary.txt create mode 100644 basis/compiler/cfg/intrinsics/float/summary.txt create mode 100644 basis/compiler/cfg/intrinsics/misc/summary.txt create mode 100644 basis/compiler/cfg/intrinsics/slots/summary.txt create mode 100644 basis/compiler/cfg/intrinsics/summary.txt create mode 100644 basis/compiler/cfg/iterator/summary.txt create mode 100644 basis/compiler/cfg/linear-scan/allocation/summary.txt create mode 100644 basis/compiler/cfg/linear-scan/assignment/summary.txt create mode 100644 basis/compiler/cfg/linear-scan/debugger/summary.txt create mode 100644 basis/compiler/cfg/linear-scan/live-intervals/summary.txt create mode 100644 basis/compiler/cfg/linear-scan/summary.txt create mode 100644 basis/compiler/cfg/linearization/summary.txt create mode 100644 basis/compiler/cfg/optimizer/summary.txt create mode 100644 basis/compiler/cfg/predecessors/summary.txt create mode 100644 basis/compiler/cfg/registers/summary.txt create mode 100644 basis/compiler/cfg/rpo/summary.txt create mode 100644 basis/compiler/cfg/stack-frame/summary.txt create mode 100644 basis/compiler/cfg/stacks/summary.txt create mode 100644 basis/compiler/cfg/summary.txt create mode 100644 basis/compiler/cfg/two-operand/summary.txt create mode 100644 basis/compiler/cfg/useless-blocks/summary.txt create mode 100644 basis/compiler/cfg/utilities/summary.txt create mode 100644 basis/compiler/cfg/value-numbering/expressions/summary.txt create mode 100644 basis/compiler/cfg/value-numbering/graph/summary.txt create mode 100644 basis/compiler/cfg/value-numbering/propagate/summary.txt create mode 100644 basis/compiler/cfg/value-numbering/rewrite/summary.txt create mode 100644 basis/compiler/cfg/value-numbering/simplify/summary.txt create mode 100644 basis/compiler/cfg/value-numbering/summary.txt create mode 100644 basis/compiler/cfg/write-barrier/summary.txt create mode 100644 basis/compiler/codegen/summary.txt create mode 100644 basis/compiler/tree/builder/summary.txt create mode 100644 basis/compiler/tree/checker/summary.txt create mode 100644 basis/compiler/tree/cleanup/summary.txt create mode 100644 basis/compiler/tree/combinators/summary.txt create mode 100644 basis/compiler/tree/comparisons/summary.txt create mode 100644 basis/compiler/tree/dead-code/branches/summary.txt create mode 100644 basis/compiler/tree/dead-code/liveness/summary.txt create mode 100644 basis/compiler/tree/dead-code/recursive/summary.txt create mode 100644 basis/compiler/tree/dead-code/simple/summary.txt create mode 100644 basis/compiler/tree/dead-code/summary.txt create mode 100644 basis/compiler/tree/debugger/summary.txt create mode 100644 basis/compiler/tree/def-use/simplified/summary.txt create mode 100644 basis/compiler/tree/escape-analysis/allocations/summary.txt create mode 100644 basis/compiler/tree/escape-analysis/branches/summary.txt create mode 100644 basis/compiler/tree/escape-analysis/check/summary.txt create mode 100644 basis/compiler/tree/escape-analysis/nodes/summary.txt create mode 100644 basis/compiler/tree/escape-analysis/recursive/summary.txt create mode 100644 basis/compiler/tree/escape-analysis/simple/summary.txt create mode 100644 basis/compiler/tree/escape-analysis/summary.txt create mode 100644 basis/compiler/tree/finalization/summary.txt create mode 100644 basis/compiler/tree/identities/summary.txt create mode 100644 basis/compiler/tree/late-optimizations/summary.txt create mode 100644 basis/compiler/tree/modular-arithmetic/summary.txt create mode 100644 basis/compiler/tree/normalization/introductions/summary.txt create mode 100644 basis/compiler/tree/normalization/renaming/summary.txt create mode 100644 basis/compiler/tree/normalization/summary.txt create mode 100644 basis/compiler/tree/optimizer/summary.txt create mode 100644 basis/compiler/tree/propagation/branches/summary.txt create mode 100644 basis/compiler/tree/propagation/constraints/summary.txt create mode 100644 basis/compiler/tree/propagation/copy/summary.txt create mode 100644 basis/compiler/tree/propagation/info/summary.txt create mode 100644 basis/compiler/tree/propagation/inlining/summary.txt create mode 100644 basis/compiler/tree/propagation/known-words/summary.txt create mode 100644 basis/compiler/tree/propagation/nodes/summary.txt create mode 100644 basis/compiler/tree/propagation/recursive/summary.txt create mode 100644 basis/compiler/tree/propagation/simple/summary.txt create mode 100644 basis/compiler/tree/propagation/slots/summary.txt create mode 100644 basis/compiler/tree/recursive/summary.txt create mode 100644 basis/compiler/tree/tuple-unboxing/summary.txt create mode 100644 basis/compiler/utilities/summary.txt create mode 100644 basis/compression/lzw/summary.txt create mode 100644 basis/compression/zlib/ffi/summary.txt create mode 100644 basis/compression/zlib/summary.txt create mode 100644 basis/concurrency/flags/summary.txt create mode 100644 basis/concurrency/mailboxes/summary.txt create mode 100644 basis/constructors/summary.txt create mode 100644 basis/core-foundation/arrays/summary.txt create mode 100644 basis/core-foundation/bundles/summary.txt create mode 100644 basis/core-foundation/data/summary.txt create mode 100644 basis/core-foundation/file-descriptors/summary.txt create mode 100644 basis/core-foundation/fsevents/summary.txt create mode 100644 basis/core-foundation/strings/summary.txt create mode 100644 basis/core-foundation/time/summary.txt create mode 100644 basis/core-foundation/timers/summary.txt create mode 100644 basis/core-foundation/urls/summary.txt create mode 100644 basis/cpu/ppc/linux/summary.txt create mode 100644 basis/cpu/ppc/macosx/summary.txt create mode 100644 basis/cpu/x86/32/summary.txt create mode 100644 basis/cpu/x86/64/unix/summary.txt create mode 100644 basis/cpu/x86/64/winnt/summary.txt create mode 100644 basis/cpu/x86/assembler/summary.txt create mode 100644 basis/cpu/x86/assembler/syntax/summary.txt create mode 100644 basis/db/errors/summary.txt create mode 100644 basis/db/pools/summary.txt create mode 100644 basis/db/postgresql/summary.txt create mode 100644 basis/db/queries/summary.txt create mode 100644 basis/db/sqlite/summary.txt create mode 100644 basis/db/tuples/summary.txt create mode 100644 basis/db/types/summary.txt create mode 100644 basis/delegate/protocols/summary.txt create mode 100644 basis/endian/summary.txt create mode 100644 basis/environment/unix/macosx/summary.txt create mode 100644 basis/environment/unix/summary.txt create mode 100644 basis/environment/winnt/summary.txt create mode 100644 basis/ftp/client/summary.txt create mode 100644 basis/ftp/server/summary.txt create mode 100644 basis/ftp/summary.txt create mode 100644 basis/help/html/summary.txt create mode 100644 basis/html/summary.txt create mode 100644 basis/html/templates/chloe/compiler/summary.txt create mode 100644 basis/http/server/dispatchers/summary.txt create mode 100644 basis/http/server/filters/summary.txt create mode 100644 basis/http/server/redirection/summary.txt create mode 100644 basis/http/server/remapping/summary.txt create mode 100644 basis/http/server/responses/summary.txt create mode 100644 basis/http/server/static/summary.txt create mode 100644 basis/images/bitmap/summary.txt create mode 100644 basis/images/loader/summary.txt create mode 100644 basis/images/summary.txt create mode 100644 basis/images/tiff/summary.txt create mode 100644 basis/interpolate/summary.txt create mode 100644 basis/io/backend/unix/multiplexers/epoll/summary.txt create mode 100644 basis/io/backend/unix/multiplexers/kqueue/summary.txt create mode 100644 basis/io/backend/unix/multiplexers/run-loop/summary.txt create mode 100644 basis/io/backend/unix/multiplexers/select/summary.txt create mode 100644 basis/io/backend/unix/multiplexers/summary.txt create mode 100644 basis/io/directories/search/summary.txt create mode 100644 basis/io/encodings/chinese/summary.txt delete mode 100644 basis/io/encodings/korean/tags.txt delete mode 100644 basis/io/encodings/strict/tags.txt delete mode 100644 basis/io/encodings/string/tags.factor rename basis/io/encodings/{8-bit => string}/tags.txt (100%) delete mode 100644 basis/io/encodings/utf16/tags.txt create mode 100644 basis/io/encodings/utf16n/summary.txt delete mode 100644 basis/io/encodings/utf32/tags.txt create mode 100644 basis/io/files/types/summary.txt create mode 100644 basis/io/files/unique/summary.txt create mode 100644 basis/io/pipes/summary.txt create mode 100644 basis/io/streams/byte-array/summary.txt create mode 100644 basis/io/streams/limited/summary.txt create mode 100644 basis/io/streams/memory/summary.txt create mode 100644 basis/lcs/diff2html/summary.txt create mode 100644 basis/lists/lazy/examples/summary.txt create mode 100644 basis/locals/backend/summary.txt create mode 100644 basis/locals/definitions/summary.txt create mode 100644 basis/locals/errors/summary.txt create mode 100644 basis/locals/fry/summary.txt create mode 100644 basis/locals/macros/summary.txt create mode 100644 basis/locals/parser/summary.txt create mode 100644 basis/locals/prettyprint/summary.txt create mode 100644 basis/locals/rewrite/closures/summary.txt create mode 100644 basis/locals/rewrite/point-free/summary.txt create mode 100644 basis/locals/rewrite/sugar/summary.txt create mode 100644 basis/locals/types/summary.txt create mode 100644 basis/macros/expander/summary.txt create mode 100644 basis/math/partial-dispatch/summary.txt create mode 100644 basis/math/rectangles/positioning/positioning-docs.factor create mode 100644 basis/mime/multipart/summary.txt create mode 100644 basis/mime/types/summary.txt create mode 100644 basis/models/compose/summary.txt create mode 100644 basis/models/delay/summary.txt create mode 100644 basis/models/filter/summary.txt create mode 100644 basis/models/history/summary.txt create mode 100644 basis/models/mapping/summary.txt create mode 100644 basis/models/range/summary.txt create mode 100644 basis/nibble-arrays/summary.txt create mode 100644 basis/openssl/libcrypto/summary.txt create mode 100644 basis/openssl/libssl/summary.txt create mode 100644 basis/pack/summary.txt create mode 100644 basis/peg/parsers/summary.txt rename basis/{io/encodings/ascii => peg/parsers}/tags.txt (100%) create mode 100644 basis/prettyprint/custom/summary.txt create mode 100644 basis/random/dummy/summary.txt create mode 100644 basis/random/unix/summary.txt create mode 100644 basis/random/windows/summary.txt create mode 100644 basis/smtp/server/summary.txt create mode 100644 basis/sorting/slots/summary.txt create mode 100644 basis/specialized-arrays/direct/functor/summary.txt create mode 100644 basis/specialized-arrays/functor/summary.txt create mode 100644 basis/specialized-vectors/functor/summary.txt create mode 100644 basis/stack-checker/alien/summary.txt create mode 100644 basis/stack-checker/branches/summary.txt create mode 100644 basis/stack-checker/inlining/summary.txt create mode 100644 basis/stack-checker/recursive-state/summary.txt create mode 100644 basis/stack-checker/recursive-state/tree/summary.txt create mode 100644 basis/stack-checker/values/summary.txt create mode 100644 basis/stack-checker/visitor/dummy/summary.txt create mode 100644 basis/stack-checker/visitor/summary.txt create mode 100644 basis/tools/deploy/test/11/11-tests.factor create mode 100644 basis/tools/deploy/test/11/11.factor create mode 100644 basis/tools/deploy/test/11/authors.txt create mode 100644 basis/tools/deploy/test/11/deploy.factor create mode 100644 basis/tools/files/summary.txt create mode 100644 basis/tools/scaffold/summary.txt create mode 100644 basis/tools/threads/summary.txt create mode 100644 basis/tools/vocabs/browser/summary.txt create mode 100644 basis/tools/vocabs/summary.txt create mode 100644 basis/ui/gadgets/canvas/summary.txt create mode 100644 basis/ui/tools/deploy/summary.txt create mode 100644 basis/ui/windows/summary.txt create mode 100644 basis/ui/x11/summary.txt create mode 100644 basis/unicode/breaks/summary.txt create mode 100644 basis/unicode/case/summary.txt create mode 100644 basis/unicode/categories/summary.txt create mode 100644 basis/unicode/collation/summary.txt rename basis/{io/encodings/binary => unicode/collation}/tags.txt (100%) create mode 100644 basis/unicode/data/summary.txt create mode 100644 basis/unicode/normalize/summary.txt rename basis/{io/encodings/japanese => unicode/script}/tags.txt (100%) create mode 100644 basis/unicode/syntax/summary.txt create mode 100644 basis/unix/groups/summary.txt create mode 100644 basis/unix/users/summary.txt create mode 100644 basis/unrolled-lists/summary.txt create mode 100644 basis/urls/secure/summary.txt create mode 100644 basis/vlists/summary.txt create mode 100644 basis/wrap/strings/summary.txt create mode 100644 basis/wrap/words/summary.txt create mode 100644 basis/xml/entities/html/summary.txt create mode 100644 basis/xmode/code2html/summary.txt create mode 100644 basis/xmode/marker/summary.txt create mode 100644 core/classes/algebra/summary.txt create mode 100644 core/classes/builtin/summary.txt create mode 100644 core/classes/intersection/summary.txt create mode 100644 core/classes/parser/summary.txt create mode 100644 core/classes/singleton/summary.txt create mode 100644 core/classes/tuple/parser/summary.txt create mode 100644 core/effects/parser/summary.txt create mode 100644 core/generic/parser/summary.txt create mode 100644 core/generic/standard/engines/predicate/summary.txt create mode 100644 core/generic/standard/engines/summary.txt create mode 100644 core/generic/standard/engines/tag/summary.txt create mode 100644 core/generic/standard/engines/tuple/summary.txt delete mode 100644 core/io/encodings/utf8/tags.txt create mode 100644 core/io/streams/null/summary.txt create mode 100644 core/math/order/summary.txt create mode 100644 core/strings/parser/summary.txt create mode 100644 core/vocabs/parser/summary.txt create mode 100644 core/words/constant/summary.txt create mode 100644 core/words/symbol/summary.txt diff --git a/basis/alien/complex/functor/summary.txt b/basis/alien/complex/functor/summary.txt new file mode 100644 index 0000000000..17454036c5 --- /dev/null +++ b/basis/alien/complex/functor/summary.txt @@ -0,0 +1 @@ +Code generation for C99 complex number support diff --git a/basis/alien/parser/summary.txt b/basis/alien/parser/summary.txt new file mode 100644 index 0000000000..4290040372 --- /dev/null +++ b/basis/alien/parser/summary.txt @@ -0,0 +1 @@ +Utilities used in implementation of alien parsing words diff --git a/basis/alien/prettyprint/summary.txt b/basis/alien/prettyprint/summary.txt new file mode 100644 index 0000000000..06fcfd0078 --- /dev/null +++ b/basis/alien/prettyprint/summary.txt @@ -0,0 +1 @@ +Prettyprinting aliens and DLLs diff --git a/basis/alien/strings/summary.txt b/basis/alien/strings/summary.txt new file mode 100644 index 0000000000..8ea3806523 --- /dev/null +++ b/basis/alien/strings/summary.txt @@ -0,0 +1 @@ +Passing Factor strings as C strings and vice versa diff --git a/basis/alien/strings/unix/summary.txt b/basis/alien/strings/unix/summary.txt new file mode 100644 index 0000000000..27e7f4cfb1 --- /dev/null +++ b/basis/alien/strings/unix/summary.txt @@ -0,0 +1 @@ +Default string encoding on Unix diff --git a/basis/alien/strings/windows/summary.txt b/basis/alien/strings/windows/summary.txt new file mode 100644 index 0000000000..42bffbb300 --- /dev/null +++ b/basis/alien/strings/windows/summary.txt @@ -0,0 +1 @@ +Default string encoding on Windows diff --git a/basis/alien/structs/fields/summary.txt b/basis/alien/structs/fields/summary.txt new file mode 100644 index 0000000000..d9370ca575 --- /dev/null +++ b/basis/alien/structs/fields/summary.txt @@ -0,0 +1 @@ +Struct field implementation and reflection support diff --git a/basis/assoc-heaps/summary.txt b/basis/assoc-heaps/summary.txt new file mode 100644 index 0000000000..792be0a9ec --- /dev/null +++ b/basis/assoc-heaps/summary.txt @@ -0,0 +1 @@ +Priority queue with fast insertion, removal of first element, and lookup of arbitrary elements by key diff --git a/basis/bitstreams/summary.txt b/basis/bitstreams/summary.txt new file mode 100644 index 0000000000..32b21d6e73 --- /dev/null +++ b/basis/bitstreams/summary.txt @@ -0,0 +1 @@ +Reading sequences of bits from a byte stream diff --git a/basis/bootstrap/help/help.factor b/basis/bootstrap/help/help.factor index bd994a160d..c3e74f7863 100644 --- a/basis/bootstrap/help/help.factor +++ b/basis/bootstrap/help/help.factor @@ -5,6 +5,7 @@ IN: bootstrap.help : load-help ( -- ) "help.lint" require + "tools.vocabs.browser" require "alien.syntax" require "compiler" require diff --git a/basis/cairo/ffi/summary.txt b/basis/cairo/ffi/summary.txt new file mode 100644 index 0000000000..7fe88a8026 --- /dev/null +++ b/basis/cairo/ffi/summary.txt @@ -0,0 +1 @@ +Low-level alien interface to Cairo library diff --git a/basis/cairo/gadgets/summary.txt b/basis/cairo/gadgets/summary.txt new file mode 100644 index 0000000000..18dc464b16 --- /dev/null +++ b/basis/cairo/gadgets/summary.txt @@ -0,0 +1 @@ +UI gadget for rendering graphics with Cairo diff --git a/basis/calendar/format/macros/summary.txt b/basis/calendar/format/macros/summary.txt new file mode 100644 index 0000000000..92c347a875 --- /dev/null +++ b/basis/calendar/format/macros/summary.txt @@ -0,0 +1 @@ +Implementation details for calendar.format diff --git a/basis/calendar/unix/summary.txt b/basis/calendar/unix/summary.txt new file mode 100644 index 0000000000..b57628b637 --- /dev/null +++ b/basis/calendar/unix/summary.txt @@ -0,0 +1 @@ +Unix-specific timezone support and C library time data types diff --git a/basis/calendar/windows/summary.txt b/basis/calendar/windows/summary.txt new file mode 100644 index 0000000000..1fdbc43acb --- /dev/null +++ b/basis/calendar/windows/summary.txt @@ -0,0 +1 @@ +Windows-specific timezone support diff --git a/basis/call/summary.txt b/basis/call/summary.txt new file mode 100644 index 0000000000..d449497971 --- /dev/null +++ b/basis/call/summary.txt @@ -0,0 +1 @@ +Calling arbitrary quotations and executing arbitrary words with a static stack effect diff --git a/basis/checksums/adler-32/summary.txt b/basis/checksums/adler-32/summary.txt new file mode 100644 index 0000000000..86ce15b536 --- /dev/null +++ b/basis/checksums/adler-32/summary.txt @@ -0,0 +1 @@ +Adler-32 checksum algorithm diff --git a/basis/checksums/md5/summary.txt b/basis/checksums/md5/summary.txt new file mode 100644 index 0000000000..fae2ff8a1c --- /dev/null +++ b/basis/checksums/md5/summary.txt @@ -0,0 +1 @@ +MD5 checksum algorithm diff --git a/basis/checksums/null/summary.txt b/basis/checksums/null/summary.txt new file mode 100644 index 0000000000..2d4eedd2fc --- /dev/null +++ b/basis/checksums/null/summary.txt @@ -0,0 +1 @@ +Dummy checksum algorithm diff --git a/basis/checksums/openssl/summary.txt b/basis/checksums/openssl/summary.txt new file mode 100644 index 0000000000..e13a387197 --- /dev/null +++ b/basis/checksums/openssl/summary.txt @@ -0,0 +1 @@ +OpenSSL's MD5 and SHA1 checksums diff --git a/basis/checksums/sha1/summary.txt b/basis/checksums/sha1/summary.txt new file mode 100644 index 0000000000..d8da1df0aa --- /dev/null +++ b/basis/checksums/sha1/summary.txt @@ -0,0 +1 @@ +SHA1 checksum algorithm diff --git a/basis/checksums/sha2/summary.txt b/basis/checksums/sha2/summary.txt new file mode 100644 index 0000000000..04365d439f --- /dev/null +++ b/basis/checksums/sha2/summary.txt @@ -0,0 +1 @@ +SHA2 checksum algorithm diff --git a/basis/checksums/stream/summary.txt b/basis/checksums/stream/summary.txt new file mode 100644 index 0000000000..12fcb8cb2f --- /dev/null +++ b/basis/checksums/stream/summary.txt @@ -0,0 +1 @@ +Computing checksums of streaming data diff --git a/basis/cocoa/enumeration/summary.txt b/basis/cocoa/enumeration/summary.txt new file mode 100644 index 0000000000..ce593b730f --- /dev/null +++ b/basis/cocoa/enumeration/summary.txt @@ -0,0 +1 @@ +Support for iterating over NSFastEnumerations diff --git a/basis/cocoa/plists/summary.txt b/basis/cocoa/plists/summary.txt new file mode 100644 index 0000000000..155307fbc3 --- /dev/null +++ b/basis/cocoa/plists/summary.txt @@ -0,0 +1 @@ +Reading and writing Cocoa property lists diff --git a/basis/colors/gray/summary.txt b/basis/colors/gray/summary.txt new file mode 100644 index 0000000000..55db158c19 --- /dev/null +++ b/basis/colors/gray/summary.txt @@ -0,0 +1 @@ +Grayscale colors diff --git a/basis/colors/hsv/summary.txt b/basis/colors/hsv/summary.txt new file mode 100644 index 0000000000..bb946f0282 --- /dev/null +++ b/basis/colors/hsv/summary.txt @@ -0,0 +1 @@ +Hue-saturation-value colors diff --git a/basis/combinators/short-circuit/smart/summary.txt b/basis/combinators/short-circuit/smart/summary.txt new file mode 100644 index 0000000000..7779f91802 --- /dev/null +++ b/basis/combinators/short-circuit/smart/summary.txt @@ -0,0 +1 @@ +Short-circuiting logical operations which infer the arity diff --git a/basis/combinators/short-circuit/summary.txt b/basis/combinators/short-circuit/summary.txt new file mode 100644 index 0000000000..4b930db94c --- /dev/null +++ b/basis/combinators/short-circuit/summary.txt @@ -0,0 +1 @@ +Short-circuiting logical operations diff --git a/basis/combinators/smart/summary.txt b/basis/combinators/smart/summary.txt new file mode 100644 index 0000000000..10475cc5b2 --- /dev/null +++ b/basis/combinators/smart/summary.txt @@ -0,0 +1 @@ +Combinators which infer arities diff --git a/basis/compiler/alien/summary.txt b/basis/compiler/alien/summary.txt new file mode 100644 index 0000000000..5fc715b478 --- /dev/null +++ b/basis/compiler/alien/summary.txt @@ -0,0 +1 @@ +Common code used for analysis and code generation of alien bindings diff --git a/basis/compiler/cfg/alias-analysis/summary.txt b/basis/compiler/cfg/alias-analysis/summary.txt new file mode 100644 index 0000000000..c7e7c030bc --- /dev/null +++ b/basis/compiler/cfg/alias-analysis/summary.txt @@ -0,0 +1 @@ +Alias analysis for stack operations, array elements and tuple slots diff --git a/basis/compiler/cfg/copy-prop/summary.txt b/basis/compiler/cfg/copy-prop/summary.txt new file mode 100644 index 0000000000..4273830158 --- /dev/null +++ b/basis/compiler/cfg/copy-prop/summary.txt @@ -0,0 +1 @@ +Common code used by several passes to perform copy propagation diff --git a/basis/compiler/cfg/dead-code/summary.txt b/basis/compiler/cfg/dead-code/summary.txt new file mode 100644 index 0000000000..c66cd99606 --- /dev/null +++ b/basis/compiler/cfg/dead-code/summary.txt @@ -0,0 +1 @@ +Dead-code elimination diff --git a/basis/compiler/cfg/debugger/summary.txt b/basis/compiler/cfg/debugger/summary.txt new file mode 100644 index 0000000000..43e4191880 --- /dev/null +++ b/basis/compiler/cfg/debugger/summary.txt @@ -0,0 +1 @@ +Tools for debugging low-level optimizer diff --git a/basis/compiler/cfg/def-use/summary.txt b/basis/compiler/cfg/def-use/summary.txt new file mode 100644 index 0000000000..e28231e1bc --- /dev/null +++ b/basis/compiler/cfg/def-use/summary.txt @@ -0,0 +1 @@ +Common code used by several passes for def-use analysis diff --git a/basis/compiler/cfg/hats/summary.txt b/basis/compiler/cfg/hats/summary.txt new file mode 100644 index 0000000000..d0ef839c6b --- /dev/null +++ b/basis/compiler/cfg/hats/summary.txt @@ -0,0 +1 @@ +Utility for constructing basic blocks diff --git a/basis/compiler/cfg/height/summary.txt b/basis/compiler/cfg/height/summary.txt new file mode 100644 index 0000000000..ce1974ad60 --- /dev/null +++ b/basis/compiler/cfg/height/summary.txt @@ -0,0 +1 @@ +Stack height normalization coalesces height changes at start of basic block diff --git a/basis/compiler/cfg/instructions/summary.txt b/basis/compiler/cfg/instructions/summary.txt new file mode 100644 index 0000000000..803d6e3391 --- /dev/null +++ b/basis/compiler/cfg/instructions/summary.txt @@ -0,0 +1 @@ +Basic block instructions diff --git a/basis/compiler/cfg/instructions/syntax/summary.txt b/basis/compiler/cfg/instructions/syntax/summary.txt new file mode 100644 index 0000000000..944c38e972 --- /dev/null +++ b/basis/compiler/cfg/instructions/syntax/summary.txt @@ -0,0 +1 @@ +Parsing word for defining instructions diff --git a/basis/compiler/cfg/intrinsics/alien/summary.txt b/basis/compiler/cfg/intrinsics/alien/summary.txt new file mode 100644 index 0000000000..682acebb81 --- /dev/null +++ b/basis/compiler/cfg/intrinsics/alien/summary.txt @@ -0,0 +1 @@ +Generating instructions for alien calls diff --git a/basis/compiler/cfg/intrinsics/allot/summary.txt b/basis/compiler/cfg/intrinsics/allot/summary.txt new file mode 100644 index 0000000000..dc335f3ab3 --- /dev/null +++ b/basis/compiler/cfg/intrinsics/allot/summary.txt @@ -0,0 +1 @@ +Generating instructions for inline memory allocation diff --git a/basis/compiler/cfg/intrinsics/fixnum/summary.txt b/basis/compiler/cfg/intrinsics/fixnum/summary.txt new file mode 100644 index 0000000000..648573bbe2 --- /dev/null +++ b/basis/compiler/cfg/intrinsics/fixnum/summary.txt @@ -0,0 +1 @@ +Generating instructions for fixnum arithmetic diff --git a/basis/compiler/cfg/intrinsics/float/summary.txt b/basis/compiler/cfg/intrinsics/float/summary.txt new file mode 100644 index 0000000000..3da4a1346d --- /dev/null +++ b/basis/compiler/cfg/intrinsics/float/summary.txt @@ -0,0 +1 @@ +Generating instructions for floating point arithmetic diff --git a/basis/compiler/cfg/intrinsics/misc/summary.txt b/basis/compiler/cfg/intrinsics/misc/summary.txt new file mode 100644 index 0000000000..295a34b049 --- /dev/null +++ b/basis/compiler/cfg/intrinsics/misc/summary.txt @@ -0,0 +1 @@ +Generating instructions for miscellaneous primitives diff --git a/basis/compiler/cfg/intrinsics/slots/summary.txt b/basis/compiler/cfg/intrinsics/slots/summary.txt new file mode 100644 index 0000000000..fd3c17071b --- /dev/null +++ b/basis/compiler/cfg/intrinsics/slots/summary.txt @@ -0,0 +1 @@ +Generating instructions for slot access diff --git a/basis/compiler/cfg/intrinsics/summary.txt b/basis/compiler/cfg/intrinsics/summary.txt new file mode 100644 index 0000000000..511091c400 --- /dev/null +++ b/basis/compiler/cfg/intrinsics/summary.txt @@ -0,0 +1 @@ +Generating instructions from certain primitives diff --git a/basis/compiler/cfg/iterator/summary.txt b/basis/compiler/cfg/iterator/summary.txt new file mode 100644 index 0000000000..b5afb479bd --- /dev/null +++ b/basis/compiler/cfg/iterator/summary.txt @@ -0,0 +1 @@ +Utility for iterating for high-level IR diff --git a/basis/compiler/cfg/linear-scan/allocation/summary.txt b/basis/compiler/cfg/linear-scan/allocation/summary.txt new file mode 100644 index 0000000000..bb0290feb6 --- /dev/null +++ b/basis/compiler/cfg/linear-scan/allocation/summary.txt @@ -0,0 +1 @@ +Allocating registers for live intervals diff --git a/basis/compiler/cfg/linear-scan/assignment/summary.txt b/basis/compiler/cfg/linear-scan/assignment/summary.txt new file mode 100644 index 0000000000..9f6b1b8ff5 --- /dev/null +++ b/basis/compiler/cfg/linear-scan/assignment/summary.txt @@ -0,0 +1 @@ +Assigning registers to live intervals diff --git a/basis/compiler/cfg/linear-scan/debugger/summary.txt b/basis/compiler/cfg/linear-scan/debugger/summary.txt new file mode 100644 index 0000000000..73f2210478 --- /dev/null +++ b/basis/compiler/cfg/linear-scan/debugger/summary.txt @@ -0,0 +1 @@ +Tools for debugging register allocator diff --git a/basis/compiler/cfg/linear-scan/live-intervals/summary.txt b/basis/compiler/cfg/linear-scan/live-intervals/summary.txt new file mode 100644 index 0000000000..e12e4c37e3 --- /dev/null +++ b/basis/compiler/cfg/linear-scan/live-intervals/summary.txt @@ -0,0 +1 @@ +Live intervals diff --git a/basis/compiler/cfg/linear-scan/summary.txt b/basis/compiler/cfg/linear-scan/summary.txt new file mode 100644 index 0000000000..51858c8ada --- /dev/null +++ b/basis/compiler/cfg/linear-scan/summary.txt @@ -0,0 +1 @@ +Linear-scan register allocation diff --git a/basis/compiler/cfg/linearization/summary.txt b/basis/compiler/cfg/linearization/summary.txt new file mode 100644 index 0000000000..96daec8046 --- /dev/null +++ b/basis/compiler/cfg/linearization/summary.txt @@ -0,0 +1 @@ +Flattening CFG into MR (machine representation) diff --git a/basis/compiler/cfg/optimizer/summary.txt b/basis/compiler/cfg/optimizer/summary.txt new file mode 100644 index 0000000000..d6b0ad899a --- /dev/null +++ b/basis/compiler/cfg/optimizer/summary.txt @@ -0,0 +1 @@ +Top-level harness for CFG optimization diff --git a/basis/compiler/cfg/predecessors/summary.txt b/basis/compiler/cfg/predecessors/summary.txt new file mode 100644 index 0000000000..89e9a9026e --- /dev/null +++ b/basis/compiler/cfg/predecessors/summary.txt @@ -0,0 +1 @@ +Computing predecessors of basic blocks in CFG diff --git a/basis/compiler/cfg/registers/summary.txt b/basis/compiler/cfg/registers/summary.txt new file mode 100644 index 0000000000..5258598ab6 --- /dev/null +++ b/basis/compiler/cfg/registers/summary.txt @@ -0,0 +1 @@ +Virtual single-assignment registers diff --git a/basis/compiler/cfg/rpo/summary.txt b/basis/compiler/cfg/rpo/summary.txt new file mode 100644 index 0000000000..bcb03ef9d9 --- /dev/null +++ b/basis/compiler/cfg/rpo/summary.txt @@ -0,0 +1 @@ +Reverse post-order linearization of CFG diff --git a/basis/compiler/cfg/stack-frame/summary.txt b/basis/compiler/cfg/stack-frame/summary.txt new file mode 100644 index 0000000000..1ad913a1d3 --- /dev/null +++ b/basis/compiler/cfg/stack-frame/summary.txt @@ -0,0 +1 @@ +Computing stack frame size and layout diff --git a/basis/compiler/cfg/stacks/summary.txt b/basis/compiler/cfg/stacks/summary.txt new file mode 100644 index 0000000000..63da52fc21 --- /dev/null +++ b/basis/compiler/cfg/stacks/summary.txt @@ -0,0 +1 @@ +Generating instructions for accessing the data and retain stacks diff --git a/basis/compiler/cfg/summary.txt b/basis/compiler/cfg/summary.txt new file mode 100644 index 0000000000..8cbb6a5951 --- /dev/null +++ b/basis/compiler/cfg/summary.txt @@ -0,0 +1 @@ +Low-level control flow graph IR diff --git a/basis/compiler/cfg/two-operand/summary.txt b/basis/compiler/cfg/two-operand/summary.txt new file mode 100644 index 0000000000..6c9154d306 --- /dev/null +++ b/basis/compiler/cfg/two-operand/summary.txt @@ -0,0 +1 @@ +Converting three-operand instructions into two-operand form diff --git a/basis/compiler/cfg/useless-blocks/summary.txt b/basis/compiler/cfg/useless-blocks/summary.txt new file mode 100644 index 0000000000..616fae71c2 --- /dev/null +++ b/basis/compiler/cfg/useless-blocks/summary.txt @@ -0,0 +1 @@ +Eliminating unreachable basic blocks and unconditional jumps diff --git a/basis/compiler/cfg/utilities/summary.txt b/basis/compiler/cfg/utilities/summary.txt new file mode 100644 index 0000000000..7bb20b1609 --- /dev/null +++ b/basis/compiler/cfg/utilities/summary.txt @@ -0,0 +1 @@ +Utility words used by CFG optimization diff --git a/basis/compiler/cfg/value-numbering/expressions/summary.txt b/basis/compiler/cfg/value-numbering/expressions/summary.txt new file mode 100644 index 0000000000..22aacde2f4 --- /dev/null +++ b/basis/compiler/cfg/value-numbering/expressions/summary.txt @@ -0,0 +1 @@ +Value numbering expressions diff --git a/basis/compiler/cfg/value-numbering/graph/summary.txt b/basis/compiler/cfg/value-numbering/graph/summary.txt new file mode 100644 index 0000000000..f6fb58d0dc --- /dev/null +++ b/basis/compiler/cfg/value-numbering/graph/summary.txt @@ -0,0 +1 @@ +Value numbering expression graph diff --git a/basis/compiler/cfg/value-numbering/propagate/summary.txt b/basis/compiler/cfg/value-numbering/propagate/summary.txt new file mode 100644 index 0000000000..fd56a8e099 --- /dev/null +++ b/basis/compiler/cfg/value-numbering/propagate/summary.txt @@ -0,0 +1 @@ +Propagation pass to update code after value numbering diff --git a/basis/compiler/cfg/value-numbering/rewrite/summary.txt b/basis/compiler/cfg/value-numbering/rewrite/summary.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/basis/compiler/cfg/value-numbering/rewrite/summary.txt @@ -0,0 +1 @@ + diff --git a/basis/compiler/cfg/value-numbering/simplify/summary.txt b/basis/compiler/cfg/value-numbering/simplify/summary.txt new file mode 100644 index 0000000000..1027c83ce4 --- /dev/null +++ b/basis/compiler/cfg/value-numbering/simplify/summary.txt @@ -0,0 +1 @@ +Algebraic simplification of expressions diff --git a/basis/compiler/cfg/value-numbering/summary.txt b/basis/compiler/cfg/value-numbering/summary.txt new file mode 100644 index 0000000000..8d48ebe2d2 --- /dev/null +++ b/basis/compiler/cfg/value-numbering/summary.txt @@ -0,0 +1 @@ +Local value numbering for common subexpression elimination diff --git a/basis/compiler/cfg/write-barrier/summary.txt b/basis/compiler/cfg/write-barrier/summary.txt new file mode 100644 index 0000000000..453cda66f4 --- /dev/null +++ b/basis/compiler/cfg/write-barrier/summary.txt @@ -0,0 +1 @@ +Write barrier elimination diff --git a/basis/compiler/codegen/summary.txt b/basis/compiler/codegen/summary.txt new file mode 100644 index 0000000000..7a6e01c0c6 --- /dev/null +++ b/basis/compiler/codegen/summary.txt @@ -0,0 +1 @@ +Code generation from MR (machine representation) diff --git a/basis/compiler/tree/builder/summary.txt b/basis/compiler/tree/builder/summary.txt new file mode 100644 index 0000000000..de3a6f981f --- /dev/null +++ b/basis/compiler/tree/builder/summary.txt @@ -0,0 +1 @@ +Constructing high-level tree IR diff --git a/basis/compiler/tree/checker/summary.txt b/basis/compiler/tree/checker/summary.txt new file mode 100644 index 0000000000..257abfef83 --- /dev/null +++ b/basis/compiler/tree/checker/summary.txt @@ -0,0 +1 @@ +Debugging tool for checking various invariants of tree IR diff --git a/basis/compiler/tree/cleanup/summary.txt b/basis/compiler/tree/cleanup/summary.txt new file mode 100644 index 0000000000..de7b8e32a6 --- /dev/null +++ b/basis/compiler/tree/cleanup/summary.txt @@ -0,0 +1 @@ +Finalizing speculative inlining and constant folding from propagation pass diff --git a/basis/compiler/tree/combinators/summary.txt b/basis/compiler/tree/combinators/summary.txt new file mode 100644 index 0000000000..8e9114ecf4 --- /dev/null +++ b/basis/compiler/tree/combinators/summary.txt @@ -0,0 +1 @@ +Combinators for iterating over tree IR diff --git a/basis/compiler/tree/comparisons/summary.txt b/basis/compiler/tree/comparisons/summary.txt new file mode 100644 index 0000000000..9d92ac4616 --- /dev/null +++ b/basis/compiler/tree/comparisons/summary.txt @@ -0,0 +1 @@ +Utilities for working with binary comparison operations diff --git a/basis/compiler/tree/dead-code/branches/summary.txt b/basis/compiler/tree/dead-code/branches/summary.txt new file mode 100644 index 0000000000..f635191c9a --- /dev/null +++ b/basis/compiler/tree/dead-code/branches/summary.txt @@ -0,0 +1 @@ +Dead branch elimination diff --git a/basis/compiler/tree/dead-code/liveness/summary.txt b/basis/compiler/tree/dead-code/liveness/summary.txt new file mode 100644 index 0000000000..f18a3304b0 --- /dev/null +++ b/basis/compiler/tree/dead-code/liveness/summary.txt @@ -0,0 +1 @@ +Liveness analysis diff --git a/basis/compiler/tree/dead-code/recursive/summary.txt b/basis/compiler/tree/dead-code/recursive/summary.txt new file mode 100644 index 0000000000..3d51eaf5a6 --- /dev/null +++ b/basis/compiler/tree/dead-code/recursive/summary.txt @@ -0,0 +1 @@ +Dead code elimination for inline recursive combinators diff --git a/basis/compiler/tree/dead-code/simple/summary.txt b/basis/compiler/tree/dead-code/simple/summary.txt new file mode 100644 index 0000000000..8f8f091d1a --- /dev/null +++ b/basis/compiler/tree/dead-code/simple/summary.txt @@ -0,0 +1 @@ +Dead code elimination for straight-line code diff --git a/basis/compiler/tree/dead-code/summary.txt b/basis/compiler/tree/dead-code/summary.txt new file mode 100644 index 0000000000..82b391c2bf --- /dev/null +++ b/basis/compiler/tree/dead-code/summary.txt @@ -0,0 +1 @@ +Dead code elimination diff --git a/basis/compiler/tree/debugger/summary.txt b/basis/compiler/tree/debugger/summary.txt new file mode 100644 index 0000000000..c91394ddcf --- /dev/null +++ b/basis/compiler/tree/debugger/summary.txt @@ -0,0 +1 @@ +Tools for debugging high-level optimizer diff --git a/basis/compiler/tree/def-use/simplified/summary.txt b/basis/compiler/tree/def-use/simplified/summary.txt new file mode 100644 index 0000000000..f87e851dba --- /dev/null +++ b/basis/compiler/tree/def-use/simplified/summary.txt @@ -0,0 +1 @@ +Variant form of def-use chains used by modular arithmetic optimization diff --git a/basis/compiler/tree/escape-analysis/allocations/summary.txt b/basis/compiler/tree/escape-analysis/allocations/summary.txt new file mode 100644 index 0000000000..422a8a49aa --- /dev/null +++ b/basis/compiler/tree/escape-analysis/allocations/summary.txt @@ -0,0 +1 @@ +Tracking memory allocations diff --git a/basis/compiler/tree/escape-analysis/branches/summary.txt b/basis/compiler/tree/escape-analysis/branches/summary.txt new file mode 100644 index 0000000000..592797bf4d --- /dev/null +++ b/basis/compiler/tree/escape-analysis/branches/summary.txt @@ -0,0 +1 @@ +Escape analysis for conditionals diff --git a/basis/compiler/tree/escape-analysis/check/summary.txt b/basis/compiler/tree/escape-analysis/check/summary.txt new file mode 100644 index 0000000000..fe000ceb9c --- /dev/null +++ b/basis/compiler/tree/escape-analysis/check/summary.txt @@ -0,0 +1 @@ +Skipping escape analysis pass for code which does not allocate diff --git a/basis/compiler/tree/escape-analysis/nodes/summary.txt b/basis/compiler/tree/escape-analysis/nodes/summary.txt new file mode 100644 index 0000000000..f2febaf020 --- /dev/null +++ b/basis/compiler/tree/escape-analysis/nodes/summary.txt @@ -0,0 +1 @@ +Per-node dispatch for escape analysis diff --git a/basis/compiler/tree/escape-analysis/recursive/summary.txt b/basis/compiler/tree/escape-analysis/recursive/summary.txt new file mode 100644 index 0000000000..e412f5de64 --- /dev/null +++ b/basis/compiler/tree/escape-analysis/recursive/summary.txt @@ -0,0 +1 @@ +Escape analysis for inline recursive combinators diff --git a/basis/compiler/tree/escape-analysis/simple/summary.txt b/basis/compiler/tree/escape-analysis/simple/summary.txt new file mode 100644 index 0000000000..8035abc38c --- /dev/null +++ b/basis/compiler/tree/escape-analysis/simple/summary.txt @@ -0,0 +1 @@ +Escape analysis for straight-line code diff --git a/basis/compiler/tree/escape-analysis/summary.txt b/basis/compiler/tree/escape-analysis/summary.txt new file mode 100644 index 0000000000..dba0e47015 --- /dev/null +++ b/basis/compiler/tree/escape-analysis/summary.txt @@ -0,0 +1 @@ +Escape analysis for tuple unboxing diff --git a/basis/compiler/tree/finalization/summary.txt b/basis/compiler/tree/finalization/summary.txt new file mode 100644 index 0000000000..8967945bc1 --- /dev/null +++ b/basis/compiler/tree/finalization/summary.txt @@ -0,0 +1 @@ +Final pass cleans up high-level IR diff --git a/basis/compiler/tree/identities/summary.txt b/basis/compiler/tree/identities/summary.txt new file mode 100644 index 0000000000..67c9f9f82a --- /dev/null +++ b/basis/compiler/tree/identities/summary.txt @@ -0,0 +1 @@ +Applying arithmetic identities to integer code diff --git a/basis/compiler/tree/late-optimizations/summary.txt b/basis/compiler/tree/late-optimizations/summary.txt new file mode 100644 index 0000000000..9d3e2dbc1a --- /dev/null +++ b/basis/compiler/tree/late-optimizations/summary.txt @@ -0,0 +1 @@ +Utilities used by several optimization passes run in the later stages diff --git a/basis/compiler/tree/modular-arithmetic/summary.txt b/basis/compiler/tree/modular-arithmetic/summary.txt new file mode 100644 index 0000000000..88ecbe16a6 --- /dev/null +++ b/basis/compiler/tree/modular-arithmetic/summary.txt @@ -0,0 +1 @@ +Modular arithmetic optimization diff --git a/basis/compiler/tree/normalization/introductions/summary.txt b/basis/compiler/tree/normalization/introductions/summary.txt new file mode 100644 index 0000000000..baee9c818a --- /dev/null +++ b/basis/compiler/tree/normalization/introductions/summary.txt @@ -0,0 +1 @@ +Coalesce value introduction nodes to beginning of each tree leaf diff --git a/basis/compiler/tree/normalization/renaming/summary.txt b/basis/compiler/tree/normalization/renaming/summary.txt new file mode 100644 index 0000000000..0fc4f5968f --- /dev/null +++ b/basis/compiler/tree/normalization/renaming/summary.txt @@ -0,0 +1 @@ +Support for renaming values diff --git a/basis/compiler/tree/normalization/summary.txt b/basis/compiler/tree/normalization/summary.txt new file mode 100644 index 0000000000..9bb06734a1 --- /dev/null +++ b/basis/compiler/tree/normalization/summary.txt @@ -0,0 +1 @@ +Normalize IR created by high level IR builder to simplify subsequent passes diff --git a/basis/compiler/tree/optimizer/summary.txt b/basis/compiler/tree/optimizer/summary.txt new file mode 100644 index 0000000000..f00b60f8d8 --- /dev/null +++ b/basis/compiler/tree/optimizer/summary.txt @@ -0,0 +1 @@ +Top-level harness for high-level optimizer diff --git a/basis/compiler/tree/propagation/branches/summary.txt b/basis/compiler/tree/propagation/branches/summary.txt new file mode 100644 index 0000000000..c4dc6758e7 --- /dev/null +++ b/basis/compiler/tree/propagation/branches/summary.txt @@ -0,0 +1 @@ +Sparse propagation for branches diff --git a/basis/compiler/tree/propagation/constraints/summary.txt b/basis/compiler/tree/propagation/constraints/summary.txt new file mode 100644 index 0000000000..186b5c036b --- /dev/null +++ b/basis/compiler/tree/propagation/constraints/summary.txt @@ -0,0 +1 @@ +Support for predicated value info diff --git a/basis/compiler/tree/propagation/copy/summary.txt b/basis/compiler/tree/propagation/copy/summary.txt new file mode 100644 index 0000000000..2deae090c9 --- /dev/null +++ b/basis/compiler/tree/propagation/copy/summary.txt @@ -0,0 +1 @@ +Copy propagation diff --git a/basis/compiler/tree/propagation/info/summary.txt b/basis/compiler/tree/propagation/info/summary.txt new file mode 100644 index 0000000000..26faa340d5 --- /dev/null +++ b/basis/compiler/tree/propagation/info/summary.txt @@ -0,0 +1 @@ +Value info data type and operations diff --git a/basis/compiler/tree/propagation/inlining/summary.txt b/basis/compiler/tree/propagation/inlining/summary.txt new file mode 100644 index 0000000000..e4fc7152cd --- /dev/null +++ b/basis/compiler/tree/propagation/inlining/summary.txt @@ -0,0 +1 @@ +Method inlining and dispatch elimination diff --git a/basis/compiler/tree/propagation/known-words/summary.txt b/basis/compiler/tree/propagation/known-words/summary.txt new file mode 100644 index 0000000000..b53506f80d --- /dev/null +++ b/basis/compiler/tree/propagation/known-words/summary.txt @@ -0,0 +1 @@ +Propagation rules for certain known words diff --git a/basis/compiler/tree/propagation/nodes/summary.txt b/basis/compiler/tree/propagation/nodes/summary.txt new file mode 100644 index 0000000000..c4fcd37c59 --- /dev/null +++ b/basis/compiler/tree/propagation/nodes/summary.txt @@ -0,0 +1 @@ +Node dispatch for propagation pass diff --git a/basis/compiler/tree/propagation/recursive/summary.txt b/basis/compiler/tree/propagation/recursive/summary.txt new file mode 100644 index 0000000000..b0c844c747 --- /dev/null +++ b/basis/compiler/tree/propagation/recursive/summary.txt @@ -0,0 +1 @@ +Propagation for inline recursive combinators diff --git a/basis/compiler/tree/propagation/simple/summary.txt b/basis/compiler/tree/propagation/simple/summary.txt new file mode 100644 index 0000000000..25e631f1cc --- /dev/null +++ b/basis/compiler/tree/propagation/simple/summary.txt @@ -0,0 +1 @@ +Propagation for straight-line code diff --git a/basis/compiler/tree/propagation/slots/summary.txt b/basis/compiler/tree/propagation/slots/summary.txt new file mode 100644 index 0000000000..b47a4b5006 --- /dev/null +++ b/basis/compiler/tree/propagation/slots/summary.txt @@ -0,0 +1 @@ +Propagation for read-only tuple slots and array lengths diff --git a/basis/compiler/tree/recursive/summary.txt b/basis/compiler/tree/recursive/summary.txt new file mode 100644 index 0000000000..202a3d1262 --- /dev/null +++ b/basis/compiler/tree/recursive/summary.txt @@ -0,0 +1 @@ +Analysis of inline recursive combinators and loop detection diff --git a/basis/compiler/tree/tuple-unboxing/summary.txt b/basis/compiler/tree/tuple-unboxing/summary.txt new file mode 100644 index 0000000000..3f13c95637 --- /dev/null +++ b/basis/compiler/tree/tuple-unboxing/summary.txt @@ -0,0 +1 @@ +Tuple unboxing diff --git a/basis/compiler/utilities/summary.txt b/basis/compiler/utilities/summary.txt new file mode 100644 index 0000000000..be0857c646 --- /dev/null +++ b/basis/compiler/utilities/summary.txt @@ -0,0 +1 @@ +Utilities used by high-level IR optimizations diff --git a/basis/compression/lzw/summary.txt b/basis/compression/lzw/summary.txt new file mode 100644 index 0000000000..bbc8c67be9 --- /dev/null +++ b/basis/compression/lzw/summary.txt @@ -0,0 +1 @@ +LZW compression and decompression diff --git a/basis/compression/zlib/ffi/summary.txt b/basis/compression/zlib/ffi/summary.txt new file mode 100644 index 0000000000..0047076a95 --- /dev/null +++ b/basis/compression/zlib/ffi/summary.txt @@ -0,0 +1 @@ +Low-level FFI bindings to ZLIB compression library diff --git a/basis/compression/zlib/summary.txt b/basis/compression/zlib/summary.txt new file mode 100644 index 0000000000..e7caf47c49 --- /dev/null +++ b/basis/compression/zlib/summary.txt @@ -0,0 +1 @@ +Wrapper ZLIB compression library diff --git a/basis/concurrency/flags/summary.txt b/basis/concurrency/flags/summary.txt new file mode 100644 index 0000000000..f8981c85ed --- /dev/null +++ b/basis/concurrency/flags/summary.txt @@ -0,0 +1 @@ +Flags for cross-thread notification of conditions diff --git a/basis/concurrency/mailboxes/summary.txt b/basis/concurrency/mailboxes/summary.txt new file mode 100644 index 0000000000..2a228ebc82 --- /dev/null +++ b/basis/concurrency/mailboxes/summary.txt @@ -0,0 +1 @@ +Mailboxes for inter-thread message passing diff --git a/basis/constructors/summary.txt b/basis/constructors/summary.txt new file mode 100644 index 0000000000..6f135bd17a --- /dev/null +++ b/basis/constructors/summary.txt @@ -0,0 +1 @@ +Utility to simplify tuple constructors diff --git a/basis/core-foundation/arrays/summary.txt b/basis/core-foundation/arrays/summary.txt new file mode 100644 index 0000000000..5ac5a7e87f --- /dev/null +++ b/basis/core-foundation/arrays/summary.txt @@ -0,0 +1 @@ +Wrapper for CFArray data type diff --git a/basis/core-foundation/bundles/summary.txt b/basis/core-foundation/bundles/summary.txt new file mode 100644 index 0000000000..911084a182 --- /dev/null +++ b/basis/core-foundation/bundles/summary.txt @@ -0,0 +1 @@ +Wrapper for CFBundle data type diff --git a/basis/core-foundation/data/summary.txt b/basis/core-foundation/data/summary.txt new file mode 100644 index 0000000000..74b02449fa --- /dev/null +++ b/basis/core-foundation/data/summary.txt @@ -0,0 +1 @@ +Wrapper for various CF data types diff --git a/basis/core-foundation/file-descriptors/summary.txt b/basis/core-foundation/file-descriptors/summary.txt new file mode 100644 index 0000000000..ac2afab5a8 --- /dev/null +++ b/basis/core-foundation/file-descriptors/summary.txt @@ -0,0 +1 @@ +Wrapper for CFFileDescriptor diff --git a/basis/core-foundation/fsevents/summary.txt b/basis/core-foundation/fsevents/summary.txt new file mode 100644 index 0000000000..17ab7f49a0 --- /dev/null +++ b/basis/core-foundation/fsevents/summary.txt @@ -0,0 +1 @@ +Wrapper for FSEventStream diff --git a/basis/core-foundation/strings/summary.txt b/basis/core-foundation/strings/summary.txt new file mode 100644 index 0000000000..4242691164 --- /dev/null +++ b/basis/core-foundation/strings/summary.txt @@ -0,0 +1 @@ +Wrapper for CFString diff --git a/basis/core-foundation/time/summary.txt b/basis/core-foundation/time/summary.txt new file mode 100644 index 0000000000..c8f1f3bf59 --- /dev/null +++ b/basis/core-foundation/time/summary.txt @@ -0,0 +1 @@ +Wrapper for CF time-related data types diff --git a/basis/core-foundation/timers/summary.txt b/basis/core-foundation/timers/summary.txt new file mode 100644 index 0000000000..c9b95849c4 --- /dev/null +++ b/basis/core-foundation/timers/summary.txt @@ -0,0 +1 @@ +Wrapper for CFTimer diff --git a/basis/core-foundation/urls/summary.txt b/basis/core-foundation/urls/summary.txt new file mode 100644 index 0000000000..2ae52e53ba --- /dev/null +++ b/basis/core-foundation/urls/summary.txt @@ -0,0 +1 @@ +Wrapper for CFURL diff --git a/basis/cpu/ppc/linux/summary.txt b/basis/cpu/ppc/linux/summary.txt new file mode 100644 index 0000000000..a35c0374b9 --- /dev/null +++ b/basis/cpu/ppc/linux/summary.txt @@ -0,0 +1 @@ +Linux/PPC ABI support diff --git a/basis/cpu/ppc/macosx/summary.txt b/basis/cpu/ppc/macosx/summary.txt new file mode 100644 index 0000000000..52ace04cc8 --- /dev/null +++ b/basis/cpu/ppc/macosx/summary.txt @@ -0,0 +1 @@ +Mac OS X/PPC ABI support diff --git a/basis/cpu/x86/32/summary.txt b/basis/cpu/x86/32/summary.txt new file mode 100644 index 0000000000..09e329f942 --- /dev/null +++ b/basis/cpu/x86/32/summary.txt @@ -0,0 +1 @@ +32-bit x86 code generator diff --git a/basis/cpu/x86/64/unix/summary.txt b/basis/cpu/x86/64/unix/summary.txt new file mode 100644 index 0000000000..8689936077 --- /dev/null +++ b/basis/cpu/x86/64/unix/summary.txt @@ -0,0 +1 @@ +64-bit x86 Unix ABI support diff --git a/basis/cpu/x86/64/winnt/summary.txt b/basis/cpu/x86/64/winnt/summary.txt new file mode 100644 index 0000000000..7f66427cf5 --- /dev/null +++ b/basis/cpu/x86/64/winnt/summary.txt @@ -0,0 +1 @@ +64-bit x86 Windows ABI support diff --git a/basis/cpu/x86/assembler/summary.txt b/basis/cpu/x86/assembler/summary.txt new file mode 100644 index 0000000000..0861fbb17e --- /dev/null +++ b/basis/cpu/x86/assembler/summary.txt @@ -0,0 +1 @@ +x86 assembler diff --git a/basis/cpu/x86/assembler/syntax/summary.txt b/basis/cpu/x86/assembler/syntax/summary.txt new file mode 100644 index 0000000000..82e436dc22 --- /dev/null +++ b/basis/cpu/x86/assembler/syntax/summary.txt @@ -0,0 +1 @@ +Parsing words used by x86 assembler diff --git a/basis/db/errors/summary.txt b/basis/db/errors/summary.txt new file mode 100644 index 0000000000..1cd102173f --- /dev/null +++ b/basis/db/errors/summary.txt @@ -0,0 +1 @@ +Errors thrown by database library diff --git a/basis/db/pools/summary.txt b/basis/db/pools/summary.txt new file mode 100644 index 0000000000..d1f51c47e6 --- /dev/null +++ b/basis/db/pools/summary.txt @@ -0,0 +1 @@ +Database connection pooling diff --git a/basis/db/postgresql/summary.txt b/basis/db/postgresql/summary.txt new file mode 100644 index 0000000000..f0e494623e --- /dev/null +++ b/basis/db/postgresql/summary.txt @@ -0,0 +1 @@ +PostgreSQL database connector diff --git a/basis/db/queries/summary.txt b/basis/db/queries/summary.txt new file mode 100644 index 0000000000..b5f395b183 --- /dev/null +++ b/basis/db/queries/summary.txt @@ -0,0 +1 @@ +Database queries diff --git a/basis/db/sqlite/summary.txt b/basis/db/sqlite/summary.txt new file mode 100644 index 0000000000..f5997a3c69 --- /dev/null +++ b/basis/db/sqlite/summary.txt @@ -0,0 +1 @@ +SQLite database connector diff --git a/basis/db/tuples/summary.txt b/basis/db/tuples/summary.txt new file mode 100644 index 0000000000..3ffaa8acac --- /dev/null +++ b/basis/db/tuples/summary.txt @@ -0,0 +1 @@ +O/R mapper diff --git a/basis/db/types/summary.txt b/basis/db/types/summary.txt new file mode 100644 index 0000000000..c474fe6460 --- /dev/null +++ b/basis/db/types/summary.txt @@ -0,0 +1 @@ +SQL data type support diff --git a/basis/delegate/protocols/summary.txt b/basis/delegate/protocols/summary.txt new file mode 100644 index 0000000000..3a74997468 --- /dev/null +++ b/basis/delegate/protocols/summary.txt @@ -0,0 +1 @@ +Various core protocols for use with delegation diff --git a/basis/endian/summary.txt b/basis/endian/summary.txt new file mode 100644 index 0000000000..e5380c1709 --- /dev/null +++ b/basis/endian/summary.txt @@ -0,0 +1 @@ +Utilities for working with big-endian and little-endian data diff --git a/basis/environment/unix/macosx/summary.txt b/basis/environment/unix/macosx/summary.txt new file mode 100644 index 0000000000..d7f2162a5e --- /dev/null +++ b/basis/environment/unix/macosx/summary.txt @@ -0,0 +1 @@ +Mac OS X environment variables implementation diff --git a/basis/environment/unix/summary.txt b/basis/environment/unix/summary.txt new file mode 100644 index 0000000000..cc4d5ded5b --- /dev/null +++ b/basis/environment/unix/summary.txt @@ -0,0 +1 @@ +Unix environment variables implementation diff --git a/basis/environment/winnt/summary.txt b/basis/environment/winnt/summary.txt new file mode 100644 index 0000000000..905970977f --- /dev/null +++ b/basis/environment/winnt/summary.txt @@ -0,0 +1 @@ +Windows environment variables implementation diff --git a/basis/farkup/tags.txt b/basis/farkup/tags.txt index 8e27be7d61..5df72b3467 100644 --- a/basis/farkup/tags.txt +++ b/basis/farkup/tags.txt @@ -1 +1,2 @@ text +web diff --git a/basis/ftp/client/summary.txt b/basis/ftp/client/summary.txt new file mode 100644 index 0000000000..17a546eea3 --- /dev/null +++ b/basis/ftp/client/summary.txt @@ -0,0 +1 @@ +FTP client diff --git a/basis/ftp/server/summary.txt b/basis/ftp/server/summary.txt new file mode 100644 index 0000000000..e839816e20 --- /dev/null +++ b/basis/ftp/server/summary.txt @@ -0,0 +1 @@ +FTP server diff --git a/basis/ftp/summary.txt b/basis/ftp/summary.txt new file mode 100644 index 0000000000..a1c6bf62e2 --- /dev/null +++ b/basis/ftp/summary.txt @@ -0,0 +1 @@ +Common code shared by FTP client and server diff --git a/basis/help/html/summary.txt b/basis/help/html/summary.txt new file mode 100644 index 0000000000..913a9a5766 --- /dev/null +++ b/basis/help/html/summary.txt @@ -0,0 +1 @@ +Converting help to HTML diff --git a/basis/html/summary.txt b/basis/html/summary.txt new file mode 100644 index 0000000000..6fb5a3ca8d --- /dev/null +++ b/basis/html/summary.txt @@ -0,0 +1 @@ +HTML utilities diff --git a/basis/html/templates/chloe/compiler/summary.txt b/basis/html/templates/chloe/compiler/summary.txt new file mode 100644 index 0000000000..c77d722739 --- /dev/null +++ b/basis/html/templates/chloe/compiler/summary.txt @@ -0,0 +1 @@ +Compiling Chloe templates to Factor quotations diff --git a/basis/http/server/dispatchers/summary.txt b/basis/http/server/dispatchers/summary.txt new file mode 100644 index 0000000000..b3a5b41233 --- /dev/null +++ b/basis/http/server/dispatchers/summary.txt @@ -0,0 +1 @@ +Dispatcher responder for dispaching requests to a set of child responders diff --git a/basis/http/server/filters/summary.txt b/basis/http/server/filters/summary.txt new file mode 100644 index 0000000000..dc07e1a32d --- /dev/null +++ b/basis/http/server/filters/summary.txt @@ -0,0 +1 @@ +Filter responders which wrap an underlying responder diff --git a/basis/http/server/redirection/summary.txt b/basis/http/server/redirection/summary.txt new file mode 100644 index 0000000000..1e5f38e8fe --- /dev/null +++ b/basis/http/server/redirection/summary.txt @@ -0,0 +1 @@ +Redirection responses which redirect the client to another URL diff --git a/basis/http/server/remapping/summary.txt b/basis/http/server/remapping/summary.txt new file mode 100644 index 0000000000..4515eeebe8 --- /dev/null +++ b/basis/http/server/remapping/summary.txt @@ -0,0 +1 @@ +Support for port remapping diff --git a/basis/http/server/responses/summary.txt b/basis/http/server/responses/summary.txt new file mode 100644 index 0000000000..091d5869e4 --- /dev/null +++ b/basis/http/server/responses/summary.txt @@ -0,0 +1 @@ +Constructing various simple responses diff --git a/basis/http/server/static/summary.txt b/basis/http/server/static/summary.txt new file mode 100644 index 0000000000..3aa2f3783c --- /dev/null +++ b/basis/http/server/static/summary.txt @@ -0,0 +1 @@ +Serving static files diff --git a/basis/images/bitmap/summary.txt b/basis/images/bitmap/summary.txt new file mode 100644 index 0000000000..2411e584db --- /dev/null +++ b/basis/images/bitmap/summary.txt @@ -0,0 +1 @@ +Windows BMP image loader diff --git a/basis/images/loader/summary.txt b/basis/images/loader/summary.txt new file mode 100644 index 0000000000..69d35c4597 --- /dev/null +++ b/basis/images/loader/summary.txt @@ -0,0 +1 @@ +Loading bitmap images from files diff --git a/basis/images/summary.txt b/basis/images/summary.txt new file mode 100644 index 0000000000..3c1ddbb47d --- /dev/null +++ b/basis/images/summary.txt @@ -0,0 +1 @@ +Bitmap images diff --git a/basis/images/tiff/summary.txt b/basis/images/tiff/summary.txt new file mode 100644 index 0000000000..ff340daf1b --- /dev/null +++ b/basis/images/tiff/summary.txt @@ -0,0 +1 @@ +TIFF image loader diff --git a/basis/interpolate/summary.txt b/basis/interpolate/summary.txt new file mode 100644 index 0000000000..b9cf1b7724 --- /dev/null +++ b/basis/interpolate/summary.txt @@ -0,0 +1 @@ +Interpolating variable values into strings diff --git a/basis/io/backend/unix/multiplexers/epoll/summary.txt b/basis/io/backend/unix/multiplexers/epoll/summary.txt new file mode 100644 index 0000000000..74c9b80761 --- /dev/null +++ b/basis/io/backend/unix/multiplexers/epoll/summary.txt @@ -0,0 +1 @@ +Linux epoll multiplexer diff --git a/basis/io/backend/unix/multiplexers/kqueue/summary.txt b/basis/io/backend/unix/multiplexers/kqueue/summary.txt new file mode 100644 index 0000000000..74f9ce6edd --- /dev/null +++ b/basis/io/backend/unix/multiplexers/kqueue/summary.txt @@ -0,0 +1 @@ +BSD and Mac OS X kqueue multiplexer diff --git a/basis/io/backend/unix/multiplexers/run-loop/summary.txt b/basis/io/backend/unix/multiplexers/run-loop/summary.txt new file mode 100644 index 0000000000..559de8a088 --- /dev/null +++ b/basis/io/backend/unix/multiplexers/run-loop/summary.txt @@ -0,0 +1 @@ +Mac OS X CFRunLoop multiplexer diff --git a/basis/io/backend/unix/multiplexers/select/summary.txt b/basis/io/backend/unix/multiplexers/select/summary.txt new file mode 100644 index 0000000000..46360fd234 --- /dev/null +++ b/basis/io/backend/unix/multiplexers/select/summary.txt @@ -0,0 +1 @@ +Generic Unix select multiplexer diff --git a/basis/io/backend/unix/multiplexers/summary.txt b/basis/io/backend/unix/multiplexers/summary.txt new file mode 100644 index 0000000000..36ac79d083 --- /dev/null +++ b/basis/io/backend/unix/multiplexers/summary.txt @@ -0,0 +1 @@ +Generic protocol for Unix I/O multiplexers diff --git a/basis/io/directories/search/summary.txt b/basis/io/directories/search/summary.txt new file mode 100644 index 0000000000..a9df0baf4c --- /dev/null +++ b/basis/io/directories/search/summary.txt @@ -0,0 +1 @@ +Recursive directory traversal diff --git a/basis/io/encodings/chinese/summary.txt b/basis/io/encodings/chinese/summary.txt new file mode 100644 index 0000000000..da296942b0 --- /dev/null +++ b/basis/io/encodings/chinese/summary.txt @@ -0,0 +1 @@ +GB18030 encoding for Chinese text diff --git a/basis/io/encodings/korean/tags.txt b/basis/io/encodings/korean/tags.txt deleted file mode 100644 index 8e27be7d61..0000000000 --- a/basis/io/encodings/korean/tags.txt +++ /dev/null @@ -1 +0,0 @@ -text diff --git a/basis/io/encodings/strict/tags.txt b/basis/io/encodings/strict/tags.txt deleted file mode 100644 index 8e27be7d61..0000000000 --- a/basis/io/encodings/strict/tags.txt +++ /dev/null @@ -1 +0,0 @@ -text diff --git a/basis/io/encodings/string/summary.txt b/basis/io/encodings/string/summary.txt index 59b8927dea..da2f7957b2 100644 --- a/basis/io/encodings/string/summary.txt +++ b/basis/io/encodings/string/summary.txt @@ -1 +1 @@ -Encoding and decoding strings +Converting strings to byte arrays and vice versa diff --git a/basis/io/encodings/string/tags.factor b/basis/io/encodings/string/tags.factor deleted file mode 100644 index 8e27be7d61..0000000000 --- a/basis/io/encodings/string/tags.factor +++ /dev/null @@ -1 +0,0 @@ -text diff --git a/basis/io/encodings/8-bit/tags.txt b/basis/io/encodings/string/tags.txt similarity index 100% rename from basis/io/encodings/8-bit/tags.txt rename to basis/io/encodings/string/tags.txt diff --git a/basis/io/encodings/utf16/tags.txt b/basis/io/encodings/utf16/tags.txt deleted file mode 100644 index 8e27be7d61..0000000000 --- a/basis/io/encodings/utf16/tags.txt +++ /dev/null @@ -1 +0,0 @@ -text diff --git a/basis/io/encodings/utf16n/summary.txt b/basis/io/encodings/utf16n/summary.txt new file mode 100644 index 0000000000..4d94d1bbdb --- /dev/null +++ b/basis/io/encodings/utf16n/summary.txt @@ -0,0 +1 @@ +UTF16 encoding with native byte order diff --git a/basis/io/encodings/utf32/tags.txt b/basis/io/encodings/utf32/tags.txt deleted file mode 100644 index 8e27be7d61..0000000000 --- a/basis/io/encodings/utf32/tags.txt +++ /dev/null @@ -1 +0,0 @@ -text diff --git a/basis/io/files/types/summary.txt b/basis/io/files/types/summary.txt new file mode 100644 index 0000000000..1e0118aa37 --- /dev/null +++ b/basis/io/files/types/summary.txt @@ -0,0 +1 @@ +File types for file-info and directory listing diff --git a/basis/io/files/unique/summary.txt b/basis/io/files/unique/summary.txt new file mode 100644 index 0000000000..08584aae17 --- /dev/null +++ b/basis/io/files/unique/summary.txt @@ -0,0 +1 @@ +Temporary files with unique names diff --git a/basis/io/pipes/summary.txt b/basis/io/pipes/summary.txt new file mode 100644 index 0000000000..3a1f8c7d21 --- /dev/null +++ b/basis/io/pipes/summary.txt @@ -0,0 +1 @@ +Pipes for inter-process communication diff --git a/basis/io/streams/byte-array/summary.txt b/basis/io/streams/byte-array/summary.txt new file mode 100644 index 0000000000..2f0b772872 --- /dev/null +++ b/basis/io/streams/byte-array/summary.txt @@ -0,0 +1 @@ +Streams for reading and writing bytes in a byte array diff --git a/basis/io/streams/limited/summary.txt b/basis/io/streams/limited/summary.txt new file mode 100644 index 0000000000..386143403f --- /dev/null +++ b/basis/io/streams/limited/summary.txt @@ -0,0 +1 @@ +Streams with a maximum length cutoff diff --git a/basis/io/streams/memory/summary.txt b/basis/io/streams/memory/summary.txt new file mode 100644 index 0000000000..b0ecbf6d5b --- /dev/null +++ b/basis/io/streams/memory/summary.txt @@ -0,0 +1 @@ +Streams for reading data directly from memory diff --git a/basis/lcs/diff2html/summary.txt b/basis/lcs/diff2html/summary.txt new file mode 100644 index 0000000000..066e78a26e --- /dev/null +++ b/basis/lcs/diff2html/summary.txt @@ -0,0 +1 @@ +Pretty HTML rendering of diffs diff --git a/basis/lists/lazy/examples/summary.txt b/basis/lists/lazy/examples/summary.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/basis/lists/lazy/examples/summary.txt @@ -0,0 +1 @@ + diff --git a/basis/locals/backend/summary.txt b/basis/locals/backend/summary.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/basis/locals/backend/summary.txt @@ -0,0 +1 @@ + diff --git a/basis/locals/definitions/summary.txt b/basis/locals/definitions/summary.txt new file mode 100644 index 0000000000..e08d7bf0a4 --- /dev/null +++ b/basis/locals/definitions/summary.txt @@ -0,0 +1 @@ +Definition protocol implementation for lambda words diff --git a/basis/locals/errors/summary.txt b/basis/locals/errors/summary.txt new file mode 100644 index 0000000000..a5d40df872 --- /dev/null +++ b/basis/locals/errors/summary.txt @@ -0,0 +1 @@ +Errors thrown by locals implementation diff --git a/basis/locals/fry/summary.txt b/basis/locals/fry/summary.txt new file mode 100644 index 0000000000..2173b22649 --- /dev/null +++ b/basis/locals/fry/summary.txt @@ -0,0 +1 @@ +Support for mixing fry and locals diff --git a/basis/locals/macros/summary.txt b/basis/locals/macros/summary.txt new file mode 100644 index 0000000000..92b4c4c775 --- /dev/null +++ b/basis/locals/macros/summary.txt @@ -0,0 +1 @@ +Support for macro expansion inside lambdas diff --git a/basis/locals/parser/summary.txt b/basis/locals/parser/summary.txt new file mode 100644 index 0000000000..095b0e22e7 --- /dev/null +++ b/basis/locals/parser/summary.txt @@ -0,0 +1 @@ +Utility words used by locals parsing words diff --git a/basis/locals/prettyprint/summary.txt b/basis/locals/prettyprint/summary.txt new file mode 100644 index 0000000000..ecfc10483c --- /dev/null +++ b/basis/locals/prettyprint/summary.txt @@ -0,0 +1 @@ +Prettyprinting of lambdas diff --git a/basis/locals/rewrite/closures/summary.txt b/basis/locals/rewrite/closures/summary.txt new file mode 100644 index 0000000000..d0a28aad4f --- /dev/null +++ b/basis/locals/rewrite/closures/summary.txt @@ -0,0 +1 @@ +Rewriting closures to not have any free variables diff --git a/basis/locals/rewrite/point-free/summary.txt b/basis/locals/rewrite/point-free/summary.txt new file mode 100644 index 0000000000..40ab193d72 --- /dev/null +++ b/basis/locals/rewrite/point-free/summary.txt @@ -0,0 +1 @@ +Rewriting applicative code to use the retain stack instead of named values diff --git a/basis/locals/rewrite/sugar/summary.txt b/basis/locals/rewrite/sugar/summary.txt new file mode 100644 index 0000000000..485bb844e4 --- /dev/null +++ b/basis/locals/rewrite/sugar/summary.txt @@ -0,0 +1 @@ +Desugaring locals in literals and let binding diff --git a/basis/locals/types/summary.txt b/basis/locals/types/summary.txt new file mode 100644 index 0000000000..be667d0ffb --- /dev/null +++ b/basis/locals/types/summary.txt @@ -0,0 +1 @@ +Data types used by locals implementation diff --git a/basis/macros/expander/summary.txt b/basis/macros/expander/summary.txt new file mode 100644 index 0000000000..0fd81ed0cf --- /dev/null +++ b/basis/macros/expander/summary.txt @@ -0,0 +1 @@ +Macro expansion utility, used for debugging and in the locals implementation diff --git a/basis/math/partial-dispatch/summary.txt b/basis/math/partial-dispatch/summary.txt new file mode 100644 index 0000000000..a1bc1a16b1 --- /dev/null +++ b/basis/math/partial-dispatch/summary.txt @@ -0,0 +1 @@ +Partially-dispatched math operations, used by the compiler diff --git a/basis/math/rectangles/positioning/positioning-docs.factor b/basis/math/rectangles/positioning/positioning-docs.factor new file mode 100644 index 0000000000..e69de29bb2 diff --git a/basis/mime/multipart/summary.txt b/basis/mime/multipart/summary.txt new file mode 100644 index 0000000000..ab08c83021 --- /dev/null +++ b/basis/mime/multipart/summary.txt @@ -0,0 +1 @@ +MIME multipart parser diff --git a/basis/mime/types/summary.txt b/basis/mime/types/summary.txt new file mode 100644 index 0000000000..7ead547277 --- /dev/null +++ b/basis/mime/types/summary.txt @@ -0,0 +1 @@ +MIME types database diff --git a/basis/models/compose/summary.txt b/basis/models/compose/summary.txt new file mode 100644 index 0000000000..962b30ad90 --- /dev/null +++ b/basis/models/compose/summary.txt @@ -0,0 +1 @@ +Composed models combine the values of a sequence of models into one diff --git a/basis/models/delay/summary.txt b/basis/models/delay/summary.txt new file mode 100644 index 0000000000..46fa0d6a75 --- /dev/null +++ b/basis/models/delay/summary.txt @@ -0,0 +1 @@ +Delay models update a fixed period of time after the underlying model changes diff --git a/basis/models/filter/summary.txt b/basis/models/filter/summary.txt new file mode 100644 index 0000000000..a8267ac7ec --- /dev/null +++ b/basis/models/filter/summary.txt @@ -0,0 +1 @@ +Filter models apply a quotation to the value of an underlying model diff --git a/basis/models/history/summary.txt b/basis/models/history/summary.txt new file mode 100644 index 0000000000..76f7b88159 --- /dev/null +++ b/basis/models/history/summary.txt @@ -0,0 +1 @@ +History models remember prior values diff --git a/basis/models/mapping/summary.txt b/basis/models/mapping/summary.txt new file mode 100644 index 0000000000..5b1562124b --- /dev/null +++ b/basis/models/mapping/summary.txt @@ -0,0 +1 @@ +Mapping models combine an assoc of models into a single model diff --git a/basis/models/range/summary.txt b/basis/models/range/summary.txt new file mode 100644 index 0000000000..b00df47fe1 --- /dev/null +++ b/basis/models/range/summary.txt @@ -0,0 +1 @@ +Range models bound their values diff --git a/basis/nibble-arrays/summary.txt b/basis/nibble-arrays/summary.txt new file mode 100644 index 0000000000..ae8abe6b2e --- /dev/null +++ b/basis/nibble-arrays/summary.txt @@ -0,0 +1 @@ +Space-efficient arrays of 4-bit values diff --git a/basis/openssl/libcrypto/summary.txt b/basis/openssl/libcrypto/summary.txt new file mode 100644 index 0000000000..f140b3cbea --- /dev/null +++ b/basis/openssl/libcrypto/summary.txt @@ -0,0 +1 @@ +Low-level FFI binding to libcrypto diff --git a/basis/openssl/libssl/summary.txt b/basis/openssl/libssl/summary.txt new file mode 100644 index 0000000000..e823bb65b5 --- /dev/null +++ b/basis/openssl/libssl/summary.txt @@ -0,0 +1 @@ +Low-level FFI binding to libssl diff --git a/basis/pack/summary.txt b/basis/pack/summary.txt new file mode 100644 index 0000000000..ae884f60c5 --- /dev/null +++ b/basis/pack/summary.txt @@ -0,0 +1 @@ +Packing and unpacking binary data diff --git a/basis/peg/ebnf/summary.txt b/basis/peg/ebnf/summary.txt index 473cf4f3a2..76ad8b1b1e 100644 --- a/basis/peg/ebnf/summary.txt +++ b/basis/peg/ebnf/summary.txt @@ -1 +1 @@ -Grammar for parsing EBNF +Declarative EBNF language for writing PEG parsers diff --git a/basis/peg/ebnf/tags.txt b/basis/peg/ebnf/tags.txt index 9da56880c0..5af5dba748 100644 --- a/basis/peg/ebnf/tags.txt +++ b/basis/peg/ebnf/tags.txt @@ -1 +1,2 @@ +text parsing diff --git a/basis/peg/parsers/summary.txt b/basis/peg/parsers/summary.txt new file mode 100644 index 0000000000..a87ccc97b4 --- /dev/null +++ b/basis/peg/parsers/summary.txt @@ -0,0 +1 @@ +Additional PEG parsers diff --git a/basis/io/encodings/ascii/tags.txt b/basis/peg/parsers/tags.txt similarity index 100% rename from basis/io/encodings/ascii/tags.txt rename to basis/peg/parsers/tags.txt diff --git a/basis/peg/summary.txt b/basis/peg/summary.txt index 324a544036..498b4e0bb0 100644 --- a/basis/peg/summary.txt +++ b/basis/peg/summary.txt @@ -1 +1 @@ -Parsing Expression Grammar and Packrat Parser +Parsing expression grammar and packrat parser diff --git a/basis/prettyprint/custom/summary.txt b/basis/prettyprint/custom/summary.txt new file mode 100644 index 0000000000..a9cd58aaf7 --- /dev/null +++ b/basis/prettyprint/custom/summary.txt @@ -0,0 +1 @@ +Protocol for extending the prettyprinter on custom data types diff --git a/basis/random/dummy/summary.txt b/basis/random/dummy/summary.txt new file mode 100644 index 0000000000..706f2c9e7b --- /dev/null +++ b/basis/random/dummy/summary.txt @@ -0,0 +1 @@ +Dummy RNG for testing diff --git a/basis/random/unix/summary.txt b/basis/random/unix/summary.txt new file mode 100644 index 0000000000..c8762e21e5 --- /dev/null +++ b/basis/random/unix/summary.txt @@ -0,0 +1 @@ +Native Unix RNG diff --git a/basis/random/windows/summary.txt b/basis/random/windows/summary.txt new file mode 100644 index 0000000000..0554a506e0 --- /dev/null +++ b/basis/random/windows/summary.txt @@ -0,0 +1 @@ +Native Windows RNG diff --git a/basis/smtp/server/summary.txt b/basis/smtp/server/summary.txt new file mode 100644 index 0000000000..1bcabc1835 --- /dev/null +++ b/basis/smtp/server/summary.txt @@ -0,0 +1 @@ +SMTP server for testing purposes diff --git a/basis/sorting/slots/summary.txt b/basis/sorting/slots/summary.txt new file mode 100644 index 0000000000..240a4ff714 --- /dev/null +++ b/basis/sorting/slots/summary.txt @@ -0,0 +1 @@ +Sorting by tuple slots diff --git a/basis/specialized-arrays/direct/functor/summary.txt b/basis/specialized-arrays/direct/functor/summary.txt new file mode 100644 index 0000000000..79df0a577c --- /dev/null +++ b/basis/specialized-arrays/direct/functor/summary.txt @@ -0,0 +1 @@ +Code generation for direct specialized arrays diff --git a/basis/specialized-arrays/functor/summary.txt b/basis/specialized-arrays/functor/summary.txt new file mode 100644 index 0000000000..77cb2d4d89 --- /dev/null +++ b/basis/specialized-arrays/functor/summary.txt @@ -0,0 +1 @@ +Code generation for specialized arrays diff --git a/basis/specialized-vectors/functor/summary.txt b/basis/specialized-vectors/functor/summary.txt new file mode 100644 index 0000000000..dc26fa6d44 --- /dev/null +++ b/basis/specialized-vectors/functor/summary.txt @@ -0,0 +1 @@ +Code generation for specialized vectors diff --git a/basis/stack-checker/alien/summary.txt b/basis/stack-checker/alien/summary.txt new file mode 100644 index 0000000000..18cf21cd5b --- /dev/null +++ b/basis/stack-checker/alien/summary.txt @@ -0,0 +1 @@ +Stack effect inference for alien calls diff --git a/basis/stack-checker/branches/summary.txt b/basis/stack-checker/branches/summary.txt new file mode 100644 index 0000000000..c63c8d052a --- /dev/null +++ b/basis/stack-checker/branches/summary.txt @@ -0,0 +1 @@ +Stack effect inference for conditionals diff --git a/basis/stack-checker/inlining/summary.txt b/basis/stack-checker/inlining/summary.txt new file mode 100644 index 0000000000..422401d354 --- /dev/null +++ b/basis/stack-checker/inlining/summary.txt @@ -0,0 +1 @@ +Stack effect inference for inline and inline recursive words diff --git a/basis/stack-checker/recursive-state/summary.txt b/basis/stack-checker/recursive-state/summary.txt new file mode 100644 index 0000000000..52f5a14fc5 --- /dev/null +++ b/basis/stack-checker/recursive-state/summary.txt @@ -0,0 +1 @@ +Tracking word nesting during stack effect inference diff --git a/basis/stack-checker/recursive-state/tree/summary.txt b/basis/stack-checker/recursive-state/tree/summary.txt new file mode 100644 index 0000000000..ca96da119a --- /dev/null +++ b/basis/stack-checker/recursive-state/tree/summary.txt @@ -0,0 +1 @@ +Simple binary tree diff --git a/basis/stack-checker/values/summary.txt b/basis/stack-checker/values/summary.txt new file mode 100644 index 0000000000..5b57e95f5c --- /dev/null +++ b/basis/stack-checker/values/summary.txt @@ -0,0 +1 @@ +Abstract stack checker values diff --git a/basis/stack-checker/visitor/dummy/summary.txt b/basis/stack-checker/visitor/dummy/summary.txt new file mode 100644 index 0000000000..b4340ea4d2 --- /dev/null +++ b/basis/stack-checker/visitor/dummy/summary.txt @@ -0,0 +1 @@ +Dummy implementation of node visitor protocol diff --git a/basis/stack-checker/visitor/summary.txt b/basis/stack-checker/visitor/summary.txt new file mode 100644 index 0000000000..29a3c8a41f --- /dev/null +++ b/basis/stack-checker/visitor/summary.txt @@ -0,0 +1 @@ +Node visitor protocol diff --git a/basis/tools/deploy/test/11/11-tests.factor b/basis/tools/deploy/test/11/11-tests.factor new file mode 100644 index 0000000000..2eb7009bf9 --- /dev/null +++ b/basis/tools/deploy/test/11/11-tests.factor @@ -0,0 +1,4 @@ +! Copyright (C) 2009 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: tools.test tools.deploy.test.11 ; +IN: tools.deploy.test.11.tests diff --git a/basis/tools/deploy/test/11/11.factor b/basis/tools/deploy/test/11/11.factor new file mode 100644 index 0000000000..b4f8622627 --- /dev/null +++ b/basis/tools/deploy/test/11/11.factor @@ -0,0 +1,8 @@ +! Copyright (C) 2009 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: eval ; +IN: tools.deploy.test.11 + +: foo ( -- ) "USING: math prettyprint ; 2 2 + ." eval ; + +MAIN: foo \ No newline at end of file diff --git a/basis/tools/deploy/test/11/authors.txt b/basis/tools/deploy/test/11/authors.txt new file mode 100644 index 0000000000..d4f5d6b3ae --- /dev/null +++ b/basis/tools/deploy/test/11/authors.txt @@ -0,0 +1 @@ +Slava Pestov \ No newline at end of file diff --git a/basis/tools/deploy/test/11/deploy.factor b/basis/tools/deploy/test/11/deploy.factor new file mode 100644 index 0000000000..42f707b332 --- /dev/null +++ b/basis/tools/deploy/test/11/deploy.factor @@ -0,0 +1,15 @@ +USING: tools.deploy.config ; +H{ + { deploy-reflection 5 } + { deploy-word-props? f } + { deploy-c-types? f } + { deploy-name "tools.deploy.test.11" } + { "stop-after-last-window?" t } + { deploy-word-defs? f } + { deploy-math? f } + { deploy-unicode? f } + { deploy-threads? f } + { deploy-compiler? f } + { deploy-io 2 } + { deploy-ui? f } +} diff --git a/basis/tools/files/summary.txt b/basis/tools/files/summary.txt new file mode 100644 index 0000000000..ec49d5bc30 --- /dev/null +++ b/basis/tools/files/summary.txt @@ -0,0 +1 @@ +File listing and disk usage tools diff --git a/basis/tools/scaffold/summary.txt b/basis/tools/scaffold/summary.txt new file mode 100644 index 0000000000..9355d1426e --- /dev/null +++ b/basis/tools/scaffold/summary.txt @@ -0,0 +1 @@ +Tool to create the scaffolding for new vocabularies diff --git a/basis/tools/threads/summary.txt b/basis/tools/threads/summary.txt new file mode 100644 index 0000000000..3a94df1cc9 --- /dev/null +++ b/basis/tools/threads/summary.txt @@ -0,0 +1 @@ +Listing running threads diff --git a/basis/tools/vocabs/browser/summary.txt b/basis/tools/vocabs/browser/summary.txt new file mode 100644 index 0000000000..28b4850ed8 --- /dev/null +++ b/basis/tools/vocabs/browser/summary.txt @@ -0,0 +1 @@ +Browsing vocabularies diff --git a/basis/tools/vocabs/summary.txt b/basis/tools/vocabs/summary.txt new file mode 100644 index 0000000000..1ae5f43784 --- /dev/null +++ b/basis/tools/vocabs/summary.txt @@ -0,0 +1 @@ +Reloading vocabularies and cross-referencing vocabularies diff --git a/basis/ui/gadgets/canvas/summary.txt b/basis/ui/gadgets/canvas/summary.txt new file mode 100644 index 0000000000..70b35e6eed --- /dev/null +++ b/basis/ui/gadgets/canvas/summary.txt @@ -0,0 +1 @@ +Canvas gadget for caching rendering to a display list diff --git a/basis/ui/tools/deploy/summary.txt b/basis/ui/tools/deploy/summary.txt new file mode 100644 index 0000000000..c6f49801d7 --- /dev/null +++ b/basis/ui/tools/deploy/summary.txt @@ -0,0 +1 @@ +Graphical front-end for deploy tool diff --git a/basis/ui/windows/summary.txt b/basis/ui/windows/summary.txt new file mode 100644 index 0000000000..9a0a894850 --- /dev/null +++ b/basis/ui/windows/summary.txt @@ -0,0 +1 @@ +Windows UI backend diff --git a/basis/ui/x11/summary.txt b/basis/ui/x11/summary.txt new file mode 100644 index 0000000000..046c83ad89 --- /dev/null +++ b/basis/ui/x11/summary.txt @@ -0,0 +1 @@ +X11 UI backend diff --git a/basis/unicode/breaks/summary.txt b/basis/unicode/breaks/summary.txt new file mode 100644 index 0000000000..4f73d98063 --- /dev/null +++ b/basis/unicode/breaks/summary.txt @@ -0,0 +1 @@ +Unicode grapheme and word breaking diff --git a/basis/unicode/case/summary.txt b/basis/unicode/case/summary.txt new file mode 100644 index 0000000000..a88f3d4a98 --- /dev/null +++ b/basis/unicode/case/summary.txt @@ -0,0 +1 @@ +Unicode case conversion diff --git a/basis/unicode/categories/summary.txt b/basis/unicode/categories/summary.txt new file mode 100644 index 0000000000..7efad41e84 --- /dev/null +++ b/basis/unicode/categories/summary.txt @@ -0,0 +1 @@ +Unicode character categories diff --git a/basis/unicode/collation/summary.txt b/basis/unicode/collation/summary.txt new file mode 100644 index 0000000000..0b855e1fc8 --- /dev/null +++ b/basis/unicode/collation/summary.txt @@ -0,0 +1 @@ +Unicode string comparison and sorting (collation) diff --git a/basis/io/encodings/binary/tags.txt b/basis/unicode/collation/tags.txt similarity index 100% rename from basis/io/encodings/binary/tags.txt rename to basis/unicode/collation/tags.txt diff --git a/basis/unicode/data/summary.txt b/basis/unicode/data/summary.txt new file mode 100644 index 0000000000..c956b233f0 --- /dev/null +++ b/basis/unicode/data/summary.txt @@ -0,0 +1 @@ +Parsing Unicode data files diff --git a/basis/unicode/normalize/summary.txt b/basis/unicode/normalize/summary.txt new file mode 100644 index 0000000000..bd8b1669c4 --- /dev/null +++ b/basis/unicode/normalize/summary.txt @@ -0,0 +1 @@ +Unicode string normalization diff --git a/basis/io/encodings/japanese/tags.txt b/basis/unicode/script/tags.txt similarity index 100% rename from basis/io/encodings/japanese/tags.txt rename to basis/unicode/script/tags.txt diff --git a/basis/unicode/summary.txt b/basis/unicode/summary.txt index ece1e61b5f..8bd1149524 100644 --- a/basis/unicode/summary.txt +++ b/basis/unicode/summary.txt @@ -1 +1 @@ -Unicode 5.0 support +Unicode 5.1 support diff --git a/basis/unicode/syntax/summary.txt b/basis/unicode/syntax/summary.txt new file mode 100644 index 0000000000..651d51c34c --- /dev/null +++ b/basis/unicode/syntax/summary.txt @@ -0,0 +1 @@ +Parsing words used by Unicode implementation diff --git a/basis/unix/groups/summary.txt b/basis/unix/groups/summary.txt new file mode 100644 index 0000000000..f782bdd791 --- /dev/null +++ b/basis/unix/groups/summary.txt @@ -0,0 +1 @@ +Working with Unix user groups diff --git a/basis/unix/users/summary.txt b/basis/unix/users/summary.txt new file mode 100644 index 0000000000..8c1aa0dd8f --- /dev/null +++ b/basis/unix/users/summary.txt @@ -0,0 +1 @@ +Working with Unix users diff --git a/basis/unrolled-lists/summary.txt b/basis/unrolled-lists/summary.txt new file mode 100644 index 0000000000..c9014d1ba2 --- /dev/null +++ b/basis/unrolled-lists/summary.txt @@ -0,0 +1 @@ +Deque implementation with constant-time insertion and removal at either end, and better space efficiency than a double-linked list diff --git a/basis/urls/secure/summary.txt b/basis/urls/secure/summary.txt new file mode 100644 index 0000000000..31692c0596 --- /dev/null +++ b/basis/urls/secure/summary.txt @@ -0,0 +1 @@ +Support for https:// URLs diff --git a/basis/vlists/summary.txt b/basis/vlists/summary.txt new file mode 100644 index 0000000000..4d6e6b2d3b --- /dev/null +++ b/basis/vlists/summary.txt @@ -0,0 +1 @@ +Persistent sequence implementation optimizing the case where there is no sharing diff --git a/basis/wrap/strings/summary.txt b/basis/wrap/strings/summary.txt new file mode 100644 index 0000000000..26c35094e5 --- /dev/null +++ b/basis/wrap/strings/summary.txt @@ -0,0 +1 @@ +Word-wrapping strings diff --git a/basis/wrap/words/summary.txt b/basis/wrap/words/summary.txt new file mode 100644 index 0000000000..901379e5c8 --- /dev/null +++ b/basis/wrap/words/summary.txt @@ -0,0 +1 @@ +Word-wrapping words diff --git a/basis/xml/entities/html/summary.txt b/basis/xml/entities/html/summary.txt new file mode 100644 index 0000000000..16ea3a8bf6 --- /dev/null +++ b/basis/xml/entities/html/summary.txt @@ -0,0 +1 @@ +Standard HTML entities diff --git a/basis/xmode/code2html/summary.txt b/basis/xmode/code2html/summary.txt new file mode 100644 index 0000000000..f5e88d0aa6 --- /dev/null +++ b/basis/xmode/code2html/summary.txt @@ -0,0 +1 @@ +Syntax highlighting code as HTML diff --git a/basis/xmode/marker/summary.txt b/basis/xmode/marker/summary.txt new file mode 100644 index 0000000000..379906c885 --- /dev/null +++ b/basis/xmode/marker/summary.txt @@ -0,0 +1 @@ +Tokenizing lines of text with a syntax mode diff --git a/core/classes/algebra/summary.txt b/core/classes/algebra/summary.txt new file mode 100644 index 0000000000..d33d3b9504 --- /dev/null +++ b/core/classes/algebra/summary.txt @@ -0,0 +1 @@ +Set-theoretic operations on classes diff --git a/core/classes/builtin/summary.txt b/core/classes/builtin/summary.txt new file mode 100644 index 0000000000..cb77cbf377 --- /dev/null +++ b/core/classes/builtin/summary.txt @@ -0,0 +1 @@ +Built-in classes diff --git a/core/classes/intersection/summary.txt b/core/classes/intersection/summary.txt new file mode 100644 index 0000000000..a2ecf2ced6 --- /dev/null +++ b/core/classes/intersection/summary.txt @@ -0,0 +1 @@ +Intersection classes diff --git a/core/classes/parser/summary.txt b/core/classes/parser/summary.txt new file mode 100644 index 0000000000..cd3685599c --- /dev/null +++ b/core/classes/parser/summary.txt @@ -0,0 +1 @@ +Utilities for class-defining parsing words diff --git a/core/classes/singleton/summary.txt b/core/classes/singleton/summary.txt new file mode 100644 index 0000000000..273fbcbc1c --- /dev/null +++ b/core/classes/singleton/summary.txt @@ -0,0 +1 @@ +Singleton classes diff --git a/core/classes/tuple/parser/summary.txt b/core/classes/tuple/parser/summary.txt new file mode 100644 index 0000000000..765ccecaf1 --- /dev/null +++ b/core/classes/tuple/parser/summary.txt @@ -0,0 +1 @@ +Utilities for tuple-defining parsing words diff --git a/core/classes/tuple/summary.txt b/core/classes/tuple/summary.txt index 4dbb64316b..7ef244eefc 100644 --- a/core/classes/tuple/summary.txt +++ b/core/classes/tuple/summary.txt @@ -1 +1 @@ -Object system implementation +Tuple classes diff --git a/core/combinators/summary.txt b/core/combinators/summary.txt index 9346bba6b9..2a995e8a69 100644 --- a/core/combinators/summary.txt +++ b/core/combinators/summary.txt @@ -1 +1 @@ -Complex conditionals (cond, case) and support words for quotation construction +Complex conditionals (cond, case) and generalized dataflow combinators (cleave, spread) diff --git a/core/effects/parser/summary.txt b/core/effects/parser/summary.txt new file mode 100644 index 0000000000..c0e236c3ee --- /dev/null +++ b/core/effects/parser/summary.txt @@ -0,0 +1 @@ +Parsing stack effect declarations diff --git a/core/generic/parser/summary.txt b/core/generic/parser/summary.txt new file mode 100644 index 0000000000..7b7b51cf54 --- /dev/null +++ b/core/generic/parser/summary.txt @@ -0,0 +1 @@ +Utilities for generic word and method defining parsing words diff --git a/core/generic/standard/engines/predicate/summary.txt b/core/generic/standard/engines/predicate/summary.txt new file mode 100644 index 0000000000..47fee09ee5 --- /dev/null +++ b/core/generic/standard/engines/predicate/summary.txt @@ -0,0 +1 @@ +Chained-conditional dispatch strategy diff --git a/core/generic/standard/engines/summary.txt b/core/generic/standard/engines/summary.txt new file mode 100644 index 0000000000..209190799b --- /dev/null +++ b/core/generic/standard/engines/summary.txt @@ -0,0 +1 @@ +Generic word dispatch strategy implementation diff --git a/core/generic/standard/engines/tag/summary.txt b/core/generic/standard/engines/tag/summary.txt new file mode 100644 index 0000000000..3eea4b11cf --- /dev/null +++ b/core/generic/standard/engines/tag/summary.txt @@ -0,0 +1 @@ +Jump table keyed by pointer tag dispatch strategy diff --git a/core/generic/standard/engines/tuple/summary.txt b/core/generic/standard/engines/tuple/summary.txt new file mode 100644 index 0000000000..cb18ac5c78 --- /dev/null +++ b/core/generic/standard/engines/tuple/summary.txt @@ -0,0 +1 @@ +Tuple class dispatch strategy diff --git a/core/io/encodings/utf8/tags.txt b/core/io/encodings/utf8/tags.txt deleted file mode 100644 index 8e27be7d61..0000000000 --- a/core/io/encodings/utf8/tags.txt +++ /dev/null @@ -1 +0,0 @@ -text diff --git a/core/io/streams/null/summary.txt b/core/io/streams/null/summary.txt new file mode 100644 index 0000000000..68a403bf33 --- /dev/null +++ b/core/io/streams/null/summary.txt @@ -0,0 +1 @@ +Dummy implementation of stream protocol diff --git a/core/math/order/summary.txt b/core/math/order/summary.txt new file mode 100644 index 0000000000..3781910360 --- /dev/null +++ b/core/math/order/summary.txt @@ -0,0 +1 @@ +Generic protocol for totally-ordered objects diff --git a/core/splitting/tags.txt b/core/splitting/tags.txt index 42d711b32b..3ab2d731fe 100644 --- a/core/splitting/tags.txt +++ b/core/splitting/tags.txt @@ -1 +1,2 @@ collections +text diff --git a/core/strings/parser/summary.txt b/core/strings/parser/summary.txt new file mode 100644 index 0000000000..b47975868a --- /dev/null +++ b/core/strings/parser/summary.txt @@ -0,0 +1 @@ +Parsing strings diff --git a/core/system/summary.txt b/core/system/summary.txt index 414f0cac74..58bf255369 100644 --- a/core/system/summary.txt +++ b/core/system/summary.txt @@ -1 +1 @@ -OS and CPU queries, environment variables, paths +OS and CPU queries and other system-level tasks diff --git a/core/vocabs/parser/summary.txt b/core/vocabs/parser/summary.txt new file mode 100644 index 0000000000..2741539742 --- /dev/null +++ b/core/vocabs/parser/summary.txt @@ -0,0 +1 @@ +Utilities for parsing and defining words diff --git a/core/words/constant/summary.txt b/core/words/constant/summary.txt new file mode 100644 index 0000000000..42aa832d58 --- /dev/null +++ b/core/words/constant/summary.txt @@ -0,0 +1 @@ +Implementation of constant words diff --git a/core/words/symbol/summary.txt b/core/words/symbol/summary.txt new file mode 100644 index 0000000000..890cbde7ad --- /dev/null +++ b/core/words/symbol/summary.txt @@ -0,0 +1 @@ +Implementation of symbol words diff --git a/extra/peg/javascript/ast/tags.txt b/extra/peg/javascript/ast/tags.txt index a38bf33c3c..643ffaa321 100755 --- a/extra/peg/javascript/ast/tags.txt +++ b/extra/peg/javascript/ast/tags.txt @@ -1,4 +1,3 @@ -text javascript parsing languages diff --git a/extra/peg/javascript/parser/tags.txt b/extra/peg/javascript/parser/tags.txt index a38bf33c3c..643ffaa321 100755 --- a/extra/peg/javascript/parser/tags.txt +++ b/extra/peg/javascript/parser/tags.txt @@ -1,4 +1,3 @@ -text javascript parsing languages diff --git a/extra/peg/javascript/tags.txt b/extra/peg/javascript/tags.txt index a38bf33c3c..643ffaa321 100755 --- a/extra/peg/javascript/tags.txt +++ b/extra/peg/javascript/tags.txt @@ -1,4 +1,3 @@ -text javascript parsing languages diff --git a/extra/peg/javascript/tokenizer/tags.txt b/extra/peg/javascript/tokenizer/tags.txt index a38bf33c3c..643ffaa321 100755 --- a/extra/peg/javascript/tokenizer/tags.txt +++ b/extra/peg/javascript/tokenizer/tags.txt @@ -1,4 +1,3 @@ -text javascript parsing languages From 6a89e4ee3bbc440300e8b6b4000486fc9bf172da Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 16 Feb 2009 21:06:28 -0600 Subject: [PATCH 05/36] Updating sequence and hashtable documentation to point more clearly at the relevant generic operations defined on these types --- basis/byte-vectors/byte-vectors-docs.factor | 5 ++--- core/arrays/arrays-docs.factor | 20 +++++++++++++------- core/hashtables/hashtables-docs.factor | 4 +--- core/sbufs/sbufs-docs.factor | 6 ++---- core/sequences/sequences-docs.factor | 4 ++-- core/strings/strings-docs.factor | 19 ++++++------------- core/vectors/vectors-docs.factor | 14 ++++++++++---- 7 files changed, 36 insertions(+), 36 deletions(-) diff --git a/basis/byte-vectors/byte-vectors-docs.factor b/basis/byte-vectors/byte-vectors-docs.factor index 3873f73bfe..f304dca488 100644 --- a/basis/byte-vectors/byte-vectors-docs.factor +++ b/basis/byte-vectors/byte-vectors-docs.factor @@ -1,9 +1,8 @@ -USING: arrays byte-arrays help.markup help.syntax kernel -byte-vectors.private combinators ; +USING: arrays byte-arrays help.markup help.syntax kernel combinators ; IN: byte-vectors ARTICLE: "byte-vectors" "Byte vectors" -"A byte vector is a resizable mutable sequence of unsigned bytes. Byte vector words are found in the " { $vocab-link "byte-vectors" } " vocabulary." +"The " { $vocab-link "byte-vectors" } " vocabulary implements resizable mutable sequence of unsigned bytes. Byte vectors implement the " { $link "sequence-protocol" } " and thus all " { $link "sequences" } " can be used with them." $nl "Byte vectors form a class:" { $subsection byte-vector } diff --git a/core/arrays/arrays-docs.factor b/core/arrays/arrays-docs.factor index 39fed147cf..f5dc62a67d 100644 --- a/core/arrays/arrays-docs.factor +++ b/core/arrays/arrays-docs.factor @@ -1,11 +1,18 @@ USING: help.markup help.syntax -kernel kernel.private prettyprint sequences.private ; +kernel kernel.private prettyprint sequences.private sequences ; IN: arrays +ARTICLE: "arrays-unsafe" "Unsafe array operations" +"These two words are used internally by the Factor implementation. User code should never need to call them; instead use " { $link nth } " and " { $link set-nth } "." +{ $subsection array-nth } +{ $subsection set-array-nth } ; + ARTICLE: "arrays" "Arrays" -"Arrays are fixed-size mutable sequences (" { $link "sequence-protocol" } "). The literal syntax is covered in " { $link "syntax-arrays" } ". Resizable arrays also exist and are called vectors; see " { $link "vectors" } "." +"The " { $vocab-link "arrays" } " vocabulary implements fixed-size mutable sequences which support the " { $link "sequence-protocol" } "." $nl -"Array words are in the " { $vocab-link "arrays" } " vocabulary. Unsafe implementation words are in the " { $vocab-link "sequences.private" } " vocabulary." +"The " { $vocab-link "arrays" } " vocabulary only includes words for creating new arrays. To access and modify array elements, use " { $link "sequences" } " in the " { $vocab-link "sequences" } " vocabulary." +$nl +"Array literal syntax is documented in " { $link "syntax-arrays" } ". Resizable arrays also exist and are known as " { $link "vectors" } "." $nl "Arrays form a class of objects:" { $subsection array } @@ -18,11 +25,10 @@ $nl { $subsection 2array } { $subsection 3array } { $subsection 4array } -"Arrays can be accessed without bounds checks in a pointer unsafe way." -{ $subsection array-nth } -{ $subsection set-array-nth } "The class of two-element arrays:" -{ $subsection pair } ; +{ $subsection pair } +"Arrays can be accessed without bounds checks in a pointer unsafe way." +{ $subsection "arrays-unsafe" } ; ABOUT: "arrays" diff --git a/core/hashtables/hashtables-docs.factor b/core/hashtables/hashtables-docs.factor index 7cc8333c12..5a19cce351 100644 --- a/core/hashtables/hashtables-docs.factor +++ b/core/hashtables/hashtables-docs.factor @@ -17,9 +17,7 @@ $nl ARTICLE: "hashtables" "Hashtables" "A hashtable provides efficient (expected constant time) lookup and storage of key/value pairs. Keys are compared for equality, and a hashing function is used to reduce the number of comparisons made. The literal syntax is covered in " { $link "syntax-hashtables" } "." $nl -"Hashtable words are in the " { $vocab-link "hashtables" } " vocabulary. Unsafe implementation words are in the " { $vocab-link "hashtables.private" } " vocabulary." -$nl -"Hashtables implement the " { $link "assocs-protocol" } "." +"Words for constructing hashtables are in the " { $vocab-link "hashtables" } " vocabulary. Hashtables implement the " { $link "assocs-protocol" } ", and all " { $link "assocs" } " can be used on them; there are no hashtable-specific words to access and modify keys, because associative mapping operations are generic and work with all associative mappings." $nl "Hashtables are a class of objects." { $subsection hashtable } diff --git a/core/sbufs/sbufs-docs.factor b/core/sbufs/sbufs-docs.factor index f5a06b8beb..43168f47a8 100644 --- a/core/sbufs/sbufs-docs.factor +++ b/core/sbufs/sbufs-docs.factor @@ -3,11 +3,9 @@ help.syntax kernel vectors ; IN: sbufs ARTICLE: "sbufs" "String buffers" -"A string buffer is a resizable mutable sequence of characters. The literal syntax is covered in " { $link "syntax-sbufs" } "." +"The " { $vocab-link "sbufs" } " vocabulary implements resizable mutable sequence of characters. The literal syntax is covered in " { $link "syntax-sbufs" } "." $nl -"String buffers can be used to construct new strings by accumilating substrings and characters, however usually they are only used indirectly, since the sequence construction words are more convenient to use in most cases (see " { $link "namespaces-make" } ")." -$nl -"String buffer words are found in the " { $vocab-link "sbufs" } " vocabulary." +"String buffers implement the " { $link "sequence-protocol" } " and thus all " { $link "sequences" } " can be used with them. String buffers can be used to construct new strings by accumilating substrings and characters, however usually they are only used indirectly, since the sequence construction words are more convenient to use in most cases (see " { $link "namespaces-make" } ")." $nl "String buffers form a class of objects:" { $subsection sbuf } diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor index 6ca782a202..c12761ab38 100755 --- a/core/sequences/sequences-docs.factor +++ b/core/sequences/sequences-docs.factor @@ -247,12 +247,12 @@ HELP: array-capacity HELP: array-nth { $values { "n" "a non-negative fixnum" } { "array" "an array" } { "elt" object } } { $description "Low-level array element accessor." } -{ $warning "This word is in the " { $vocab-link "sequences.private" } " vocabulary because it is unsafe. It does not check types or array bounds, and improper use can corrupt memory." } ; +{ $warning "This word is in the " { $vocab-link "sequences.private" } " vocabulary because it is unsafe. It does not check types or array bounds, and improper use can corrupt memory. User code must use " { $link nth } " instead." } ; HELP: set-array-nth { $values { "elt" object } { "n" "a non-negative fixnum" } { "array" "an array" } } { $description "Low-level array element mutator." } -{ $warning "This word is in the " { $vocab-link "sequences.private" } " vocabulary because it is unsafe. It does not check types or array bounds, and improper use can corrupt memory." } ; +{ $warning "This word is in the " { $vocab-link "sequences.private" } " vocabulary because it is unsafe. It does not check types or array bounds, and improper use can corrupt memory. User code must use " { $link set-nth } " instead." } ; HELP: collect { $values { "n" "a non-negative integer" } { "quot" { $quotation "( n -- value )" } } { "into" "a sequence of length at least " { $snippet "n" } } } diff --git a/core/strings/strings-docs.factor b/core/strings/strings-docs.factor index 9a1671b126..c5ca2b129f 100644 --- a/core/strings/strings-docs.factor +++ b/core/strings/strings-docs.factor @@ -1,32 +1,25 @@ USING: arrays byte-arrays help.markup help.syntax kernel kernel.private strings.private sequences vectors -sbufs math ; +sbufs math tools.vocabs.browser ; IN: strings ARTICLE: "strings" "Strings" -"A string is a fixed-size mutable sequence of Unicode 5.1 code points." +"The " { $vocab-link "strings" } " vocabulary implements fixed-size mutable sequences of of Unicode 5.1 code points." $nl -"Characters are not a first-class type; they are simply represented as integers between 0 and 16777216 (2^24). Only characters up to 2097152 (2^21) have a defined meaning in Unicode." +"Code points, or characters as they're informally known, are not a first-class type; they are simply represented as integers in the range 0 and 16,777,216 (2^24), inclusive. Only characters up to 2,097,152 (2^21) have a defined meaning in Unicode." $nl "String literal syntax is covered in " { $link "syntax-strings" } "." $nl -"String words are found in the " { $vocab-link "strings" } " vocabulary." +"Since strings implement the " { $link "sequence-protocol" } ", basic string manipulation can be performed with " { $link "sequences" } " in the " { $vocab-link "sequences" } " vocabulary. More text processing functionality can be found in vocabularies carrying the " { $link T{ vocab-tag { name "text" } } } " tag." $nl "Strings form a class:" { $subsection string } { $subsection string? } -"Creating strings:" +"Creating new strings:" { $subsection >string } { $subsection } "Creating a string from a single character:" -{ $subsection 1string } -"Since strings are sequences, basic string manipulation can be performed using sequence operations (" { $link "sequences" } "). More advanced functionality can be found in other vocabularies, including but not limited to:" -{ $list - { { $link "ascii" } " - ASCII algorithms for interoperability with legacy applications" } - { { $link "unicode" } " - Unicode algorithms for modern multilingual applications" } - { { $vocab-link "regexp" } " - regular expressions" } - { { $vocab-link "peg" } " - parser expression grammars" } -} ; +{ $subsection 1string } ; ABOUT: "strings" diff --git a/core/vectors/vectors-docs.factor b/core/vectors/vectors-docs.factor index 2af1300498..fe40a27182 100644 --- a/core/vectors/vectors-docs.factor +++ b/core/vectors/vectors-docs.factor @@ -4,17 +4,23 @@ vectors.private combinators ; IN: vectors ARTICLE: "vectors" "Vectors" -"A vector is a resizable mutable sequence of objects. The literal syntax is covered in " { $link "syntax-vectors" } ". Vector words are found in the " { $vocab-link "vectors" } " vocabulary." +"The " { $vocab-link "vectors" } " vocabulary implements resizable mutable sequence which support the " { $link "sequence-protocol" } "." $nl -"Vectors form a class:" +"The " { $vocab-link "vectors" } " vocabulary only includes words for creating new vectors. To access and modify vector elements, use " { $link "sequences" } " in the " { $vocab-link "sequences" } " vocabulary." +$nl +"Vector literal syntax is documented in " { $link "syntax-vectors" } "." +$nl +"Vectors are intended to be used with " { $link "sequences-destructive" } ". Code that does not modify sequences in-place can use fixed-size arrays without loss of generality; see " { $link "arrays" } "." +$nl +"Vectors form a class of objects:" { $subsection vector } { $subsection vector? } -"Creating vectors:" +"Creating new vectors:" { $subsection >vector } { $subsection } "Creating a vector from a single element:" { $subsection 1vector } -"If you don't care about initial capacity, a more elegant way to create a new vector is to write:" +"If you don't care about initial capacity, an elegant way to create a new vector is to write:" { $code "V{ } clone" } ; ABOUT: "vectors" From 60d96b56cec0ed84364b840cb489c4dad7a47190 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 16 Feb 2009 21:13:49 -0600 Subject: [PATCH 06/36] Remove a rot usage --- basis/windows/shell32/shell32.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/windows/shell32/shell32.factor b/basis/windows/shell32/shell32.factor index 6d1c7b1a36..c8dbe4b91c 100644 --- a/basis/windows/shell32/shell32.factor +++ b/basis/windows/shell32/shell32.factor @@ -86,7 +86,7 @@ FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFi ALIAS: ShellExecute ShellExecuteW : open-in-explorer ( dir -- ) - f "open" rot (normalize-path) f f SW_SHOWNORMAL ShellExecute drop ; + [ f "open" ] dip (normalize-path) f f SW_SHOWNORMAL ShellExecute drop ; : shell32-directory ( n -- str ) f swap f SHGFP_TYPE_DEFAULT From 4944bc29f2a7445c987a118f267d1dcbf9dd7d61 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 16 Feb 2009 21:23:10 -0600 Subject: [PATCH 07/36] use CONSTANT: --- basis/nibble-arrays/nibble-arrays.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/nibble-arrays/nibble-arrays.factor b/basis/nibble-arrays/nibble-arrays.factor index d1ab0a34c1..22a1515908 100644 --- a/basis/nibble-arrays/nibble-arrays.factor +++ b/basis/nibble-arrays/nibble-arrays.factor @@ -10,7 +10,7 @@ TUPLE: nibble-array bytes ( m -- n ) 1 + 2/ ; inline From bff66cd47b77c27a1843ce8dda864e7eea05dbaa Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 16 Feb 2009 21:27:32 -0600 Subject: [PATCH 08/36] remove empty file --- basis/math/rectangles/positioning/positioning-docs.factor | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 basis/math/rectangles/positioning/positioning-docs.factor diff --git a/basis/math/rectangles/positioning/positioning-docs.factor b/basis/math/rectangles/positioning/positioning-docs.factor deleted file mode 100644 index e69de29bb2..0000000000 From 53224ebce09920e6d7a1523634a61dabb87a978a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 16 Feb 2009 21:29:13 -0600 Subject: [PATCH 09/36] remove empty file --- core/io/streams/null/null-tests.factor | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 core/io/streams/null/null-tests.factor diff --git a/core/io/streams/null/null-tests.factor b/core/io/streams/null/null-tests.factor deleted file mode 100644 index e69de29bb2..0000000000 From f1cc9e7ebbaf1452f1a97dcbf6cf7f1514bcb2ff Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 16 Feb 2009 21:29:28 -0600 Subject: [PATCH 10/36] add author --- extra/serial/windows/authors.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/extra/serial/windows/authors.txt b/extra/serial/windows/authors.txt index e69de29bb2..7c1b2f2279 100755 --- a/extra/serial/windows/authors.txt +++ b/extra/serial/windows/authors.txt @@ -0,0 +1 @@ +Doug Coleman From f79f49a349a002bfe429c0d5c6397d6c8152701b Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 16 Feb 2009 21:30:22 -0600 Subject: [PATCH 11/36] remove empty file --- basis/io/encodings/korean/korean-docs.factor | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 basis/io/encodings/korean/korean-docs.factor diff --git a/basis/io/encodings/korean/korean-docs.factor b/basis/io/encodings/korean/korean-docs.factor deleted file mode 100644 index e69de29bb2..0000000000 From 13d96df8b65a1863f149dcc578fdf4d2588a06ad Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 16 Feb 2009 21:42:09 -0600 Subject: [PATCH 12/36] Add unit test for >alist on linked-assocs --- basis/linked-assocs/linked-assocs-tests.factor | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/basis/linked-assocs/linked-assocs-tests.factor b/basis/linked-assocs/linked-assocs-tests.factor index 7a259ee59a..5030e93abc 100644 --- a/basis/linked-assocs/linked-assocs-tests.factor +++ b/basis/linked-assocs/linked-assocs-tests.factor @@ -54,4 +54,12 @@ IN: linked-assocs.test { [ [ 1- ] bi@ ] [ 2 / ] } "second" pick set-at 4 6 pick values [ first call ] each + swap values [ second call ] each +] unit-test + +{ V{ { "az" 1 } { "by" 2 } { "cx" 3 } } } [ + + 1 "az" pick set-at + 2 "by" pick set-at + 3 "cx" pick set-at + >alist ] unit-test \ No newline at end of file From be46168a24c0665d2f3e46821624b8636010723d Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 16 Feb 2009 21:42:47 -0600 Subject: [PATCH 13/36] define-operation doesn't add duplicate operations anymore; ui.operations initializes operations global variable automatically --- basis/ui/operations/operations.factor | 15 +++++++++++---- basis/ui/tools/operations/operations.factor | 2 -- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/basis/ui/operations/operations.factor b/basis/ui/operations/operations.factor index bcfca946dd..8ba0e5dac7 100644 --- a/basis/ui/operations/operations.factor +++ b/basis/ui/operations/operations.factor @@ -1,8 +1,8 @@ -! Copyright (C) 2006, 2008 Slava Pestov. +! Copyright (C) 2006, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays definitions kernel ui.commands ui.gestures sequences strings math words generic namespaces make -hashtables help.markup quotations assocs fry ; +hashtables help.markup quotations assocs fry linked-assocs ; IN: ui.operations SYMBOL: +keyboard+ @@ -34,8 +34,11 @@ M: operation command-word command>> command-word ; SYMBOL: operations +operations [ ] initialize + : object-operations ( obj -- operations ) - operations get [ predicate>> call ] with filter ; + operations get values + [ predicate>> call ] with filter ; : find-operation ( obj quot -- command ) [ object-operations ] dip find-last nip ; inline @@ -51,10 +54,14 @@ SYMBOL: operations : default-flags ( -- assoc ) H{ { +keyboard+ f } { +primary+ f } { +secondary+ f } } ; +: (define-operation) ( operation -- ) + dup [ command>> ] [ predicate>> ] bi + 2array operations get set-at ; + : define-operation ( pred command flags -- ) default-flags swap assoc-union dupd define-command - operations get push ; + (define-operation) ; : modify-operation ( hook translator operation -- operation ) clone diff --git a/basis/ui/tools/operations/operations.factor b/basis/ui/tools/operations/operations.factor index a9405424dc..d8802d66c9 100644 --- a/basis/ui/tools/operations/operations.factor +++ b/basis/ui/tools/operations/operations.factor @@ -12,8 +12,6 @@ sequences tools.vocabs classes compiler.units accessors vocabs.parser ; IN: ui.tools.operations -V{ } clone operations set-global - ! Objects [ drop t ] \ inspect H{ { +primary+ t } From 8169c35b9ef5b2e25d7a439dcd2c80f712ed73b0 Mon Sep 17 00:00:00 2001 From: "Yun, Jonghyouk" Date: Tue, 17 Feb 2009 16:40:01 +0900 Subject: [PATCH 14/36] io.encodings.korean TODOs --- basis/io/encodings/korean/korean.factor | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/basis/io/encodings/korean/korean.factor b/basis/io/encodings/korean/korean.factor index cd98bb1eb0..8771c1d928 100644 --- a/basis/io/encodings/korean/korean.factor +++ b/basis/io/encodings/korean/korean.factor @@ -6,6 +6,11 @@ math.order math.parser memoize multiline sequences splitting values hashtables io.binary ; IN: io.encodings.korean +! TODO: write-docs +! TODO: euckr, cp949 seperate (euckr: backslash = Won, cp949: bs <> Won) +! TODO: no byte manip. only code-tables. +! TODO: migrate to common code-table parser (by Dan). + SINGLETON: cp949 cp949 "EUC-KR" register-encoding From da9ae85637008259c5da1e21b5c070c672fce651 Mon Sep 17 00:00:00 2001 From: "Yun, Jonghyouk" Date: Tue, 17 Feb 2009 21:46:57 +0900 Subject: [PATCH 15/36] io.encodings.korean some docs. --- basis/io/encodings/korean/korean-docs.factor | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 basis/io/encodings/korean/korean-docs.factor diff --git a/basis/io/encodings/korean/korean-docs.factor b/basis/io/encodings/korean/korean-docs.factor new file mode 100644 index 0000000000..2500e794a7 --- /dev/null +++ b/basis/io/encodings/korean/korean-docs.factor @@ -0,0 +1,14 @@ +! Copyright (C) 2009 Yun, Jonghyouk. +! See http://factorcode.org/license.txt for BSD license. +USING: help.syntax help.markup ; +IN: io.encodings.korean + +ARTICLE: "io.encodings.korean" "Korean text encodings" +"The " { $vocab-link "io.encodings.korean" } " vocabulary implements encodings used for Korean text besides the standard UTF encodings for Unicode strings." +{ $subsection cp949 } ; + +ABOUT: "io.encodings.korean" + +HELP: cp949 +{ $class-description "This encoding class implements Microsoft's code page #949 encoding, also called Unified Hangul Code or ks_c_5601-1987, UHC. CP949 is extended version of EUC-KR and downward-compatibility to EUC-KR. " } +{ $see-also "encodings-introduction" } ; From 89a3e45a3abe17c8a3199391213d0db00502a570 Mon Sep 17 00:00:00 2001 From: "Yun, Jonghyouk" Date: Tue, 17 Feb 2009 21:47:45 +0900 Subject: [PATCH 16/36] io.encodings.korean TODOs comment --- basis/io/encodings/korean/korean.factor | 1 - 1 file changed, 1 deletion(-) diff --git a/basis/io/encodings/korean/korean.factor b/basis/io/encodings/korean/korean.factor index 8771c1d928..c1fed1d57c 100644 --- a/basis/io/encodings/korean/korean.factor +++ b/basis/io/encodings/korean/korean.factor @@ -6,7 +6,6 @@ math.order math.parser memoize multiline sequences splitting values hashtables io.binary ; IN: io.encodings.korean -! TODO: write-docs ! TODO: euckr, cp949 seperate (euckr: backslash = Won, cp949: bs <> Won) ! TODO: no byte manip. only code-tables. ! TODO: migrate to common code-table parser (by Dan). From 4440a210b101b3cbde5ca545f4c2d3d4a104973a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 17 Feb 2009 11:28:43 -0600 Subject: [PATCH 17/36] make io.servers.packet load again --- basis/io/servers/packet/{datagram.factor => packet.factor} | 3 +++ 1 file changed, 3 insertions(+) rename basis/io/servers/packet/{datagram.factor => packet.factor} (80%) diff --git a/basis/io/servers/packet/datagram.factor b/basis/io/servers/packet/packet.factor similarity index 80% rename from basis/io/servers/packet/datagram.factor rename to basis/io/servers/packet/packet.factor index c081dfb0fa..3f092ab9f1 100644 --- a/basis/io/servers/packet/datagram.factor +++ b/basis/io/servers/packet/packet.factor @@ -1,3 +1,5 @@ +USING: concurrency.combinators destructors fry +io.servers.datagram.private io.sockets kernel logging ; IN: io.servers.datagram : with-datagrams ( seq service quot -- ) + [ DEBUG ] dip '[ [ [ _ ] dip spawn-datagrams ] parallel-each ] with-logging ; inline From d92b02b0c29414e6b8ddf5242451024d8a8fedc8 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 17 Feb 2009 11:30:06 -0600 Subject: [PATCH 18/36] use the new with-logging --- basis/io/servers/connection/connection.factor | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/basis/io/servers/connection/connection.factor b/basis/io/servers/connection/connection.factor index bc90915213..91fb3bfb37 100644 --- a/basis/io/servers/connection/connection.factor +++ b/basis/io/servers/connection/connection.factor @@ -12,6 +12,7 @@ IN: io.servers.connection TUPLE: threaded-server name +log-level secure insecure secure-config sockets @@ -29,6 +30,7 @@ ready ; : new-threaded-server ( class -- threaded-server ) new "server" >>name + DEBUG >>log-level ascii >>encoding 1 minutes >>timeout V{ } clone >>sockets @@ -115,7 +117,7 @@ M: threaded-server handle-client* handler>> call ; : (start-server) ( threaded-server -- ) init-server dup threaded-server [ - dup name>> [ + [ ] [ name>> ] [ log-level>> ] tri [ [ listen-on [ start-accept-loop ] parallel-each ] [ ready>> raise-flag ] bi From e55425a65e20565879fb728ebe22e3a18aa892e8 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 17 Feb 2009 11:30:28 -0600 Subject: [PATCH 19/36] with-logging takes a log-level, more docs --- basis/logging/insomniac/insomniac.factor | 2 +- basis/logging/logging-docs.factor | 11 +++++---- basis/logging/logging.factor | 30 ++++++++++++++++++++---- basis/logging/parser/parser.factor | 4 ++-- 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/basis/logging/insomniac/insomniac.factor b/basis/logging/insomniac/insomniac.factor index 91baae631f..935326da2d 100644 --- a/basis/logging/insomniac/insomniac.factor +++ b/basis/logging/insomniac/insomniac.factor @@ -30,7 +30,7 @@ SYMBOL: insomniac-recipients \ (email-log-report) NOTICE add-error-logging : email-log-report ( service word-names -- ) - "logging.insomniac" [ (email-log-report) ] with-logging ; + "logging.insomniac" DEBUG [ (email-log-report) ] with-logging ; : schedule-insomniac ( service word-names -- ) [ [ email-log-report ] assoc-each rotate-logs ] 2curry diff --git a/basis/logging/logging-docs.factor b/basis/logging/logging-docs.factor index 275d900f3d..64956493c6 100644 --- a/basis/logging/logging-docs.factor +++ b/basis/logging/logging-docs.factor @@ -8,6 +8,9 @@ HELP: DEBUG HELP: NOTICE { $description "Log level for ordinary messages." } ; +HELP: WARNING +{ $description "Log level for warnings." } ; + HELP: ERROR { $description "Log level for error messages." } ; @@ -18,6 +21,7 @@ ARTICLE: "logging.levels" "Log levels" "Several log levels are supported, from lowest to highest:" { $subsection DEBUG } { $subsection NOTICE } +{ $subsection WARNING } { $subsection ERROR } { $subsection CRITICAL } ; @@ -36,7 +40,7 @@ ARTICLE: "logging.files" "Log files" HELP: log-message { $values { "msg" string } { "word" word } { "level" "a log level" } } -{ $description "Sends a message to the current log. Does nothing if not executing in a dynamic scope established by " { $link with-logging } "." } ; +{ $description "Sends a message to the current log if the level is more urgent than " { $link log-level } ". Does nothing if not executing in a dynamic scope established by " { $link with-logging } "." } ; HELP: add-logging { $values { "level" "a log level" } { "word" word } } @@ -90,8 +94,8 @@ HELP: close-logs { $description "Closes all open log streams. Subsequent logging will re-open the streams. This should be used before moving or deleting log files." } ; HELP: with-logging -{ $values { "service" "a log service name" } { "quot" quotation } } -{ $description "Calls the quotation a new dynamic scope where all logging calls are sent to the log file for " { $snippet "service" } "." } ; +{ $values { "service" "a log service name" } { "level" "a log level" } { "quot" quotation } } +{ $description "Calls the quotation a new dynamic scope where all logging calls more urgent than " { $link log-level } " are sent to the log file for " { $snippet "service" } "." } ; ARTICLE: "logging.rotation" "Log rotation" "Log files should be rotated periodically to prevent unbounded growth." @@ -120,4 +124,3 @@ ARTICLE: "logging" "Logging framework" { $subsection "logging.server" } ; ABOUT: "logging" - diff --git a/basis/logging/logging.factor b/basis/logging/logging.factor index 6769932c88..2389389074 100644 --- a/basis/logging/logging.factor +++ b/basis/logging/logging.factor @@ -4,12 +4,29 @@ USING: logging.server sequences namespaces concurrency.messaging words kernel arrays shuffle tools.annotations prettyprint.config prettyprint debugger io.streams.string splitting continuations effects generalizations parser strings -quotations fry accessors ; +quotations fry accessors math assocs math.order ; IN: logging SYMBOLS: DEBUG NOTICE WARNING ERROR CRITICAL ; -: log-levels { DEBUG NOTICE NOTICE WARNING ERROR CRITICAL } ; +SYMBOL: log-level + +: log-levels ( -- assoc ) + H{ + { DEBUG 0 } + { NOTICE 10 } + { WARNING 20 } + { ERROR 30 } + { CRITICAL 40 } + } ; + +ERROR: undefined-log-level ; + +: log-level<=> ( log-level log-level -- ? ) + [ log-levels at* [ undefined-log-level ] unless ] bi@ <=> ; + +: log? ( log-level -- ? ) + log-level get log-level<=> +lt+ = not ; : send-to-log-server ( array string -- ) prefix "log-server" get send ; @@ -22,7 +39,8 @@ SYMBOL: log-service : log-message ( msg word level -- ) check-log-message - log-service get dup [ + dup log? + log-service get dup and [ [ [ string-lines ] [ name>> ] [ name>> ] tri* ] dip 4array "log-message" send-to-log-server ] [ @@ -35,8 +53,10 @@ SYMBOL: log-service : close-logs ( -- ) { } "close-logs" send-to-log-server ; -: with-logging ( service quot -- ) - log-service swap with-variable ; inline +: with-logging ( service level quot -- ) + '[ + _ log-service [ _ log-level _ with-variable ] with-variable + ] call ; inline ! Aspect-oriented programming idioms diff --git a/basis/logging/parser/parser.factor b/basis/logging/parser/parser.factor index 07a84ec5c6..5406d8fcd0 100644 --- a/basis/logging/parser/parser.factor +++ b/basis/logging/parser/parser.factor @@ -3,7 +3,7 @@ USING: accessors peg peg.parsers memoize kernel sequences logging arrays words strings vectors io io.files io.encodings.utf8 namespaces make combinators logging.server -calendar calendar.format ; +calendar calendar.format assocs ; IN: logging.parser TUPLE: log-entry date level word-name message ; @@ -21,7 +21,7 @@ SYMBOL: multiline "[" "]" surrounded-by ; : 'log-level' ( -- parser ) - log-levels [ + log-levels keys [ [ name>> token ] keep [ nip ] curry action ] map choice ; From bf3ef49dd0492f2b2a93d1dcfd002cb753bb67d6 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 17 Feb 2009 11:31:01 -0600 Subject: [PATCH 20/36] with-logging change --- extra/spider/spider.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/spider/spider.factor b/extra/spider/spider.factor index bd5b2668be..0f702d7d22 100644 --- a/extra/spider/spider.factor +++ b/extra/spider/spider.factor @@ -88,7 +88,7 @@ links processing-time timestamp ; PRIVATE> : run-spider ( spider -- spider ) - "spider" [ + "spider" DEBUG [ dup spider [ queue-initial-links [ todo>> ] [ max-depth>> ] bi From b3e3c74561d6b23c875e2d2cc2c06581a7b11839 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 17 Feb 2009 11:40:50 -0600 Subject: [PATCH 21/36] add ; to word definition in stack-checker docs --- basis/stack-checker/stack-checker-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/stack-checker/stack-checker-docs.factor b/basis/stack-checker/stack-checker-docs.factor index 5926f08d8c..db8abac441 100644 --- a/basis/stack-checker/stack-checker-docs.factor +++ b/basis/stack-checker/stack-checker-docs.factor @@ -56,7 +56,7 @@ ARTICLE: "inference-recursive" "Stack effects of recursive words" "When a recursive call is encountered, the declared stack effect is substituted in. When inference is complete, the inferred stack effect is compared with the declared stack effect." $nl "Attempting to infer the stack effect of a recursive word which outputs a variable number of objects on the stack will fail. For example, the following will throw an " { $link unbalanced-branches-error } ":" -{ $code ": foo ( seq -- ) dup empty? [ drop ] [ dup pop foo ] if" "[ foo ] infer." } +{ $code ": foo ( seq -- ) dup empty? [ drop ] [ dup pop foo ] if ;" "[ foo ] infer." } "If you declare an incorrect stack effect, inference will fail also. Badly defined recursive words cannot confuse the inferencer." ; ARTICLE: "inference-recursive-combinators" "Recursive combinator inference" From cbe99c4bedbda5520c1ae7aa7e6804277c5a914e Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 17 Feb 2009 12:36:27 -0600 Subject: [PATCH 22/36] use +foo+ as symbol names --- basis/tools/files/files.factor | 49 ++++++++++++------------ basis/tools/files/unix/unix.factor | 19 +++++---- basis/tools/files/windows/windows.factor | 2 +- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/basis/tools/files/files.factor b/basis/tools/files/files.factor index 7508c37cac..8d882099de 100755 --- a/basis/tools/files/files.factor +++ b/basis/tools/files/files.factor @@ -35,9 +35,10 @@ IN: tools.files PRIVATE> -SYMBOLS: file-name file-name/type permissions file-type nlinks file-size -file-date file-time file-datetime uid gid user group link-target unix-datetime -directory-or-size ; +SYMBOLS: +file-name+ +file-name/type+ +permissions+ +file-type+ ++nlinks+ +file-size+ +file-date+ +file-time+ +file-datetime+ ++uid+ +gid+ +user+ +group+ +link-target+ +unix-datetime+ ++directory-or-size+ ; TUPLE: listing-tool path specs sort ; @@ -48,10 +49,10 @@ C: file-listing : ( path -- listing-tool ) listing-tool new swap >>path - { file-name } >>specs ; + { +file-name+ } >>specs ; : list-slow? ( listing-tool -- ? ) - specs>> { file-name } sequence= not ; + specs>> { +file-name+ } sequence= not ; ERROR: unknown-file-spec symbol ; @@ -59,12 +60,12 @@ HOOK: file-spec>string os ( file-listing spec -- string ) M: object file-spec>string ( file-listing spec -- string ) { - { file-name [ directory-entry>> name>> ] } - { directory-or-size [ file-info>> dir-or-size ] } - { file-size [ file-info>> size>> number>string ] } - { file-date [ file-info>> modified>> listing-date ] } - { file-time [ file-info>> modified>> listing-time ] } - { file-datetime [ file-info>> modified>> timestamp>ymdhms ] } + { +file-name+ [ directory-entry>> name>> ] } + { +directory-or-size+ [ file-info>> dir-or-size ] } + { +file-size+ [ file-info>> size>> number>string ] } + { +file-date+ [ file-info>> modified>> listing-date ] } + { +file-time+ [ file-info>> modified>> listing-time ] } + { +file-datetime+ [ file-info>> modified>> timestamp>ymdhms ] } [ unknown-file-spec ] } case ; @@ -85,22 +86,22 @@ HOOK: (directory.) os ( path -- lines ) : directory. ( path -- ) (directory.) simple-table. ; -SYMBOLS: device-name mount-point type -available-space free-space used-space total-space -percent-used percent-free ; +SYMBOLS: +device-name+ +mount-point+ +type+ ++available-space+ +free-space+ +used-space+ +total-space+ ++percent-used+ +percent-free+ ; : percent ( real -- integer ) 100 * >integer ; inline : file-system-spec ( file-system-info obj -- str ) { - { device-name [ device-name>> "" or ] } - { mount-point [ mount-point>> "" or ] } - { type [ type>> "" or ] } - { available-space [ available-space>> 0 or ] } - { free-space [ free-space>> 0 or ] } - { used-space [ used-space>> 0 or ] } - { total-space [ total-space>> 0 or ] } - { percent-used [ + { +device-name+ [ device-name>> "" or ] } + { +mount-point+ [ mount-point>> "" or ] } + { +type+ [ type>> "" or ] } + { +available-space+ [ available-space>> 0 or ] } + { +free-space+ [ free-space>> 0 or ] } + { +used-space+ [ used-space>> 0 or ] } + { +total-space+ [ total-space>> 0 or ] } + { +percent-used+ [ [ used-space>> ] [ total-space>> ] bi [ 0 or ] bi@ dup 0 = [ 2drop 0 ] [ / percent ] if @@ -116,8 +117,8 @@ percent-used percent-free ; : file-systems. ( -- ) { - device-name available-space free-space used-space - total-space percent-used mount-point + +device-name+ +available-space+ +free-space+ +used-space+ + +total-space+ +percent-used+ +mount-point+ } print-file-systems ; { diff --git a/basis/tools/files/unix/unix.factor b/basis/tools/files/unix/unix.factor index e63ab09076..90e91529a1 100755 --- a/basis/tools/files/unix/unix.factor +++ b/basis/tools/files/unix/unix.factor @@ -47,21 +47,24 @@ IN: tools.files.unix M: unix (directory.) ( path -- lines ) - { permissions nlinks user group file-size file-date file-name } >>specs + { + +permissions+ +nlinks+ +user+ +group+ + +file-size+ +file-date+ +file-name+ + } >>specs { { directory-entry>> name>> <=> } } >>sort [ [ list-files ] with-group-cache ] with-user-cache ; M: unix file-spec>string ( file-listing spec -- string ) { - { file-name/type [ + { +file-name/type+ [ directory-entry>> [ name>> ] [ file-type>trailing ] bi append ] } - { permissions [ file-info>> permissions-string ] } - { nlinks [ file-info>> nlink>> number>string ] } - { user [ file-info>> uid>> user-name ] } - { group [ file-info>> gid>> group-name ] } - { uid [ file-info>> uid>> number>string ] } - { gid [ file-info>> gid>> number>string ] } + { +permissions+ [ file-info>> permissions-string ] } + { +nlinks+ [ file-info>> nlink>> number>string ] } + { +user+ [ file-info>> uid>> user-name ] } + { +group+ [ file-info>> gid>> group-name ] } + { +uid+ [ file-info>> uid>> number>string ] } + { +gid+ [ file-info>> gid>> number>string ] } [ call-next-method ] } case ; diff --git a/basis/tools/files/windows/windows.factor b/basis/tools/files/windows/windows.factor index f321c2fc7f..874b2ef5c1 100755 --- a/basis/tools/files/windows/windows.factor +++ b/basis/tools/files/windows/windows.factor @@ -9,7 +9,7 @@ IN: tools.files.windows M: windows (directory.) ( entries -- lines ) - { file-datetime directory-or-size file-name } >>specs + { +file-datetime+ +directory-or-size+ +file-name+ } >>specs { { directory-entry>> name>> <=> } } >>sort list-files ; From 894ba6182ec2cd9fa3e19df0db1bfd389f2c19d8 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 17 Feb 2009 17:09:27 -0600 Subject: [PATCH 23/36] add timestamp>mdtm to calendar.format --- basis/calendar/format/format-tests.factor | 7 +++++++ basis/calendar/format/format.factor | 3 +++ 2 files changed, 10 insertions(+) diff --git a/basis/calendar/format/format-tests.factor b/basis/calendar/format/format-tests.factor index 81930cdf49..f8864351a4 100644 --- a/basis/calendar/format/format-tests.factor +++ b/basis/calendar/format/format-tests.factor @@ -51,6 +51,11 @@ IN: calendar.format.tests timestamp>string ] unit-test +[ "20080504070000" ] [ + "Sun May 04 07:00:00 2008 GMT" cookie-string>timestamp + timestamp>mdtm +] unit-test + [ T{ timestamp f 2008 @@ -74,3 +79,5 @@ IN: calendar.format.tests { gmt-offset T{ duration f 0 0 0 0 0 0 } } } ] [ "Thursday, 02-Oct-2008 23:59:59 GMT" cookie-string>timestamp ] unit-test + + diff --git a/basis/calendar/format/format.factor b/basis/calendar/format/format.factor index 15a4cb8266..916d3499fe 100644 --- a/basis/calendar/format/format.factor +++ b/basis/calendar/format/format.factor @@ -78,6 +78,9 @@ M: integer year. ( n -- ) M: timestamp year. ( timestamp -- ) year>> year. ; +: timestamp>mdtm ( timestamp -- str ) + [ { YYYY MM DD hh mm ss } formatted ] with-string-writer ; + : (timestamp>string) ( timestamp -- ) { DAY ", " D " " MONTH " " YYYY " " hh ":" mm ":" ss } formatted ; From fdad5d4d979cd004dd11ab0cb7b419589a4d4932 Mon Sep 17 00:00:00 2001 From: "Yun, Jonghyouk" Date: Wed, 18 Feb 2009 19:19:18 +0900 Subject: [PATCH 24/36] io.encodings.korean TODO removes --- basis/io/encodings/korean/korean.factor | 2 -- 1 file changed, 2 deletions(-) diff --git a/basis/io/encodings/korean/korean.factor b/basis/io/encodings/korean/korean.factor index c1fed1d57c..a021cfce33 100644 --- a/basis/io/encodings/korean/korean.factor +++ b/basis/io/encodings/korean/korean.factor @@ -6,8 +6,6 @@ math.order math.parser memoize multiline sequences splitting values hashtables io.binary ; IN: io.encodings.korean -! TODO: euckr, cp949 seperate (euckr: backslash = Won, cp949: bs <> Won) -! TODO: no byte manip. only code-tables. ! TODO: migrate to common code-table parser (by Dan). SINGLETON: cp949 From 2af9d5a6df34a3a6f1473aa959cc2e68902ead1f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 13:33:55 -0600 Subject: [PATCH 25/36] add canonicalize-path, fix a bug in file-extension --- core/io/pathnames/pathnames-docs.factor | 14 +++++++++++++- core/io/pathnames/pathnames-tests.factor | 4 ++++ core/io/pathnames/pathnames.factor | 9 ++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/core/io/pathnames/pathnames-docs.factor b/core/io/pathnames/pathnames-docs.factor index a4f261391a..f5ad6e533b 100644 --- a/core/io/pathnames/pathnames-docs.factor +++ b/core/io/pathnames/pathnames-docs.factor @@ -1,4 +1,5 @@ -USING: help.markup help.syntax io.backend io.files strings ; +USING: help.markup help.syntax io.backend io.files strings +sequences ; IN: io.pathnames HELP: path-separator? @@ -22,6 +23,10 @@ HELP: file-name { $example "USING: io.pathnames prettyprint ;" "\"/usr/libexec/awk/\" file-name ." "\"awk\"" } } ; +HELP: path-components +{ $values { "path" "a pathnames string" } { "seq" sequence } } +{ $description "Splits a pathname on the " { $link path-separator } " into its its component strings." } ; + HELP: append-path { $values { "str1" "a string" } { "str2" "a string" } { "str" "a string" } } { $description "Appends " { $snippet "str1" } " and " { $snippet "str2" } " to form a pathname." } ; @@ -57,6 +62,10 @@ HELP: normalize-path { $values { "str" "a pathname string" } { "newstr" "a new pathname string" } } { $description "Called by words such as " { $link } " and " { $link } " to prepare a pathname before passing it to underlying code." } ; +HELP: canonicalize-path +{ $values { "path" "a pathname string" } { "path'" "a new pathname string" } } +{ $description "Returns an canonical name for a path. The canonical name is an absolute path containing no symlinks." } ; + HELP: { $values { "string" "a pathname string" } { "pathname" pathname } } { $description "Creates a new " { $link pathname } "." } ; @@ -74,9 +83,12 @@ ARTICLE: "io.pathnames" "Pathname manipulation" { $subsection POSTPONE: P" } "Pathname manipulation:" { $subsection normalize-path } +{ $subsection canonicalize-path } { $subsection parent-directory } { $subsection file-name } { $subsection last-path-separator } +{ $subsection path-components } +{ $subsection prepend-path } { $subsection append-path } "Pathname presentations:" { $subsection pathname } diff --git a/core/io/pathnames/pathnames-tests.factor b/core/io/pathnames/pathnames-tests.factor index 41498fa15a..c3e419e60d 100644 --- a/core/io/pathnames/pathnames-tests.factor +++ b/core/io/pathnames/pathnames-tests.factor @@ -66,3 +66,7 @@ IN: io.pathnames.tests ] with-scope [ t ] [ cwd "misc" resource-path [ ] with-directory cwd = ] unit-test + +! Regression test for bug in file-extension +[ f ] [ "/funny.directory/file-with-no-extension" file-extension ] unit-test +[ "" ] [ "/funny.directory/file-with-no-extension." file-extension ] unit-test diff --git a/core/io/pathnames/pathnames.factor b/core/io/pathnames/pathnames.factor index 96ac872826..eba3e6a19f 100644 --- a/core/io/pathnames/pathnames.factor +++ b/core/io/pathnames/pathnames.factor @@ -119,7 +119,14 @@ PRIVATE> ] unless ; : file-extension ( filename -- extension ) - "." split1-last nip ; + file-name "." split1-last nip ; + +: path-components ( path -- seq ) + normalize-path path-separator split harvest ; + +HOOK: canonicalize-path os ( path -- path' ) + +M: object canonicalize-path normalize-path ; : resource-path ( path -- newpath ) "resource-path" get prepend-path ; From 6324fb6c13c3d74b6cf7e2d8b272163ba39f71af Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 13:34:45 -0600 Subject: [PATCH 26/36] add unix canonicalize-path --- basis/io/files/info/unix/linux/linux.factor | 3 ++- basis/io/files/links/unix/unix.factor | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/basis/io/files/info/unix/linux/linux.factor b/basis/io/files/info/unix/linux/linux.factor index 5dddca4f9d..72401004ae 100644 --- a/basis/io/files/info/unix/linux/linux.factor +++ b/basis/io/files/info/unix/linux/linux.factor @@ -72,13 +72,14 @@ M: linux file-systems ] map ; : (find-mount-point) ( path mtab-paths -- mtab-entry ) - [ follow-links ] dip 2dup at* [ + 2dup at* [ 2nip ] [ drop [ parent-directory ] dip (find-mount-point) ] if ; : find-mount-point ( path -- mtab-entry ) + canonicalize-path parse-mtab [ [ mount-point>> ] keep ] H{ } map>assoc (find-mount-point) ; ERROR: file-system-not-found ; diff --git a/basis/io/files/links/unix/unix.factor b/basis/io/files/links/unix/unix.factor index 2f38c39e02..7d2a6ee4f3 100644 --- a/basis/io/files/links/unix/unix.factor +++ b/basis/io/files/links/unix/unix.factor @@ -1,6 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: io.backend io.files.links system unix ; +USING: io.backend io.files.links system unix io.pathnames kernel +io.files sequences ; IN: io.files.links.unix M: unix make-link ( path1 path2 -- ) @@ -8,3 +9,7 @@ M: unix make-link ( path1 path2 -- ) M: unix read-link ( path -- path' ) normalize-path read-symbolic-link ; + +M: unix canonicalize-path ( path -- path' ) + path-components "/" + [ append-path dup exists? [ follow-links ] when ] reduce ; From 1045b904be7c85521cea91992a6263f38cb07013 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 13:35:55 -0600 Subject: [PATCH 27/36] fix logging check, unit tests --- basis/logging/logging-tests.factor | 2 +- basis/logging/logging.factor | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/basis/logging/logging-tests.factor b/basis/logging/logging-tests.factor index 796c8769fc..63eecc7319 100644 --- a/basis/logging/logging-tests.factor +++ b/basis/logging/logging-tests.factor @@ -13,7 +13,7 @@ USING: tools.test logging math ; \ error-logging-test ERROR add-error-logging -"logging-test" [ +"logging-test" DEBUG [ [ 4 ] [ 1 3 input-logging-test ] unit-test [ 4 ] [ 1 3 output-logging-test ] unit-test diff --git a/basis/logging/logging.factor b/basis/logging/logging.factor index 2389389074..496dae2c61 100644 --- a/basis/logging/logging.factor +++ b/basis/logging/logging.factor @@ -33,14 +33,16 @@ ERROR: undefined-log-level ; SYMBOL: log-service +ERROR: bad-log-message-parameters msg word level ; + : check-log-message ( msg word level -- msg word level ) 3dup [ string? ] [ word? ] [ word? ] tri* and and - [ "Bad parameters to log-message" throw ] unless ; inline + [ bad-log-message-parameters ] unless ; inline : log-message ( msg word level -- ) check-log-message - dup log? - log-service get dup and [ + log-service get + 2dup [ log? ] [ ] bi* and [ [ [ string-lines ] [ name>> ] [ name>> ] tri* ] dip 4array "log-message" send-to-log-server ] [ From 966627a1e2b1168d7d34dbd50cabc0961641abe9 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 13:36:23 -0600 Subject: [PATCH 28/36] make ftp server work with firefox, simplify some code --- basis/ftp/ftp.factor | 9 +- basis/ftp/server/server.factor | 406 +++++++++++++++++---------------- 2 files changed, 212 insertions(+), 203 deletions(-) diff --git a/basis/ftp/ftp.factor b/basis/ftp/ftp.factor index adf7d5b41b..27eebc5946 100644 --- a/basis/ftp/ftp.factor +++ b/basis/ftp/ftp.factor @@ -4,8 +4,7 @@ USING: accessors arrays assocs combinators io io.files kernel math.parser sequences strings ; IN: ftp -SINGLETON: active -SINGLETON: passive +SYMBOLS: +active+ +passive+ ; TUPLE: ftp-response n strings parsed ; @@ -17,5 +16,7 @@ TUPLE: ftp-response n strings parsed ; over strings>> push ; : ftp-send ( string -- ) write "\r\n" write flush ; -: ftp-ipv4 1 ; inline -: ftp-ipv6 2 ; inline + +CONSTANT: ftp-ipv4 1 + +CONSTANT: ftp-ipv6 2 diff --git a/basis/ftp/server/server.factor b/basis/ftp/server/server.factor index 20a753785c..ffe16b2f4c 100644 --- a/basis/ftp/server/server.factor +++ b/basis/ftp/server/server.factor @@ -1,52 +1,46 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: combinators.short-circuit accessors combinators io -io.encodings.8-bit io.encodings io.encodings.binary -io.encodings.utf8 io.files io.files.info io.directories -io.sockets kernel math.parser namespaces make sequences -ftp io.launcher.unix.parser unicode.case splitting -assocs classes io.servers.connection destructors calendar -io.timeouts io.streams.duplex threads continuations math -concurrency.promises byte-arrays io.backend tools.hexdump -io.streams.string math.bitwise tools.files io.pathnames ; +USING: accessors assocs byte-arrays calendar classes +combinators combinators.short-circuit concurrency.promises +continuations destructors ftp io io.backend io.directories +io.encodings io.encodings.8-bit io.encodings.binary +tools.files io.encodings.utf8 io.files io.files.info +io.pathnames io.launcher.unix.parser io.servers.connection +io.sockets io.streams.duplex io.streams.string io.timeouts +kernel make math math.bitwise math.parser namespaces sequences +splitting threads unicode.case logging calendar.format +strings io.files.links io.files.types ; IN: ftp.server -TUPLE: ftp-client url mode state command-promise user password ; - -: ( url -- ftp-client ) - ftp-client new - swap >>url ; - +SYMBOL: server SYMBOL: client -: ftp-server-directory ( -- str ) - \ ftp-server-directory get-global "resource:temp" or - normalize-path ; +TUPLE: ftp-server < threaded-server { serving-directory string } ; + +TUPLE: ftp-client user password extra-connection ; TUPLE: ftp-command raw tokenized ; - -: ( -- obj ) - ftp-command new ; +: ( str -- obj ) + dup \ DEBUG log-message + ftp-command new + over >>raw + swap tokenize-command >>tokenized ; TUPLE: ftp-get path ; - : ( path -- obj ) ftp-get new swap >>path ; TUPLE: ftp-put path ; - : ( path -- obj ) ftp-put new swap >>path ; TUPLE: ftp-list ; - C: ftp-list -: read-command ( -- ftp-command ) - readln - [ >>raw ] [ tokenize-command >>tokenized ] bi ; +TUPLE: ftp-disconnect ; +C: ftp-disconnect : (send-response) ( n string separator -- ) [ number>string write ] 2dip write ftp-send ; @@ -56,28 +50,50 @@ C: ftp-list [ but-last-slice [ "-" (send-response) ] with each ] [ first " " (send-response) ] 2bi ; -: server-response ( n string -- ) +: server-response ( string n -- ) + 2dup number>string swap ":" glue \ server-response DEBUG log-message - swap add-response-line swap >>n + swap add-response-line send-response ; -: ftp-error ( string -- ) - 500 "Unrecognized command: " rot append server-response ; +: serving? ( path -- ? ) + normalize-path server get serving-directory>> head? ; + +: can-serve-directory? ( path -- ? ) + canonicalize-path + { [ exists? ] [ file-info directory? ] [ serving? ] } 1&& ; + +: can-serve-file? ( path -- ? ) + canonicalize-path + { + [ exists? ] + [ file-info type>> +regular-file+ = ] + [ serving? ] + } 1&& ; + +: can-serve? ( path -- ? ) + [ can-serve-file? ] [ can-serve-directory? ] bi or ; + +: ftp-error ( string -- ) 500 server-response ; +: ftp-syntax-error ( string -- ) 501 server-response ; +: ftp-unimplemented ( string -- ) 502 server-response ; +: ftp-file-not-available ( string -- ) 550 server-response ; +: ftp-illegal-file-name ( string -- ) 553 server-response ; : send-banner ( -- ) - 220 "Welcome to " host-name append server-response ; + "Welcome to " host-name append 220 server-response ; : anonymous-only ( -- ) - 530 "This FTP server is anonymous only." server-response ; + "This FTP server is anonymous only." 530 server-response ; : handle-QUIT ( obj -- ) - drop 221 "Goodbye." server-response ; + drop "Goodbye." 221 server-response ; : handle-USER ( ftp-command -- ) [ tokenized>> second client get (>>user) - 331 "Please specify the password." server-response + "Please specify the password." 331 server-response ] [ 2drop "bad USER" ftp-error ] recover ; @@ -85,7 +101,7 @@ C: ftp-list : handle-PASS ( ftp-command -- ) [ tokenized>> second client get (>>password) - 230 "Login successful" server-response + "Login successful" 230 server-response ] [ 2drop "PASS error" ftp-error ] recover ; @@ -102,7 +118,7 @@ ERROR: type-error type ; : handle-TYPE ( obj -- ) [ tokenized>> second parse-type - [ 200 ] dip "Switching to " " mode" surround server-response + "Switching to " " mode" surround 200 server-response ] [ 2drop "TYPE is binary only" ftp-error ] recover ; @@ -115,65 +131,57 @@ ERROR: type-error type ; : handle-PWD ( obj -- ) drop - 257 current-directory get "\"" dup surround server-response ; + current-directory get "\"" dup surround 257 server-response ; : handle-SYST ( obj -- ) drop - 215 "UNIX Type: L8" server-response ; - -: if-command-promise ( quot -- ) - [ client get command-promise>> ] dip - [ "Establish an active or passive connection first" ftp-error ] if* ; - -: handle-STOR ( obj -- ) - [ - tokenized>> second - [ [ ] dip fulfill ] if-command-promise - ] [ - 2drop - ] recover ; - -! EPRT |2|::1|62138| -! : handle-EPRT ( obj -- ) - ! tokenized>> second "|" split harvest ; + "UNIX Type: L8" 215 server-response ; : start-directory ( -- ) - 150 "Here comes the directory listing." server-response ; + "Here comes the directory listing." 150 server-response ; + +: transfer-outgoing-file ( path -- ) + [ "Opening BINARY mode data connection for " ] dip + [ file-name ] [ + file-info size>> number>string + "(" " bytes)." surround + ] bi " " glue append 150 server-response ; + +: transfer-incoming-file ( path -- ) + "Opening BINARY mode data connection for " prepend + 150 server-response ; + +: finish-file-transfer ( -- ) + "File send OK." 226 server-response ; + +GENERIC: handle-passive-command ( stream obj -- ) + +: passive-loop ( server -- ) + [ + [ + |dispose + 30 seconds over set-timeout + accept drop &dispose + client get extra-connection>> + 30 seconds ?promise-timeout + handle-passive-command + ] + [ client get f >>extra-connection drop ] + [ drop ] cleanup + ] with-destructors ; : finish-directory ( -- ) - 226 "Directory send OK." server-response ; + "Directory send OK." 226 server-response ; -GENERIC: service-command ( stream obj -- ) - -M: ftp-list service-command ( stream obj -- ) +M: ftp-list handle-passive-command ( stream obj -- ) drop start-directory [ utf8 encode-output [ current-directory get directory. ] with-string-writer string-lines harvest [ ftp-send ] each - ] with-output-stream - finish-directory ; + ] with-output-stream finish-directory ; -: transfer-outgoing-file ( path -- ) - [ - 150 - "Opening BINARY mode data connection for " - ] dip - [ - file-name - ] [ - file-info size>> number>string - "(" " bytes)." surround - ] bi " " glue append server-response ; - -: transfer-incoming-file ( path -- ) - [ 150 ] dip "Opening BINARY mode data connection for " prepend - server-response ; - -: finish-file-transfer ( -- ) - 226 "File send OK." server-response ; - -M: ftp-get service-command ( stream obj -- ) +M: ftp-get handle-passive-command ( stream obj -- ) [ path>> [ transfer-outgoing-file ] @@ -183,7 +191,7 @@ M: ftp-get service-command ( stream obj -- ) 3drop "File transfer failed" ftp-error ] recover ; -M: ftp-put service-command ( stream obj -- ) +M: ftp-put handle-passive-command ( stream obj -- ) [ path>> [ transfer-incoming-file ] @@ -193,165 +201,165 @@ M: ftp-put service-command ( stream obj -- ) 3drop "File transfer failed" ftp-error ] recover ; -: passive-loop ( server -- ) - [ - [ - |dispose - 30 seconds over set-timeout - accept drop &dispose - client get command-promise>> - 30 seconds ?promise-timeout - service-command - ] - [ client get f >>command-promise drop ] - [ drop ] cleanup - ] with-destructors ; +M: ftp-disconnect handle-passive-command ( stream obj -- ) + drop dispose ; + +: fulfill-client ( obj -- ) + client get extra-connection>> [ + fulfill + ] [ + drop + "Establish an active or passive connection first" ftp-error + ] if* ; + +: handle-STOR ( obj -- ) + tokenized>> second + dup can-serve-file? [ + fulfill-client + ] [ + drop + fulfill-client + ] if ; : handle-LIST ( obj -- ) - drop - [ [ ] dip fulfill ] if-command-promise ; - -: handle-SIZE ( obj -- ) - [ - [ 213 ] dip - tokenized>> second file-info size>> - number>string server-response + drop current-directory get + can-serve-directory? [ + fulfill-client ] [ - 2drop - 550 "Could not get file size" server-response - ] recover ; + fulfill-client + ] if ; + +: not-a-plain-file ( path -- ) + ": not a plain file." append ftp-error ; : handle-RETR ( obj -- ) - [ tokenized>> second swap fulfill ] - curry if-command-promise ; + tokenized>> second + dup can-serve-file? [ + fulfill-client + ] [ + not-a-plain-file + fulfill-client + ] if ; + +: handle-SIZE ( obj -- ) + tokenized>> second + dup can-serve-file? [ + file-info size>> number>string 213 server-response + ] [ + not-a-plain-file + ] if ; : expect-connection ( -- port ) + client get (>>extra-connection) random-local-server - client get >>command-promise drop [ [ passive-loop ] curry in-thread ] [ addr>> port>> ] bi ; : handle-PASV ( obj -- ) - drop client get passive >>mode drop - 221 + drop expect-connection port>bytes [ number>string ] bi@ "," glue "Entering Passive Mode (127,0,0,1," ")" surround - server-response ; + 221 server-response ; : handle-EPSV ( obj -- ) drop - client get command-promise>> [ - "You already have a passive stream" ftp-error - ] [ - 229 - expect-connection number>string - "Entering Extended Passive Mode (|||" "|)" surround - server-response - ] if ; + client get f >>extra-connection drop + expect-connection number>string + "Entering Extended Passive Mode (|||" "|)" surround + 229 server-response ; -! LPRT 6,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,242,186 -! : handle-LPRT ( obj -- ) tokenized>> "," split ; - -ERROR: not-a-directory ; -ERROR: no-permissions ; - -: handle-CWD ( obj -- ) - [ - tokenized>> second dup normalize-path - dup ftp-server-directory head? [ - no-permissions - ] unless - - file-info directory? [ - set-current-directory - 250 "Directory successully changed." server-response +: handle-MDTM ( obj -- ) + tokenized>> 1 swap ?nth [ + dup file-info dup directory? [ + drop not-a-plain-file ] [ - not-a-directory + nip + modified>> timestamp>mdtm + 213 server-response ] if ] [ - 2drop - 550 "Failed to change directory." server-response - ] recover ; + "" not-a-plain-file + ] if* ; -: unrecognized-command ( obj -- ) raw>> ftp-error ; +ERROR: not-a-directory ; +ERROR: no-directory-permissions ; -: handle-client-loop ( -- ) - readln - USE: prettyprint global [ dup . flush ] bind - [ >>raw ] - [ tokenize-command >>tokenized ] bi +: directory-change-success ( -- ) + "Directory successully changed." 250 server-response ; + +: directory-change-failed ( -- ) + "Failed to change directory." 553 server-response ; + +: handle-CWD ( obj -- ) + tokenized>> 1 swap ?nth [ + dup can-serve-directory? [ + set-current-directory + directory-change-success + ] [ + drop + directory-change-failed + ] if + ] [ + directory-change-success + ] if* ; + +: unrecognized-command ( obj -- ) + raw>> "Unrecognized command: " prepend ftp-error ; + +: client-loop-dispatch ( str/f -- ? ) dup tokenized>> first >upper { + { "QUIT" [ handle-QUIT f ] } { "USER" [ handle-USER t ] } { "PASS" [ handle-PASS t ] } - { "ACCT" [ drop "ACCT unimplemented" ftp-error t ] } - { "CWD" [ handle-CWD t ] } - ! { "XCWD" [ ] } - ! { "CDUP" [ ] } - ! { "SMNT" [ ] } - - ! { "REIN" [ drop client get reset-ftp-client t ] } - { "QUIT" [ handle-QUIT f ] } - - ! { "PORT" [ ] } ! TODO - { "PASV" [ handle-PASV t ] } - ! { "MODE" [ ] } - { "TYPE" [ handle-TYPE t ] } - ! { "STRU" [ ] } - - ! { "ALLO" [ ] } - ! { "REST" [ ] } - { "STOR" [ handle-STOR t ] } - ! { "STOU" [ ] } - { "RETR" [ handle-RETR t ] } - { "LIST" [ handle-LIST t ] } - { "SIZE" [ handle-SIZE t ] } - ! { "NLST" [ ] } - ! { "APPE" [ ] } - ! { "RNFR" [ ] } - ! { "RNTO" [ ] } - ! { "DELE" [ handle-DELE t ] } - ! { "RMD" [ handle-RMD t ] } - ! ! { "XRMD" [ handle-XRMD t ] } - ! { "MKD" [ handle-MKD t ] } - { "PWD" [ handle-PWD t ] } - ! { "ABOR" [ ] } - { "SYST" [ handle-SYST t ] } - ! { "STAT" [ ] } - ! { "HELP" [ ] } - - ! { "SITE" [ ] } - ! { "NOOP" [ ] } - - ! { "EPRT" [ handle-EPRT ] } - ! { "LPRT" [ handle-LPRT ] } + { "ACCT" [ drop "ACCT unimplemented" ftp-unimplemented t ] } + { "PWD" [ handle-PWD t ] } + { "TYPE" [ handle-TYPE t ] } + { "CWD" [ handle-CWD t ] } + { "PASV" [ handle-PASV t ] } { "EPSV" [ handle-EPSV t ] } - ! { "LPSV" [ drop handle-LPSV t ] } + { "LIST" [ handle-LIST t ] } + { "STOR" [ handle-STOR t ] } + { "RETR" [ handle-RETR t ] } + { "SIZE" [ handle-SIZE t ] } + { "MDTM" [ handle-MDTM t ] } [ drop unrecognized-command t ] - } case [ handle-client-loop ] when ; + } case ; -TUPLE: ftp-server < threaded-server ; +: read-command ( -- ftp-command/f ) + readln [ f ] [ ] if-empty ; + +: handle-client-loop ( -- ) + read-command [ + client-loop-dispatch + [ handle-client-loop ] when + ] when* ; + +: serve-directory ( server -- ) + serving-directory>> [ + send-banner + handle-client-loop + ] with-directory ; M: ftp-server handle-client* ( server -- ) - drop [ - ftp-server-directory [ - host-name client set - send-banner handle-client-loop - ] with-directory + "New client" \ handle-client* DEBUG log-message + ftp-client new client set + [ server set ] [ serve-directory ] bi ] with-destructors ; -: ( port -- server ) +: ( directory port -- server ) ftp-server new-threaded-server swap >>insecure + swap >>serving-directory "ftp.server" >>name 5 minutes >>timeout latin1 >>encoding ; -: ftpd ( port -- ) +: ftpd ( directory port -- ) start-server ; -: ftpd-main ( -- ) 2100 ftpd ; +: ftpd-main ( path -- ) 2100 ftpd ; MAIN: ftpd-main From 30e639ae39266a897fa28dcfcdf98cf746120889 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 15:29:06 -0600 Subject: [PATCH 29/36] add a couple unit tests to ftp --- basis/ftp/client/client.factor | 2 +- basis/ftp/ftp.factor | 4 --- basis/ftp/server/server-tests.factor | 50 ++++++++++++++++++++++++++++ basis/ftp/server/server.factor | 4 +-- 4 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 basis/ftp/server/server-tests.factor diff --git a/basis/ftp/client/client.factor b/basis/ftp/client/client.factor index ac21bb8f78..14877110d3 100644 --- a/basis/ftp/client/client.factor +++ b/basis/ftp/client/client.factor @@ -93,7 +93,7 @@ ERROR: ftp-error got expected ; : ensure-login ( url -- url ) dup username>> [ "anonymous" >>username - "ftp-client" >>password + "ftp-client@factorcode.org" >>password ] unless ; : >ftp-url ( url -- url' ) >url ensure-port ensure-login ; diff --git a/basis/ftp/ftp.factor b/basis/ftp/ftp.factor index 27eebc5946..eea98c0172 100644 --- a/basis/ftp/ftp.factor +++ b/basis/ftp/ftp.factor @@ -16,7 +16,3 @@ TUPLE: ftp-response n strings parsed ; over strings>> push ; : ftp-send ( string -- ) write "\r\n" write flush ; - -CONSTANT: ftp-ipv4 1 - -CONSTANT: ftp-ipv6 2 diff --git a/basis/ftp/server/server-tests.factor b/basis/ftp/server/server-tests.factor new file mode 100644 index 0000000000..d7d9d8384d --- /dev/null +++ b/basis/ftp/server/server-tests.factor @@ -0,0 +1,50 @@ +USING: calendar ftp.server io.encodings.ascii io.files +io.files.unique namespaces threads tools.test kernel +io.servers.connection ftp.client accessors urls +io.pathnames io.directories sequences fry ; +IN: ftp.server.tests + +: test-file-contents ( -- string ) + "Files are so boring anymore." ; + +: create-test-file ( -- path ) + test-file-contents + "ftp.server" "test" make-unique-file + [ ascii set-file-contents ] keep canonicalize-path ; + +: test-ftp-server ( quot -- ) + '[ + current-temporary-directory get 0 + + [ start-server* ] + [ + sockets>> first addr>> port>> + + swap >>port + "ftp" >>protocol + "localhost" >>host + create-test-file >>path + _ call + ] + [ stop-server ] tri + ] with-unique-directory drop ; inline + +[ t ] +[ + + [ + unique-directory [ + [ ftp-get ] [ path>> file-name ascii file-contents ] bi + ] with-directory + ] test-ftp-server test-file-contents = +] unit-test + +[ + + [ + "/" >>path + unique-directory [ + [ ftp-get ] [ path>> file-name ascii file-contents ] bi + ] with-directory + ] test-ftp-server test-file-contents = +] must-fail diff --git a/basis/ftp/server/server.factor b/basis/ftp/server/server.factor index ffe16b2f4c..5247b824fa 100644 --- a/basis/ftp/server/server.factor +++ b/basis/ftp/server/server.factor @@ -61,11 +61,9 @@ C: ftp-disconnect normalize-path server get serving-directory>> head? ; : can-serve-directory? ( path -- ? ) - canonicalize-path { [ exists? ] [ file-info directory? ] [ serving? ] } 1&& ; : can-serve-file? ( path -- ? ) - canonicalize-path { [ exists? ] [ file-info type>> +regular-file+ = ] @@ -351,7 +349,7 @@ M: ftp-server handle-client* ( server -- ) : ( directory port -- server ) ftp-server new-threaded-server swap >>insecure - swap >>serving-directory + swap canonicalize-path >>serving-directory "ftp.server" >>name 5 minutes >>timeout latin1 >>encoding ; From 1ed6c013a2adc8ce2fa2474ae0ec070e5047c017 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 15:49:18 -0600 Subject: [PATCH 30/36] call canonicalize-path when determining if we can serve a path --- basis/ftp/server/server.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/ftp/server/server.factor b/basis/ftp/server/server.factor index 5247b824fa..2eeeac714a 100644 --- a/basis/ftp/server/server.factor +++ b/basis/ftp/server/server.factor @@ -58,7 +58,7 @@ C: ftp-disconnect send-response ; : serving? ( path -- ? ) - normalize-path server get serving-directory>> head? ; + canonicalize-path server get serving-directory>> head? ; : can-serve-directory? ( path -- ? ) { [ exists? ] [ file-info directory? ] [ serving? ] } 1&& ; From b8445b3432c331ad693b4c953763e609ceea6ab1 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 15:51:03 -0600 Subject: [PATCH 31/36] remove dead code --- basis/ftp/server/server.factor | 6 ------ 1 file changed, 6 deletions(-) diff --git a/basis/ftp/server/server.factor b/basis/ftp/server/server.factor index 2eeeac714a..8438aae94e 100644 --- a/basis/ftp/server/server.factor +++ b/basis/ftp/server/server.factor @@ -70,14 +70,8 @@ C: ftp-disconnect [ serving? ] } 1&& ; -: can-serve? ( path -- ? ) - [ can-serve-file? ] [ can-serve-directory? ] bi or ; - : ftp-error ( string -- ) 500 server-response ; -: ftp-syntax-error ( string -- ) 501 server-response ; : ftp-unimplemented ( string -- ) 502 server-response ; -: ftp-file-not-available ( string -- ) 550 server-response ; -: ftp-illegal-file-name ( string -- ) 553 server-response ; : send-banner ( -- ) "Welcome to " host-name append 220 server-response ; From 91b4947e1eed69f07dbf34935725acced661a235 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 16:01:53 -0600 Subject: [PATCH 32/36] with-logging should not take a DEBUG level --- basis/io/servers/connection/connection.factor | 2 +- basis/io/servers/packet/packet.factor | 1 - basis/logging/insomniac/insomniac.factor | 2 +- basis/logging/logging-docs.factor | 2 +- basis/logging/logging-tests.factor | 2 +- basis/logging/logging.factor | 6 ++---- extra/spider/spider.factor | 2 +- 7 files changed, 7 insertions(+), 10 deletions(-) diff --git a/basis/io/servers/connection/connection.factor b/basis/io/servers/connection/connection.factor index 91fb3bfb37..589a50d2eb 100644 --- a/basis/io/servers/connection/connection.factor +++ b/basis/io/servers/connection/connection.factor @@ -117,7 +117,7 @@ M: threaded-server handle-client* handler>> call ; : (start-server) ( threaded-server -- ) init-server dup threaded-server [ - [ ] [ name>> ] [ log-level>> ] tri [ + [ ] [ name>> ] bi [ [ listen-on [ start-accept-loop ] parallel-each ] [ ready>> raise-flag ] bi diff --git a/basis/io/servers/packet/packet.factor b/basis/io/servers/packet/packet.factor index 3f092ab9f1..4edffa96b7 100644 --- a/basis/io/servers/packet/packet.factor +++ b/basis/io/servers/packet/packet.factor @@ -20,5 +20,4 @@ LOG: received-datagram NOTICE PRIVATE> : with-datagrams ( seq service quot -- ) - [ DEBUG ] dip '[ [ [ _ ] dip spawn-datagrams ] parallel-each ] with-logging ; inline diff --git a/basis/logging/insomniac/insomniac.factor b/basis/logging/insomniac/insomniac.factor index 935326da2d..91baae631f 100644 --- a/basis/logging/insomniac/insomniac.factor +++ b/basis/logging/insomniac/insomniac.factor @@ -30,7 +30,7 @@ SYMBOL: insomniac-recipients \ (email-log-report) NOTICE add-error-logging : email-log-report ( service word-names -- ) - "logging.insomniac" DEBUG [ (email-log-report) ] with-logging ; + "logging.insomniac" [ (email-log-report) ] with-logging ; : schedule-insomniac ( service word-names -- ) [ [ email-log-report ] assoc-each rotate-logs ] 2curry diff --git a/basis/logging/logging-docs.factor b/basis/logging/logging-docs.factor index 64956493c6..a4b3f3f019 100644 --- a/basis/logging/logging-docs.factor +++ b/basis/logging/logging-docs.factor @@ -94,7 +94,7 @@ HELP: close-logs { $description "Closes all open log streams. Subsequent logging will re-open the streams. This should be used before moving or deleting log files." } ; HELP: with-logging -{ $values { "service" "a log service name" } { "level" "a log level" } { "quot" quotation } } +{ $values { "service" "a log service name" } { "quot" quotation } } { $description "Calls the quotation a new dynamic scope where all logging calls more urgent than " { $link log-level } " are sent to the log file for " { $snippet "service" } "." } ; ARTICLE: "logging.rotation" "Log rotation" diff --git a/basis/logging/logging-tests.factor b/basis/logging/logging-tests.factor index 63eecc7319..796c8769fc 100644 --- a/basis/logging/logging-tests.factor +++ b/basis/logging/logging-tests.factor @@ -13,7 +13,7 @@ USING: tools.test logging math ; \ error-logging-test ERROR add-error-logging -"logging-test" DEBUG [ +"logging-test" [ [ 4 ] [ 1 3 input-logging-test ] unit-test [ 4 ] [ 1 3 output-logging-test ] unit-test diff --git a/basis/logging/logging.factor b/basis/logging/logging.factor index 496dae2c61..ff1baa4ebb 100644 --- a/basis/logging/logging.factor +++ b/basis/logging/logging.factor @@ -55,10 +55,8 @@ ERROR: bad-log-message-parameters msg word level ; : close-logs ( -- ) { } "close-logs" send-to-log-server ; -: with-logging ( service level quot -- ) - '[ - _ log-service [ _ log-level _ with-variable ] with-variable - ] call ; inline +: with-logging ( service quot -- ) + [ log-service ] dip with-variable ; inline ! Aspect-oriented programming idioms diff --git a/extra/spider/spider.factor b/extra/spider/spider.factor index 0f702d7d22..bd5b2668be 100644 --- a/extra/spider/spider.factor +++ b/extra/spider/spider.factor @@ -88,7 +88,7 @@ links processing-time timestamp ; PRIVATE> : run-spider ( spider -- spider ) - "spider" DEBUG [ + "spider" [ dup spider [ queue-initial-links [ todo>> ] [ max-depth>> ] bi From ddce0e0a107ffdb295b02363c553d562641b72b9 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Wed, 18 Feb 2009 16:57:20 -0600 Subject: [PATCH 33/36] change literals so that $ works with constants in same compilation unit --- extra/literals/literals-docs.factor | 8 ++++---- extra/literals/literals-tests.factor | 5 +++-- extra/literals/literals.factor | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/extra/literals/literals-docs.factor b/extra/literals/literals-docs.factor index ae25c75495..6525264f6a 100644 --- a/extra/literals/literals-docs.factor +++ b/extra/literals/literals-docs.factor @@ -1,19 +1,19 @@ ! Copyright (C) 2008 Joe Groff. ! See http://factorcode.org/license.txt for BSD license. -USING: help.markup help.syntax multiline ; +USING: help.markup help.syntax kernel multiline ; IN: literals HELP: $ { $syntax "$ word" } { $description "Executes " { $snippet "word" } " at parse time and adds the result(s) to the parser accumulator." } -{ $notes "Since " { $snippet "word" } " is executed at parse time, " { $snippet "$" } " cannot be used with words defined in the same compilation unit." } +{ $notes { $snippet "word" } "'s definition is looked up and " { $link call } "ed at parse time, so words that reference words in the current compilation unit cannot be used with " { $snippet "$" } "." } { $examples { $example <" USING: kernel literals prettyprint ; IN: scratchpad -<< : five 5 ; >> +CONSTANT: five 5 { $ five } . "> "{ 5 }" } @@ -30,7 +30,7 @@ IN: scratchpad HELP: $[ { $syntax "$[ code ]" } { $description "Calls " { $snippet "code" } " at parse time and adds the result(s) to the parser accumulator." } -{ $notes "Since " { $snippet "code" } " is executed at parse time, it cannot reference any words defined in the same compilation unit." } +{ $notes "Since " { $snippet "code" } " is " { $link call } "ed at parse time, it cannot reference any words defined in the same compilation unit." } { $examples { $example <" diff --git a/extra/literals/literals-tests.factor b/extra/literals/literals-tests.factor index 34ea4d6415..0e933d5209 100644 --- a/extra/literals/literals-tests.factor +++ b/extra/literals/literals-tests.factor @@ -2,11 +2,12 @@ USING: kernel literals math tools.test ; IN: literals.tests << -: five 5 ; -: seven-eleven 7 11 ; : six-six-six 6 6 6 ; >> +: five 5 ; +: seven-eleven 7 11 ; + [ { 5 } ] [ { $ five } ] unit-test [ { 7 11 } ] [ { $ seven-eleven } ] unit-test [ { 6 6 6 } ] [ { $ six-six-six } ] unit-test diff --git a/extra/literals/literals.factor b/extra/literals/literals.factor index 6df51a35ef..d3cfcaae23 100644 --- a/extra/literals/literals.factor +++ b/extra/literals/literals.factor @@ -1,6 +1,6 @@ ! (c) Joe Groff, see license for details -USING: continuations kernel parser words quotations vectors ; +USING: accessors continuations kernel parser words quotations vectors ; IN: literals -: $ scan-word [ execute ] curry with-datastack >vector ; parsing +: $ scan-word [ def>> call ] curry with-datastack >vector ; parsing : $[ \ ] parse-until >quotation with-datastack >vector ; parsing From 67d2da40404752979a9c07d75f0ba6c8aa84318b Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 16:59:23 -0600 Subject: [PATCH 34/36] set a default log level --- basis/logging/logging.factor | 2 ++ 1 file changed, 2 insertions(+) diff --git a/basis/logging/logging.factor b/basis/logging/logging.factor index ff1baa4ebb..e295960baa 100644 --- a/basis/logging/logging.factor +++ b/basis/logging/logging.factor @@ -11,6 +11,8 @@ SYMBOLS: DEBUG NOTICE WARNING ERROR CRITICAL ; SYMBOL: log-level +log-level [ DEBUG ] initialize + : log-levels ( -- assoc ) H{ { DEBUG 0 } From adb6b216832979de9e7af2a6a544b6e5c3b830d2 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 18 Feb 2009 17:25:58 -0600 Subject: [PATCH 35/36] fix load error --- basis/io/servers/packet/packet.factor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/basis/io/servers/packet/packet.factor b/basis/io/servers/packet/packet.factor index 4edffa96b7..2a346b4d13 100644 --- a/basis/io/servers/packet/packet.factor +++ b/basis/io/servers/packet/packet.factor @@ -1,6 +1,6 @@ USING: concurrency.combinators destructors fry -io.servers.datagram.private io.sockets kernel logging ; -IN: io.servers.datagram +io.sockets kernel logging ; +IN: io.servers.packet Date: Wed, 18 Feb 2009 21:13:46 -0600 Subject: [PATCH 36/36] fix load error --- extra/annotations/annotations-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/annotations/annotations-docs.factor b/extra/annotations/annotations-docs.factor index 1effdf4067..bf8aef3a07 100644 --- a/extra/annotations/annotations-docs.factor +++ b/extra/annotations/annotations-docs.factor @@ -10,7 +10,7 @@ IN: annotations PRIVATE> : $annotation ( element -- ) - P first + first [ "!" " your comment here" surround 1array $syntax ] [ [ "Treats the rest of the line after the exclamation point as a code annotation that can be looked up with the " \ $link ] dip comment-usage.-word 2array " word." 3array $description ] [ ": foo ( x y z -- w )\n !" " --w-ó()ò-w-- kilroy was here\n + * ;" surround 1array $unchecked-example ]