Adam | 3 Sep 2010 02:28
Picon

Fresh Windows 7 x64 bootstrap error.

On fresh installs of Windows 7 x64, the following error (including :c :r :s) will occur on the first bootstrap of Factor.  This error has also shown up on a Rackspace Win7 x64 Xen hosted VM, GigeNET Win7 x64 Xen hosted VM, VMware Player 3.1.1, and a fresh Win7 x64 installation on my netbook.

Once a restart is chosen to reload the failing vocab or the bootstrap process is re-ran, the error will not happen on subsequent bootstraps.

The below output is from adebf8cd in VMware and the netbook failed on the clean build e5e036c6 (8-29).

-------------------------------------------------------------------------------------------------
Loading resource:basis/io/pipes/windows/nt/nt.factor
Loading resource:basis/random/random.factor
Loading resource:basis/random/windows/windows.factor
Loading resource:basis/windows/advapi32/advapi32.factor
Loading resource:basis/random/mersenne-twister/mersenne-twister.factor
Loading vocab:bootstrap/bootstrap-error.factor
(U) Quotation: [ c-to-factor -> ]
    Word: c-to-factor
(U) Quotation: [
        2dup [
            ~quotation~ dip
            dup terminated?>> ~quotation~ ~quotation~ if
        ] 2dip -> rot [ 2drop ] [ wrong-values ] if
    ]
    Word: call-effect
(U) Quotation: [
        [ ~quotation~ dip dip ] dip -> dup terminated?>>
        [ 2drop f ]
        [ dup in>> length swap out>> length check-datastack ] if
    ]
(U) Quotation: [ swap [ call ] dip -> ]
    Word: dip
(U) Quotation: [ swap >c call -> c> drop ]
(U) Quotation: [
        nano-count default-image-name "output-image" set-global
        "math compiler threads help io tools ui ui.tools unicode handbook"
        "include" set-global "" "exclude" set-global
        strip-encodings (command-line) parse-command-line os wince?
        [ "windows.ce" require ] when os winnt?
        [ "windows.nt" require ] when
        "staging" get "deploy-vocab" get or
        [ "stage2: deployment mode" print ]
        [ "debugger" require "listener" require "none" require ] if
        load-components -> nano-count over -
        core-bootstrap-time set-global
        run-bootstrap-init f error set-global
        f original-error set-global f error-continuation set-global
        nano-count swap - bootstrap-time set-global
        print-report "deploy-vocab" get
        [ "tools.deploy.shaker" run ] [
            "staging" get ~quotation~ ~quotation~ if
            "output-image" get save-image-and-exit
        ] if
    ]
(U) Quotation: [ iterate-step -> iterate-next (each-integer) ]
(U) Quotation: [ swap [ 2dip ] dip -> ]
    Word: 3dip
(U) Quotation: [ swap [ dip ] dip -> ]
    Word: 2dip
(U) Quotation: [ swap [ call ] dip -> ]
    Word: dip
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(U) Quotation: [
        {
            "editors"
            "inspector"
            "bootstrap.image"
            "see"
            "tools.annotations"
            "tools.crossref"
            "tools.errors"
            "tools.deploy"
            "tools.destructors"
            "tools.disassembler"
            "tools.dispatch"
            "tools.memory"
            "tools.profiler"
            "tools.test"
            "tools.time"
            "tools.threads"
            "tools.deprecation"
            "vocabs.hierarchy"
            "vocabs.refresh"
            "vocabs.refresh.monitor"
        } [ require ] each -> { ~array~ ~array~ } cond
    ]
(U) Quotation: [ iterate-step -> iterate-next (each-integer) ]
(U) Quotation: [ swap [ 2dip ] dip -> ]
    Word: 3dip
(U) Quotation: [ swap [ dip ] dip -> ]
    Word: 2dip
