diff --git a/extra/bubble-chamber/bubble-chamber-docs.factor b/extra/bubble-chamber/bubble-chamber-docs.factor new file mode 100644 index 0000000000..47331efd7e --- /dev/null +++ b/extra/bubble-chamber/bubble-chamber-docs.factor @@ -0,0 +1,102 @@ + +USING: help.syntax help.markup ; + +USING: bubble-chamber.particle.muon + bubble-chamber.particle.quark + bubble-chamber.particle.hadron + bubble-chamber.particle.axion ; + +IN: bubble-chamber + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +HELP: muon + + { $class-description + "The muon is a colorful particle with an entangled friend." + "It draws both itself and its horizontally symmetric partner." + "A high range of speed and almost no speed decay allow the" + "muon to reach the extents of the window, often forming rings" + "where theta has decayed but speed remains stable. The result" + "is color almost everywhere in the general direction of collision," + "stabilized into fuzzy rings." } ; + +HELP: quark + + { $class-description + "The quark draws as a translucent black. Their large numbers" + "create fields of blackness overwritten only by the glowing shadows of " + "Hadrons. " + "quarks are allowed to accelerate away with speed decay values above 1.0. " + "Each quark has an entangled friend. Both particles are drawn identically," + "mirrored along the y-axis." } ; + +HELP: hadron + + { $class-description + "Hadrons collide from totally random directions. " + "Those hadrons that do not exit the drawing area, " + "tend to stabilize into perfect circular orbits. " + "Each hadron draws with a slight glowing emboss. " + "The hadron itself is not drawn." } ; + +HELP: axion + + { $class-description + "The axion particle draws a bold black path. Axions exist " + "in a slightly higher dimension and as such are drawn with " + "elevated embossed shadows. Axions are quick to stabilize " + "and fall into single pixel orbits axions automatically " + "recollide themselves after stabilizing." } ; + +{ muon quark hadron axion } related-words + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +ARTICLE: "bubble-chamber" "Bubble Chamber" + + { $subsection "bubble-chamber-introduction" } + { $subsection "bubble-chamber-particles" } + { $subsection "bubble-chamber-author" } + { $subsection "bubble-chamber-running" } ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +ARTICLE: "bubble-chamber-introduction" "Introduction" + +"The Bubble Chamber is a generative painting system of imaginary " +"colliding particles. A single super-massive collision produces a " +"discrete universe of four particle types. Particles draw their " +"positions over time as pixel exposures. " ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +ARTICLE: "bubble-chamber-particles" "Particles" + +"Four types of particles exist. The behavior and graphic appearance of " +"each particle type is unique." + + { $subsection muon } + { $subsection quark } + { $subsection hadron } + { $subsection axion } ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +ARTICLE: "bubble-chamber-author" "Author" + + "Bubble Chamber was created by Jared Tarbell. " + "It was originally implemented in Processing. " + "It was ported to Factor by Eduardo Cavazos. " + "The original work is on display here: " + { $url + "http://www.complexification.net/gallery/machines/bubblechamber/" } ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +ARTICLE: "bubble-chamber-running" "How to use" + + "After you run the vocabulary, a window will appear. Click the " + "mouse in a random area to fire 11 particles of each type. " + "Another way to fire particles is to press the " + "spacebar. This fires all the particles." ; \ No newline at end of file diff --git a/extra/builder/builder.factor b/extra/builder/builder.factor index 0e3a794e24..d81b934f2c 100644 --- a/extra/builder/builder.factor +++ b/extra/builder/builder.factor @@ -166,7 +166,7 @@ SYMBOL: build-status "benchmarks" ".." copy-file-into - maybe-release + release ] with-file-writer diff --git a/extra/builder/common/common.factor b/extra/builder/common/common.factor index 6ebe1d625a..2fe2aa06ab 100644 --- a/extra/builder/common/common.factor +++ b/extra/builder/common/common.factor @@ -16,3 +16,4 @@ SYMBOL: builds-dir VAR: stamp +SYMBOL: upload-to-factorcode \ No newline at end of file diff --git a/extra/builder/release/archive/archive.factor b/extra/builder/release/archive/archive.factor new file mode 100644 index 0000000000..9b239da586 --- /dev/null +++ b/extra/builder/release/archive/archive.factor @@ -0,0 +1,58 @@ + +USING: kernel combinators system sequences io.files io.launcher prettyprint + builder.util + builder.common ; + +IN: builder.release.archive + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: base-name ( -- string ) + { "factor" [ os unparse ] cpu- stamp> } to-strings "-" join ; + +: extension ( -- extension ) + { + { [ os winnt? ] [ ".zip" ] } + { [ os macosx? ] [ ".dmg" ] } + { [ os unix? ] [ ".tar.gz" ] } + } + cond ; + +: archive-name ( -- string ) base-name extension append ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: windows-archive-cmd ( -- cmd ) { "zip" "-r" archive-name "factor" } ; + +: macosx-archive-cmd ( -- cmd ) + { "hdiutil" "create" + "-srcfolder" "factor" + "-fs" "HFS+" + "-volname" "factor" + archive-name } ; + +: unix-archive-cmd ( -- cmd ) { "tar" "-cvzf" archive-name "factor" } ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: archive-cmd ( -- cmd ) + { + { [ os windows? ] [ windows-archive-cmd ] } + { [ os macosx? ] [ macosx-archive-cmd ] } + { [ os unix? ] [ unix-archive-cmd ] } + } + cond ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: make-archive ( -- ) archive-cmd to-strings try-process ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: releases ( -- path ) + builds "releases" append-path + dup exists? not + [ dup make-directory ] + when ; + +: save-archive ( -- ) archive-name releases move-file-into ; \ No newline at end of file diff --git a/extra/builder/release/branch/branch.factor b/extra/builder/release/branch/branch.factor new file mode 100644 index 0000000000..838a74394b --- /dev/null +++ b/extra/builder/release/branch/branch.factor @@ -0,0 +1,40 @@ + +USING: kernel system namespaces sequences prettyprint io.files io.launcher + bootstrap.image + builder.util + builder.common ; + +IN: builder.release.branch + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: branch-name ( -- string ) "clean-" platform append ; + +: refspec ( -- string ) "master:" branch-name append ; + +: push-to-clean-branch ( -- ) + { "git" "push" "factorcode.org:/git/factor.git" refspec } + to-strings + try-process ; + +: upload-clean-image ( -- ) + { + "scp" + my-boot-image-name + "factorcode.org:/var/www/factorcode.org/newsite/images/clean" + } + to-strings + try-process ; + +: (update-clean-branch) ( -- ) + "factor" + [ + push-to-clean-branch + upload-clean-image + ] + with-directory ; + +: update-clean-branch ( -- ) + upload-to-factorcode get + [ update-clean-branch ] + when ; diff --git a/extra/builder/release/release.factor b/extra/builder/release/release.factor index 9b449a51c5..33e5edfbf9 100644 --- a/extra/builder/release/release.factor +++ b/extra/builder/release/release.factor @@ -1,144 +1,26 @@ USING: kernel system namespaces sequences splitting combinators - io io.files io.launcher prettyprint - bake combinators.cleave builder.common builder.util ; + io io.files io.launcher prettyprint bootstrap.image + bake combinators.cleave + builder.util + builder.common + builder.release.branch + builder.release.tidy + builder.release.archive + builder.release.upload ; IN: builder.release ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: releases ( -- path ) - builds "releases" append-path - dup exists? not - [ dup make-directory ] - when ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: common-files ( -- seq ) - { - "boot.x86.32.image" - "boot.x86.64.image" - "boot.macosx-ppc.image" - "boot.linux-ppc.image" - "vm" - "temp" - "logs" - ".git" - ".gitignore" - "Makefile" - "unmaintained" - "build-support" - } ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: cpu- ( -- cpu ) cpu unparse "." split "-" join ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: base-name ( -- string ) - { "factor" [ os unparse ] cpu- stamp> } to-strings "-" join ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: extension ( -- extension ) - { - { [ os winnt? ] [ ".zip" ] } - { [ os macosx? ] [ ".dmg" ] } - { [ os unix? ] [ ".tar.gz" ] } - } - cond ; - -: archive-name ( -- string ) base-name extension append ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: windows-archive-cmd ( -- cmd ) { "zip" "-r" archive-name "factor" } ; - -: macosx-archive-cmd ( -- cmd ) - { "hdiutil" "create" - "-srcfolder" "factor" - "-fs" "HFS+" - "-volname" "factor" - archive-name } ; - -: unix-archive-cmd ( -- cmd ) { "tar" "-cvzf" archive-name "factor" } ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: archive-cmd ( -- cmd ) - { - { [ os windows? ] [ windows-archive-cmd ] } - { [ os macosx? ] [ macosx-archive-cmd ] } - { [ os unix? ] [ unix-archive-cmd ] } - } - cond ; - -: make-archive ( -- ) archive-cmd to-strings try-process ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: remove-common-files ( -- ) - { "rm" "-rf" common-files } to-strings try-process ; - -: remove-factor-app ( -- ) - os macosx? not [ { "rm" "-rf" "Factor.app" } try-process ] when ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -SYMBOL: upload-to-factorcode - -: platform ( -- string ) { [ os unparse ] cpu- } to-strings "-" join ; - -: remote-location ( -- dest ) - "factorcode.org:/var/www/factorcode.org/newsite/downloads" - platform - append-path ; - -: upload ( -- ) - { "scp" archive-name remote-location } to-strings - [ "Error uploading binary to factorcode" print ] - run-or-bail ; - -: maybe-upload ( -- ) - upload-to-factorcode get - [ upload ] - when ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -! : release ( -- ) -! "factor" -! [ -! remove-factor-app -! remove-common-files -! ] -! with-directory -! make-archive -! archive-name releases move-file-into ; - -: release ( -- ) - "factor" - [ - remove-factor-app - remove-common-files - ] - with-directory +: (release) ( -- ) + update-clean-branch + tidy make-archive - maybe-upload - archive-name releases move-file-into ; + upload + save-archive ; -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +: clean-build? ( -- ? ) + { "load-everything-vocabs" "test-all-vocabs" } [ eval-file empty? ] all? ; -: release? ( -- ? ) - { - "./load-everything-vocabs" - "./test-all-vocabs" - } - [ eval-file empty? ] - all? ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: maybe-release ( -- ) release? [ release ] when ; \ No newline at end of file +: release ( -- ) clean-build? [ (release) ] when ; \ No newline at end of file diff --git a/extra/builder/release/tidy/tidy.factor b/extra/builder/release/tidy/tidy.factor new file mode 100644 index 0000000000..f8f27e75f2 --- /dev/null +++ b/extra/builder/release/tidy/tidy.factor @@ -0,0 +1,29 @@ + +USING: kernel system io.files io.launcher builder.util ; + +IN: builder.release.tidy + +: common-files ( -- seq ) + { + "boot.x86.32.image" + "boot.x86.64.image" + "boot.macosx-ppc.image" + "boot.linux-ppc.image" + "vm" + "temp" + "logs" + ".git" + ".gitignore" + "Makefile" + "unmaintained" + "build-support" + } ; + +: remove-common-files ( -- ) + { "rm" "-rf" common-files } to-strings try-process ; + +: remove-factor-app ( -- ) + os macosx? not [ { "rm" "-rf" "Factor.app" } try-process ] when ; + +: tidy ( -- ) + "factor" [ remove-factor-app remove-common-files ] with-directory ; diff --git a/extra/builder/release/upload/upload.factor b/extra/builder/release/upload/upload.factor new file mode 100644 index 0000000000..38f6dcb133 --- /dev/null +++ b/extra/builder/release/upload/upload.factor @@ -0,0 +1,24 @@ + +USING: kernel namespaces io io.files + builder.util + builder.common + builder.release.archive ; + +IN: builder.release.upload + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: remote-location ( -- dest ) + "factorcode.org:/var/www/factorcode.org/newsite/downloads" + platform + append-path ; + +: (upload) ( -- ) + { "scp" archive-name remote-location } to-strings + [ "Error uploading binary to factorcode" print ] + run-or-bail ; + +: upload ( -- ) + upload-to-factorcode get + [ (upload) ] + when ; diff --git a/extra/builder/util/util.factor b/extra/builder/util/util.factor index 92b9af41ef..e80d83e24c 100644 --- a/extra/builder/util/util.factor +++ b/extra/builder/util/util.factor @@ -2,6 +2,7 @@ USING: kernel words namespaces classes parser continuations io io.files io.launcher io.sockets math math.parser + system combinators sequences splitting quotations arrays strings tools.time sequences.deep accessors assocs.lib io.encodings.utf8 @@ -40,21 +41,6 @@ DEFER: to-strings ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! TUPLE: process* arguments stdin stdout stderr timeout ; - -! : <process*> process* construct-empty ; - -! : >desc ( process* -- desc ) -! H{ } clone -! over arguments>> [ +arguments+ swap put-at ] when* -! over stdin>> [ +stdin+ swap put-at ] when* -! over stdout>> [ +stdout+ swap put-at ] when* -! over stderr>> [ +stderr+ swap put-at ] when* -! over timeout>> [ +timeout+ swap put-at ] when* -! nip ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - : host-name* ( -- name ) host-name "." split first ; : datestamp ( -- string ) @@ -109,4 +95,6 @@ USE: prettyprint ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: failsafe ( quot -- ) [ drop ] recover ; +: cpu- ( -- cpu ) cpu unparse "." split "-" join ; + +: platform ( -- string ) { [ os unparse ] cpu- } to-strings "-" join ; \ No newline at end of file diff --git a/extra/newfx/newfx.factor b/extra/newfx/newfx.factor index 3df3b3ed05..6a191f0e07 100644 --- a/extra/newfx/newfx.factor +++ b/extra/newfx/newfx.factor @@ -74,6 +74,10 @@ METHOD: mutate-as { sequence object number } rot set-nth ; METHOD: at-mutate { number object sequence } swapd set-nth ; METHOD: as-mutate { object number sequence } set-nth ; +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! assoc ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!