(U) Quotation: [ swap [ call ] dip -> ]
    Word: dip
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: add-startup-hook
(U) Quotation: [ default-mersenne-twister -> random-generator set-global ]
(O) Word: default-mersenne-twister
(O) Word: random-integer
(O) Method: M\ windows-rng random-bytes*
(O) Word: windows-crypto-context
(O) Word: attempt-crypto-context
(U) Quotation: [
        -> B{
            112 114 105 109 105 116 105 118 101 95 97 108 105 101
            110 95 99 101 108 108 0
        } do-primitive
    ]
    Word: alien-cell
(U) Quotation: [
        63 special-object error-thread set-global
        continuation -> error-continuation set-global
        [ original-error set-global ] [ rethrow ] bi
    ]
resource:basis/tools/deploy/deploy.factor

3: USING: tools.deploy.backend system vocabs vocabs.loader kernel
                              ^
resource:basis/tools/deploy/backend/backend.factor

3: USING: namespaces make continuations.private kernel.private init
8: io.directories.hierarchy io.backend quotations io.launcher
                                                             ^
resource:basis/io/launcher/launcher.factor

3: USING: system kernel namespaces strings hashtables sequences assocs
6: io.backend io.timeouts io.pipes io.pipes.private io.encodings
                                  ^
resource:basis/io/pipes/windows/nt/nt.factor

3: USING: alien alien.c-types arrays destructors io io.backend.windows libc
6: random combinators accessors io.pipes io.ports literals ;
         ^
Type check error
Object: 1
Object type: fixnum
Expected type: alien

The following restarts are available:

:1      Load resource:basis/io/pipes/windows/nt/nt.factor again
:2      Load resource:basis/io/launcher/launcher.factor again
:3      Load resource:basis/tools/deploy/backend/backend.factor again
4 :res  Load resource:basis/tools/deploy/deploy.factor again
( scratchpad ) :c :r :s
(U) Quotation: [ c-to-factor -> ]
    Word: c-to-factor
(U) Quotation: [
        2dup [
            ~quotation~ dip
            dup terminated?>> ~quotation~ ~quotation~ if
        ] 2dip -> rot [ 2drop ] [ wrong-values ] if
    ]
    Word: call-effect
(U) Quotation: [
        [ ~quotation~ dip dip ] dip -> dup terminated?>>
        [ 2drop f ]
        [ dup in>> length swap out>> length check-datastack ] if
    ]
(U) Quotation: [ swap [ call ] dip -> ]
    Word: dip
(U) Quotation: [ swap >c call -> c> drop ]
(U) Quotation: [
        nano-count default-image-name "output-image" set-global
        "math compiler threads help io tools ui ui.tools unicode handbook"
        "include" set-global "" "exclude" set-global
        strip-encodings (command-line) parse-command-line os wince?
        [ "windows.ce" require ] when os winnt?
        [ "windows.nt" require ] when
        "staging" get "deploy-vocab" get or
        [ "stage2: deployment mode" print ]
        [ "debugger" require "listener" require "none" require ] if
        load-components -> nano-count over -
        core-bootstrap-time set-global
        run-bootstrap-init f error set-global
        f original-error set-global f error-continuation set-global
        nano-count swap - bootstrap-time set-global
        print-report "deploy-vocab" get
        [ "tools.deploy.shaker" run ] [
            "staging" get ~quotation~ ~quotation~ if
            "output-image" get save-image-and-exit
        ] if
    ]
(U) Quotation: [ iterate-step -> iterate-next (each-integer) ]
(U) Quotation: [ swap [ 2dip ] dip -> ]
    Word: 3dip
(U) Quotation: [ swap [ dip ] dip -> ]
    Word: 2dip
(U) Quotation: [ swap [ call ] dip -> ]
    Word: dip
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(U) Quotation: [
        {
            "editors"
            "inspector"
            "bootstrap.image"
            "see"
            "tools.annotations"
            "tools.crossref"
            "tools.errors"
            "tools.deploy"
            "tools.destructors"
            "tools.disassembler"
            "tools.dispatch"
            "tools.memory"
            "tools.profiler"
            "tools.test"
            "tools.time"
            "tools.threads"
            "tools.deprecation"
            "vocabs.hierarchy"
            "vocabs.refresh"
            "vocabs.refresh.monitor"
        } [ require ] each -> { ~array~ ~array~ } cond
    ]
(U) Quotation: [ iterate-step -> iterate-next (each-integer) ]
(U) Quotation: [ swap [ 2dip ] dip -> ]
    Word: 3dip
(U) Quotation: [ swap [ dip ] dip -> ]
    Word: 2dip
(U) Quotation: [ swap [ call ] dip -> ]
    Word: dip
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: parse-file
(O) Word: parse-stream
(O) Word: parse-fresh
(O) Word: (parse-lines)
(O) Word: (parse-until)
(O) Word: parse-step
(O) Word: execute-parsing
(O) Word: POSTPONE: USING:
(O) Word: use-vocab
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: require
(O) Method: M\ vocab (load-vocab)
(O) Word: load-source
(O) Word: add-startup-hook
(U) Quotation: [ default-mersenne-twister -> random-generator set-global ]
(O) Word: default-mersenne-twister
(O) Word: random-integer
(O) Method: M\ windows-rng random-bytes*
(O) Word: windows-crypto-context
(O) Word: attempt-crypto-context
(U) Quotation: [
        -> B{
            112 114 105 109 105 116 105 118 101 95 97 108 105 101
            110 95 99 101 108 108 0
        } do-primitive
    ]
    Word: alien-cell
(U) Quotation: [
        63 special-object error-thread set-global
        continuation -> error-continuation set-global
        [ original-error set-global ] [ rethrow ] bi
    ]
[ ~quotation~ ~quotation~ recover ]
(( -- ))
(( -- ))
{ }
[ ~array~ nth-unsafe "bootstrap." prepend require ]
10
5
[ ~array~ nth-unsafe require ]
20
7
f
";"
T{ manifest f f H{ ~array~ } ~vector~ ~vector~ ~vector~ }
"tools.deploy.backend"
T{ manifest f f H{ ~array~ } ~vector~ ~vector~ ~vector~ }
f
";"
T{ manifest f f H{ ~array~ ~array~ ~array~ ~array~ ~array~...
"io.launcher"
T{ manifest f f H{ ~array~ ~array~ ~array~ ~array~ ~array~...
f
";"
T{ manifest f f H{ ~array~ ~array~ ~array~ ~array~ ~array~...
"io.pipes"
T{ manifest f f H{ ~array~ ~array~ ~array~ ~array~ ~array~...
f
";"
T{ manifest f f H{ ~array~ ~array~ ~array~ ~array~ ~array~...
"random"
T{ manifest f f H{ ~array~ ~array~ ~array~ ~array~ ~array~...
V{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~...
"bootstrap.random"
[ default-mersenne-twister random-generator set-global ]
5
1
"Microsoft Enhanced Cryptographic Provider v1.0"
31140169025672
T{ vocab f "bootstrap.tools" H{ } f f f f }
T{ vocab f "bootstrap.tools" H{ } f f f f }
T{ vocab f "tools.deploy" H{ } f f f f }
T{ vocab f "tools.deploy" H{ } f f f f }
{ "! Copyright (C) 2007, 2010 Slava Pestov."...
V{ }
T{ vocab f "tools.deploy.backend" H{ } f f f f }
T{ vocab f "tools.deploy.backend" H{ } f f f f }
{ "! Copyright (C) 2007, 2010 Slava Pestov."...
V{ }
T{ vocab f "io.launcher" H{ } f f f f }
T{ vocab f "io.launcher" H{ } f f f f }
{ "! Copyright (C) 2008, 2010 Slava Pestov."...
V{ }
T{ vocab f "io.pipes" H{ ~array~ ~array~ ~array~ ~array~...
T{ vocab f "io.pipes" H{ ~array~ ~array~ ~array~ ~array~...
T{ vocab f "io.pipes.windows.nt" H{ } f f f f }
T{ vocab f "io.pipes.windows.nt" H{ } f f f f }
{ "! Copyright (C) 2007, 2008 Doug Coleman, Slava Pestov."...
V{ }
T{ vocab f "random" H{ ~array~ ~array~ ~array~ ~array~ ~array~...
T{ vocab f "random" H{ ~array~ ~array~ ~array~ ~array~ ~array~...
T{ vocab f "random.mersenne-twister" H{ ~array~ ~array~ } f f f...
T{ vocab f "random.mersenne-twister" H{ ~array~ ~array~ } f f f...
4294967296
5
{ "kernel-error" 3 6 1 }
-------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Factor-talk mailing list
Factor-talk@...
https://lists.sourceforge.net/lists/listinfo/factor-talk
Jon Harper | 12 Sep 2010 22:00
Picon
Gravatar

Re: Difference between MACRO: and define-transform

Hi,
extra/random.combinators hasn't been merged in. Should I change
something, or just keep it in my work/ directory ?
Jon

On Mon, Aug 23, 2010 at 9:40 PM, Jon Harper <jon.harper87@...> wrote:
> Hi,
> The random.combinators vocabulary (with tests and docs) is ready for review :
> git://github.com/jonenst/factor.git random-combinators
>
> Jon
>
>
>
> On Wed, Aug 18, 2010 at 4:29 AM, Slava Pestov <slava@...> wrote:
>> On Tue, Aug 17, 2010 at 10:20 AM, Jon Harper
<jon.harper87@...> wrote:
>>> Hi,
>>> I looked at the implementation of cond and case, and I saw the
>>> define-transform and "no-compile" word property. How is it different
>>> from the MACRO: construction ? Is user code supposed to use it at all
>>> ?
>>
>> Not really. define-transform lets you have a different definition for
>> the optimized and non-optimized usages of the word, so its only needed
>> for combinators such as 'cond' which are called a lot during
>> bootstrap. In this case you want to avoid generating the quotation
>> every time, so the non-optimized definition is used. For user code
>> which is always optimized, define-transform does not offer any
>> benefits.
>>
>>> Both solutions use a pcase>quot word (like cond and case) and then one
>>> uses MACRO: and the other uses define-transform. Both seem to work
>>> fine...
>>
>> Use MACRO:.
>>
>>> Also, maybe this combinator (and others) could ship with factor in
>>> extra/random/combinators ? I'm thinking of a variant where the
>>> probabilities are conditionnal (ie in the previous example, the first
>>> quotation would execute with 0.2 probability, then the second with
>>> 0.1, which makes an overall (1-0.2)*0.1 probability, and so on..).
>>> Also, variants of if, when and unless that take a probability instead
>>> of taking a boolean.
>>
>> Sure, if you make a vocab with docs and tests then I'll pull it in.
>>
>> Slava
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by
>>
>> Make an app they can't live without
>> Enter the BlackBerry Developer Challenge
>> http://p.sf.net/sfu/RIM-dev2dev
>> _______________________________________________
>> Factor-talk mailing list
>> Factor-talk@...
>> https://lists.sourceforge.net/lists/listinfo/factor-talk
>>
>

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing
http://p.sf.net/sfu/novell-sfdev2dev
Alexander J. Vondrak | 17 Sep 2010 02:47
Favicon

Worthwhile Thesis Idea?

Hey,

I'm a CS Master's student at Cal Poly Pomona focusing on programming language theory & implementation --
particularly optimizations.  Particularly optimization "frameworks": ways of simplifying
compilers' often repetitive, ad-hoc code into a single conceptual model.

This summer, I've been reading the source of Factor's compiler on again / off again.  I'm most of the way
through compiler/tree (I've read up through escape-analysis in depth), though I've given all of the code
many look-overs.  I wouldn't dare call myself an expert in Factor, but reading it has become pretty natural
and I'm not at that "I hear it's good for pushing stacks, but you can't do variables" phase. :)

This upcoming quarter (Fall 2010-11) I'm working on my thesis, and one paper keeps getting stuck in my mind:
Composing Dataflow Analyses and Transformations by Lerner, Grove, and Chambers (
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.6534 ).  It presents a unified way of
writing dataflow optimizations so they automatically compose together in mutually beneficial ways,
even though they're defined separately with no special knowledge of each other.  It's the stuff behind the
GHC guys' Hoopl framework, which is apparently being merged into their new backend:
http://www.cs.tufts.edu/~nr/pubs/dfopt-abstract.html (a newer version is linked there, too).

With their powers combined, they form! ...an idea my thesis advisor seemed receptive to.  Would
overhauling the dataflow analyses & optimizations of the Factor compiler be useful or interesting to you
guys, even just to see the results?  Or am I way off base here?  If so, any better ideas?  I'm finding polyhedral
optimization interesting, but if the guys at GCC and LLVM take such a long time coding their frameworks, I
can only imagine how terribly I'd do.  :P

Thanks for your feedback,

-- Alex Vondrak
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
Jörg Plewe | 17 Sep 2010 16:49
Picon

Tutorial on the webapp.blogs example?

Hi!

I'm a newbie and still quite confused. Is there a tutorial/example/documentation somewhere teaching me
how I can e.g. get the webapps.blogs to work?
Obviously I have to setup something for the database, but I just don't know how ....

Thank you,

- Jörg

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
Fabian Boucsein | 18 Sep 2010 09:42

Newbie question about handbook

Hello Factor mailing list,

i try to understand the definition of "if" in the factor handbook:
if ( ..a ? true: ( ..a -- ..b ) false: ( ..a -- ..b) -- ..b)

I read if ..a is true execute the true codeblock else the false block
which is quite clear but what does the last ..b stands for?
Thanks for your help.

Fabian

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
Anton Gorenko | 18 Sep 2010 10:29
Picon

Re: Newbie question about handbook

if '?' is t, not '..a'.
http://docs.factorcode.org/content/article-effects.html
http://docs.factorcode.org/content/article-effects-variables.html

'true' and 'false' quotations have same stack effects, they take 'a'
(a >= 0) values from the stack and leave 'b' (b >= 0) values on the
stack.
So '3 2 t [ + ] [ - ] if' is correct ('true' and 'false' have ( x x --
x ) stack effect, 'if' has ( x x ? true: ( x x --  x ) false: ( x x --
 x ) -- x ) stack effect in this case), but
'3 2 t [ + + ] [ - ] if', '3 t [ + ] [ - ] if', '3 2 t [ + ] [ 1 ]
if', etc. are incorrect.

2010/9/18 Fabian Boucsein <fabian.boucsein@...>:
> Hello Factor mailing list,
>
> i try to understand the definition of "if" in the factor handbook:
> if ( ..a ? true: ( ..a -- ..b ) false: ( ..a -- ..b) -- ..b)
>
> I read if ..a is true execute the true codeblock else the false block
> which is quite clear but what does the last ..b stands for?
> Thanks for your help.
>
> Fabian
>
>
> ------------------------------------------------------------------------------
> Start uncovering the many advantages of virtual appliances
> and start using them to simplify application deployment and
> accelerate your shift to cloud computing.
> http://p.sf.net/sfu/novell-sfdev2dev
> _______________________________________________
> Factor-talk mailing list
> Factor-talk@...
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
Fabian Boucsein | 18 Sep 2010 15:23

Re: Newbie question about handbook

Thanks for your answer Anton. But what does the ..a exactly mean?
It is a stack effect row variable? Is there a connection with the number of
"arguements" it stands for?

Greetings,
Fabian

Anton Gorenko schrieb:
> if '?' is t, not '..a'.
> http://docs.factorcode.org/content/article-effects.html
> http://docs.factorcode.org/content/article-effects-variables.html
>
> 'true' and 'false' quotations have same stack effects, they take 'a'
> (a >= 0) values from the stack and leave 'b' (b >= 0) values on the
> stack.
> So '3 2 t [ + ] [ - ] if' is correct ('true' and 'false' have ( x x --
> x ) stack effect, 'if' has ( x x ? true: ( x x --  x ) false: ( x x --
>  x ) -- x ) stack effect in this case), but
> '3 2 t [ + + ] [ - ] if', '3 t [ + ] [ - ] if', '3 2 t [ + ] [ 1 ]
> if', etc. are incorrect.
>
> 2010/9/18 Fabian Boucsein <fabian.boucsein@...>:
>   
>> Hello Factor mailing list,
>>
>> i try to understand the definition of "if" in the factor handbook:
>> if ( ..a ? true: ( ..a -- ..b ) false: ( ..a -- ..b) -- ..b)
>>
>> I read if ..a is true execute the true codeblock else the false block
>> which is quite clear but what does the last ..b stands for?
>> Thanks for your help.
>>
>> Fabian
>>
>>
>> ------------------------------------------------------------------------------
>> Start uncovering the many advantages of virtual appliances
>> and start using them to simplify application deployment and
>> accelerate your shift to cloud computing.
>> http://p.sf.net/sfu/novell-sfdev2dev
>> _______________________________________________
>> Factor-talk mailing list
>> Factor-talk@...
>> https://lists.sourceforge.net/lists/listinfo/factor-talk
>>
>>     
>
> ------------------------------------------------------------------------------
> Start uncovering the many advantages of virtual appliances
> and start using them to simplify application deployment and
> accelerate your shift to cloud computing.
> http://p.sf.net/sfu/novell-sfdev2dev
> _______________________________________________
> Factor-talk mailing list
> Factor-talk@...
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>
>   

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
Alexander J. Vondrak | 19 Sep 2010 01:36
Favicon

Re: Worthwhile Thesis Idea?

Okay, I've looked into the things discussed in the IRC session.

First off, my initial idea is ill-defined, not really useful, and Factor's current DFAs are okay, or at
least as efficient as they'd be in the Lerner/Grove/Chambers framework.  Even though it's a little
crufty, compiler.tree should be done away with someday anyhow.  But that rewrite would be a lot of work
(according to Daniel) and I'm not too excited about it as a project.

On the other hand, Slava discussed writing a GVN pass, so I was looking over some GVN stuff -- mostly skimming
the VanDrunen GVN-PRE thesis.  I found that really interesting; I think implementing some sort of GVN
would make for a good project (thesis or otherwise, though I think my advisor will like it).  If you're okay
with me working on it:

- We'd need the GC map refactoring first.  Would it be part of the project, or is it more of a "todo"?  Maybe I
should do it to get more familiar with the code?

- On that note, is there a recommended reading list of compiler.cfg vocabs to get up to speed?  I mean, I'd read
all I could, but maybe there's handful of important ones to make for a shorter adjustment period.

- Recommended non-code reading?  Papers, books, slides, whatever?

Thanks for the discussion,

-- Alex Vondrak
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
Slava Pestov | 19 Sep 2010 01:41

Re: Worthwhile Thesis Idea?

On Sat, Sep 18, 2010 at 4:36 PM, Alexander J. Vondrak
<ajvondrak@...> wrote:
> On the other hand, Slava discussed writing a GVN pass, so I was looking over some GVN stuff -- mostly
skimming the VanDrunen GVN-PRE thesis.  I found that really interesting; I think implementing some
sort of GVN would make for a good project (thesis or otherwise, though I think my advisor will like it).  If
you're okay with me working on it:

Great!

> - We'd need the GC map refactoring first.  Would it be part of the project, or is it more of a "todo"?  Maybe
I should do it to get more familiar with the code?

The changes I was describing to compiler.cfg construction are mostly
independent of a GVN pass. They will make GVN more effective though,
by exposing more values.

> - On that note, is there a recommended reading list of compiler.cfg vocabs to get up to speed?  I mean, I'd
read all I could, but maybe there's handful of important ones to make for a shorter adjustment period.

I'd say the four most important passes are:

compiler.cfg.value-numbering
compiler.cfg.representations
compiler.cfg.ssa.destruction
compiler.cfg.linear-scan

Slava

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
Jim mack | 19 Sep 2010 06:18

Re: Newbie question about handbook

The simplest way of describing the pure stack effects of if, for a situation like this:

t [  ] [  ] if

would be

( ? quot quot -- ) 

You could write
: example ( ? quot quot -- ) if ; inline
t [ ] [ ] example

( The idea of inline is beyond my ability to explain.  I add it, like a monkey, every time I see a compilation error like "Cannot apply “if” to an input parameter of a non-inline word")

Inside the quotation could be stuff that doesn't actually do anything to the stack.  I think of the syntax you're asking about as trying to be more visually descriptive for a new user, and it's making the point that the most common use case would be to transform some thing(s) that are on the stack, conditionally.  So, I think ..a could be thought of as "the precondition of the stack before if's parameters" and ..b could be the stack condition after either path.  This includes the idea of there being no stack as well.  The inner parenthetical groups describe the expected stack effect of each branch of condition execution, and try to explain that it transforms the stack.  This syntax is not trying to imply any comment about the depth of the stack.

Jim


On Sat, Sep 18, 2010 at 6:23 AM, Fabian Boucsein <fabian.boucsein-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:

Thanks for your answer Anton. But what does the ..a exactly mean?
It is a stack effect row variable? Is there a connection with the number of
"arguements" it stands for?

Greetings,
Fabian



Anton Gorenko schrieb:
> if '?' is t, not '..a'.
> http://docs.factorcode.org/content/article-effects.html
> http://docs.factorcode.org/content/article-effects-variables.html
>
> 'true' and 'false' quotations have same stack effects, they take 'a'
> (a >= 0) values from the stack and leave 'b' (b >= 0) values on the
> stack.
> So '3 2 t [ + ] [ - ] if' is correct ('true' and 'false' have ( x x --
> x ) stack effect, 'if' has ( x x ? true: ( x x --  x ) false: ( x x --
>  x ) -- x ) stack effect in this case), but
> '3 2 t [ + + ] [ - ] if', '3 t [ + ] [ - ] if', '3 2 t [ + ] [ 1 ]
> if', etc. are incorrect.
>
> 2010/9/18 Fabian Boucsein <fabian.boucsein-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>:
>
>> Hello Factor mailing list,
>>
>> i try to understand the definition of "if" in the factor handbook:
>> if ( ..a ? true: ( ..a -- ..b ) false: ( ..a -- ..b) -- ..b)
>>
>> I read if ..a is true execute the true codeblock else the false block
>> which is quite clear but what does the last ..b stands for?
>> Thanks for your help.
>>
>> Fabian
>>
>>
>> ------------------------------------------------------------------------------
>> Start uncovering the many advantages of virtual appliances
>> and start using them to simplify application deployment and
>> accelerate your shift to cloud computing.
>> http://p.sf.net/sfu/novell-sfdev2dev
>> _______________________________________________
>> Factor-talk mailing list
>> Factor-talk <at> lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/factor-talk
>>
>>
>
> ------------------------------------------------------------------------------
> Start uncovering the many advantages of virtual appliances
> and start using them to simplify application deployment and
> accelerate your shift to cloud computing.
> http://p.sf.net/sfu/novell-sfdev2dev
> _______________________________________________
> Factor-talk mailing list
> Factor-talk <at> lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>
>


------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Factor-talk mailing list
Factor-talk-5NWGOfrQmnd4wTydcyPnfg@public.gmane.orgceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk



--
Jim
"I'm for extending the working Medicare program for our seniors all the way back to contraception, so Americans can concentrate on living their lives without fear of changing a job, going bankrupt from deductibles or fighting HMO bureaucracy."
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Factor-talk mailing list
Factor-talk@...
https://lists.sourceforge.net/lists/listinfo/factor-talk

Gmane