Re: [Factor-talk] Talk about Factor

2015-01-29 Thread Michael Clagett
Hi Andrea --

I too need to give a talk on Factor here in the Philadelphia area in a couple 
of months.  I am not the old hand that you are looking for, but it occurred 
to me that it might be valuable for us to collaborate.  While we definitely 
would want to get some of the more seasoned Factorers to help validate anything 
that we put together, it occurred to me that we might be able to put our 
relative newbie-ness to good advantage in that we can focus on what a beginner  
would need to know.

Despite the fact that I've been interested in Factor for a number of years, I 
haven't actually done that much programming with it, as I have been immersed in 
my own Forth-derived platform.  But I always look at things like a presentation 
as an opportunity to go up the learning curve in a relatively focused way.

If you would be interested in collaborating, drop me a message at 
mclag...@hotmail.com. 

Sent from my iPhone

 On Jan 29, 2015, at 12:20 PM, Andrea Ferretti ferrettiand...@gmail.com 
 wrote:
 
 Hi,
 
 I will be giving an introductory talk about Factor at the LambdaCon in
 Bologna (Italy)
 
 http://www.lambdacon.org/
 
 Of course, I a not a Factor expert in any way, but I will make it
 clear and try to show the potentialities of Factor. I was thinking of
 following more or less parts of my tutorial
 
 http://andreaferretti.github.io/factor-tutorial/
 
 with some variations - a nice one would be the implementation of K-means here
 
 https://github.com/andreaferretti/kmeans/blob/master/factor/kmeans/kmeans.factor
 
 that I find quite neat :-)
 
 I was also planning to let people download Factor and follow
 interactively, which should be quite possible since Factor is rather
 succinct.
 
 I would like to gather some advice from more experienced factorers:
 what topics to choose? Do you have any experience in presenting Factor
 to a general audience? Any things that may appeal and capture the
 audience attention?
 
 --
 Dive into the World of Parallel Programming. The Go Parallel Website,
 sponsored by Intel and developed in partnership with Slashdot Media, is your
 hub for all things parallel software development, from weekly thought
 leadership blogs to news, videos, case studies, tutorials and more. Take a
 look and join the conversation now. http://goparallel.sourceforge.net/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk

--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Test Driven Development

2013-05-26 Thread Michael Clagett
I agree with Alexander, that this is a term that has come to represent a number 
of different things to different people.   One core idea is that you attempt to 
capture in some set of assertions what the correct expected outcome is of a 
particular unit of code, given a particular set of test inputs.   The test 
inputs and expected outputs become a kind of spec for the code unit that 
defines the view of it from the outside, and leaves internal implementation 
details completely unspecified.  This enables you to change the internal 
implementation of that code unit in any way you wish, so long as your changes 
continue to produce the expected outputs and continue to pass your test 
assertions.   This approach can be used in a number of ways:

* you can refactor your code to give it a more a better structure and more 
desirable qualities, as long it continues to conform to the test specification
* you can substitute one or more pieces of the implementation with something 
more useful for a particular task at hand (for example, a fake database access 
component that hard-codes a particular database query result and returns it to 
the caller without actually having to be connected to a database at all, 
thereby executing more quickly and in a more isolated environment, yet still 
producing the results needed by the code under test)
* in a similar fashion you can substitute implementation components with ones 
that add some sort of useful instrumentation to the real components
* more generally, if you structure your code relationships and dependencies in 
such a way that you pass in (or inject) into the depender a separate unit 
of code that fulfills a dependency, then you can substitute that 
dependency-fulfilling code with any of a number of substitutes that accomplish 
some of the goals mentioned above.   This technique is sometimes known as 
inversion of control, where a piece of code turns to something from the 
outside to tell it what it is depending on, instead of building that control 
information into the code itself.
* etc., etc., lots of useful techniques have been built upon these concepts

The idea is to make tests that provide inputs to the code under test and that 
test test expected outcomes as lightweight and fast as possible so that they 
can be run without cost on a regular basis.  Then as you modify tested code or 
other code that might have side effects affecting the tested code, you can 
automate the execution of your tests and have them tell you when you have 
broken something that used to function correctly.

Some folks write the tests first before they even write the code being tested, 
leveraging this idea of a test as a spec using that spec to guide the 
development of their code.   Others code first and write tests afterwards, as a 
longer-term guarantee that whatever subsequent changes are made to the code (or 
other code that can affect it) those changes have not in any way invalidated 
the correct functioning of the code that the test covers.People talk about 
percentage of code coverage as a gross measure of how strongly your code is 
protected by such guarantees.   It is not always practical or possible given 
other constraints to take the time to achieve 100% code coverage (and there are 
likely portions of your code that won't benefit from tests as much as others 
and for which it is probably a waste of effort to do so).   

Date: Sun, 26 May 2013 14:34:56 +0200
From: ddo...@gmail.com
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Test Driven Development

uhhm, i might not be *the* right person to answer this but:

test driven development (TDD) is a pretty open field in pretty much
anything. it mostly boils down to testing that when you give a function

some input you get the proper output.

methodology wise there's pretty much no certain paradigm to follow, or
rather they range from writing full coverage tests before actual code and
testing whole ranges of types vs not writing any tests at all.


what i just thought up as a neat methodology would be not writing tests
at all unless you encounter a bug and then try to locate the bug through
testing and fix it.

for clearer advice you might want to state your question more specifically.




On Sun, May 26, 2013 at 2:14 PM, graham telfer gakouse...@hotmail.com wrote:

Hi,



Test driven development completely baffles me.  Any advice on this topic and 
how to make effective use of Factor's tools?





--

Try New Relic Now  We'll Send You this Cool Shirt

New Relic is the only SaaS-based application performance monitoring service

that delivers powerful full stack analytics. Optimize and monitor your

browser, app,  servers with just a few lines of code. Try New Relic

and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may

___

Factor-talk mailing list


Re: [Factor-talk] Test Driven Development

2013-05-26 Thread Michael Clagett
Yes, it's true that the term TDD originated with Kent Beck and the Extreme 
Programming crowd and that the narrower, more precise meaning that you are 
favoring is what was intended by these folks.  

But test-first is not the only mechanism available to making testing central to 
development, and it is this centrality that I take to be what Test-Driven is 
all about.  So in this broader meaning, which granted is not necessarily what 
the XP folks had in mind, the ability to and the intention to test drives the 
entire design and development process.  It is a natural extension of at least 
part of what the XP folks were promoting, but with a nod to some of the 
constraining realities of a typical modern development environment, where a 
test-first mentality is often not shared by all the participants who would need 
to embrace it for it to be practiced effectively by a wider development group.

Use of design techniques such as dependency inversion, single responsibility, 
and the other SOLID principles all help build code that is extremely testable 
whether you happen to do it before or after coding and a testing mindset drives 
the entire development process.  So take your pick whether you wish to embrace 
a narrower or wider meaning of the term.  But they do both exist.

Sent from my iPad

On May 26, 2013, at 11:31 AM, William Tanksley, Jr wtanksle...@gmail.com 
wrote:

 Michael Clagett mclag...@hotmail.com wrote:
 I agree with Alexander, that this is a term that has come to represent a
 number of different things to different people.
 
 I don't think that's a good answer. Yes, some people have used Test
 Driven Development to refer to their own personal process that happens
 to use tests; but TDD was originally developed as a component of
 Extreme Programming, and as such there is a clear definition. TDD is
 the subset of XP that can be practiced by a solo programmer.
 
 Before I discuss this, there's an important question: are there any
 test frameworks for J?
 
 Some folks write the tests first before they even write the code being
 tested, leveraging this idea of a test as a spec using that spec to guide
 the development of their code.
 
 That's part of TDD -- without test-first, the development isn't driven
 by the tests, and there's no point in using the name. The most
 essential part of TDD is that you should NOT write a single line of
 code that isn't required in order to make a _failing_ test pass. So in
 order to add a new feature, you start by writing a test that you
 expect to fail -- but you expect to be able to make pass easily. Run
 the test and make sure it fails! Don't skip that step -- better
 programmers than you have been fooled by their own code. Then write
 just enough code to make it pass, and rerun your tests to confirm that
 they do pass. Repeat as needed.
 
 That's the essential skeleton of TDD. There's some judgement involved,
 and guidance to help you decide where to start; there are also
 automated test runners to help you run your test suite more frequently
 (as yours tests get bigger it gets harder to run them with EVERY
 little change). Those put meat on the bones.
 
 -Wm
 
 --
 Try New Relic Now  We'll Send You this Cool Shirt
 New Relic is the only SaaS-based application performance monitoring service 
 that delivers powerful full stack analytics. Optimize and monitor your
 browser, app,  servers with just a few lines of code. Try New Relic
 and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk

--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] embedding factor

2012-11-30 Thread Michael Clagett
Also interested in this.


Sent from my iPhone

On Nov 30, 2012, at 3:25 PM, Naveen Garg naveen.g...@gmail.com wrote:

 Hey guys, 
 I am playing around with factor again, and getting some useful work done.
 I am trying to use factor embedded...
 Unfortunately, the function init_factor_from_args that is mentioned in the 
 documentation is no longer in the source...
 There is a new function: start_standalone_factor in master.hpp.
 Has anyone used it successfully to embed factor ? 
 Thanks,
 Naveen
 --
 Keep yourself connected to Go Parallel: 
 TUNE You got it built. Now make it sing. Tune shows you how.
 http://goparallel.sourceforge.net
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Keep yourself connected to Go Parallel: 
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Keep yourself connected to Go Parallel: 
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Comments on 'Your First Program

2012-08-31 Thread Michael Clagett
Just thought I would mention that there is no Ctrl key on the Mac, so this 
change might not be so good for the Mac folks.

Sent from my iPhone

On Aug 31, 2012, at 6:47 PM, John Benediktsson mrj...@gmail.com wrote:

 Hi Mike,
 
 Great input, thanks!  A few questions -
  
 'Writing some logic in your first program'
 After it says 'Place this definition at the end of your source file.' I 
 suggest adding: 'Note that a space is significant in Factor.'
 
 What exactly are you trying to communicate with this -- that we require 
 spaces to tokenize?  Multiple spaces are treated the same as a single space, 
 indentation doesn't matter (although tabs are disallowed as blank characters).
  
 Where it says: 'Enter dup in the listener's input area, and press C+h.'
 This didn't work, so I wondered what C+h actually meant. I have never seen 
 Ctrl and Alt shortened to C and A before.  It turned out that I had to 
 highlight dup, so I suggest replace the sentence by:
 
 'Enter dup in the listener's input area, highlight it, then press Ctrl+h.'
 
 You can also position your cursor on or immediately after the word you want 
 to Ctrl+h.
  
 Best,
 John.
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Comments on 'Your First Program

2012-08-31 Thread Michael Clagett

I just meant that it's not called control, it's called command.  So you could 
probably get by with something like Ctrl(Cmd)-C.  Or Cmd(Ctrl)-C, if you favor 
Macs.  Or you could stick with the C-c and just explain somewhere at the top 
that on a PC that means Control and on a Mac it means Command.  Not a big deal, 
just thought you might want to make it completely clear to everyone. 
  Date: Fri, 31 Aug 2012 17:39:49 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Comments on 'Your First Program
 
 On Fri, Aug 31, 2012 at 5:19 PM, Michael Clagett mclag...@hotmail.com wrote:
  Just thought I would mention that there is no Ctrl key on the Mac, so this
  change might not be so good for the Mac folks.
 
 Yes, there is. (Unless you mean the original Mac 128k and 512k, which
 Factor does not yet support.)
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Comments on 'Your First Program

2012-08-31 Thread Michael Clagett

Okay, never mind.   Not being a Mac guy, I must not understand it well enough.  
 But on my wife's and daughter's MacBook Pros I usually find that Command + 
some key is roughly equivalent to Ctrl + the same key on the PC.  Never noticed 
that there was also a Ctrl key.  Sorry for the noise.
  Date: Fri, 31 Aug 2012 18:29:35 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Comments on 'Your First Program
 
 On Fri, Aug 31, 2012 at 6:25 PM, Michael Clagett mclag...@hotmail.com wrote:
  I just meant that it's not called control, it's called command.  So you
  could probably get by with something like Ctrl(Cmd)-C.  Or Cmd(Ctrl)-C, if
  you favor Macs.  Or you could stick with the C-c and just explain somewhere
  at the top that on a PC that means Control and on a Mac it means Command.
  Not a big deal, just thought you might want to make it completely clear to
  everyone.
 
 Ctrl and Cmd are different keys.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


[Factor-talk] Quick Question For Chris Double

2012-08-24 Thread Michael Clagett

Chris -- I'm spending some time going back through various key bloggers' 
contributions and am working through some of yours at the moment.  Back in 
December of 2006 in one of your articles on Parser Combinators you reference a 
Chapter 5 on Parser Combinators from some larger work.  This is a nice article 
and it leads to wonder what the source is that it is taken from and whether the 
surrounding chapters are any good and worth reading as well. Your thoughts? 
Mike--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Quick Question For Chris Double

2012-08-24 Thread Michael Clagett
Thanks much.  In this age of erroneous credit reports, that never 
disappearing aspect of the web is definitely a double-edged sword.

Sent from my iPhone

On Aug 24, 2012, at 9:41 AM, Chris Double chris.dou...@double.co.nz wrote:

 On Fri, Aug 24, 2012 at 11:29 PM, Michael Clagett mclag...@hotmail.com 
 wrote:
 Back in December of 2006 in one of your articles on Parser Combinators you 
 reference
 a Chapter 5 on Parser Combinators from some larger work.  This is a nice
 article and it leads to wonder what the source is that it is taken from and
 whether the surrounding chapters are any good and worth reading as well.
 
 I that that was this chapter:
 
 http://www.bluishcoder.co.nz/II.05.ParserCombinators.pdf
 
 It was from Part II of a book on the Clean programming language.
 Unfortunately it seems to no longer be available according to:
 
 http://wiki.clean.cs.ru.nl/Functional_Programming_in_Clean
 
 Luckily it's rare for things to disappear completely from the net:
 
 http://www.mmnt.net/db/0/0/ftp.cs.kun.nl/pub/CSI/SoftwEng.FunctLang/papers/cleanbook
 
 The case studies are a good read.
 
 Chris.
 -- 
 http://www.bluishcoder.co.nz
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Is there a Factor.js ?

2012-08-23 Thread Michael Clagett

John -- Couldn't resist chiming in here.  Of course Factor is portable, open 
source, and reliable.  These are three of its strongest attributes.  But the 
DLL version of it nothwithstanding, it is such an attractive language from a 
language standpoint that it leads one to want to have it where one is already 
working -- not just as an alternative.   Thus the genesis of my (admittedly 
expansive) vision of integrating it into the environment I am building.   
Chances are I'll die before that ever comes to anything.  But a more general 
benefit to the wider community would be eventually to have Factor integrated 
into some of the development environments that folks are already using on a 
day-in, day-out.   That probably means a reasonably smooth integration with 
non-Factor runtimes like the JVM or the CLR and the code and libraries that sit 
on top of them, as well as programming environments like Eclipse and 
VisualStudio. Now I understand how wild-eyed and future this is.  The 
language after all is a labor of love from a dedicated community that just 
happens to have a lot of good taste, but finite resources.  And it hasn't even 
reached 1.0 maturity yet, so there's much to be done before such a wider vision 
materializes.  So please do not misunderstand; this is not in any way a 
complaint or criticism -- nor even a request, because, you know, that's just 
not realistic.  It is, however, a hope.  That some day this fabulous language 
can be brought into mainstream environments where it's power can be put to 
really widespread use.  Granted, I'm an enterprise development manager by trade 
during the day, so maybe this is just my bias.  But wishing and hoping costs 
nothing. Best,
 MikeFrom: mrj...@gmail.com
Date: Wed, 22 Aug 2012 21:04:00 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Is there a Factor.js ?

There is a Factor Playground implemented in Javascript:
http://personal.inet.fi/koti/egaga/jsfactor/playground.html


It does not work with Factor's extensive library, however.
Its not worth getting into a philosophical discussion about Javascript, but I 
would note that Factor is portable (linux, mac, windows), open source (bsd 
license), and reliable (extensive library and test suites).


Best,John.

On Wed, Aug 22, 2012 at 7:44 PM, H.C. Chen hcchen5...@gmail.com wrote:


I tried to find factor.js for a while, nothing found so far.
What in my mind is the Processing programming language established on 
JavaScript.

Include Processing.js into your .html turns it into processing aware.


 script src=processing-1.3.6.js  /script  
Refer to http://processingjs.org/  




We have Forth.js too. It run under Windows DOS box JScript interpreter. Like 
this: cscript.exe jeforth.js 



OKTo work in a shell is very useful.
The reason I like anything.JS is the portability, open source, and reliable.

--

Live Security Virtual Conference

Exclusive live event will cover all the ways today's security and

threat landscape has changed and how IT managers can respond. Discussions

will include endpoint security, mobile security and the latest in malware

threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___

Factor-talk mailing list

Factor-talk@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/factor-talk





--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Is there a Factor.js ?

2012-08-23 Thread Michael Clagett
That, I would guess, is a result of its being implemented in C#.  But what you 
lose at that point is the ability for the language to be used outside of the 
CLR and the extreme portability of something like Factor.  What I'm envisioning 
is something closer to Microsoft's C++, which now has built-in support for 
generating MSIL, while still remaining completely viable on a native code 
platform.  Such a capability for Factor (with the ability to generate JVM byte 
code as well) would allow Factor to act as a DSL layer above real-world code 
bases that organizations are always going to be using for a significant portion 
of their development.

Sent from my iPhone

On Aug 23, 2012, at 10:51 AM, Naveen Garg naveen.g...@gmail.com wrote:

  smooth integration with non-Factor runtimes like the JVM or the CLR
 Have a look at cat which runs on the CLR: 
 http://www.cat-language.com/intro.html  .
 
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Is there a Factor.js ?

2012-08-23 Thread Michael Clagett
Yes.  In fact that is how I'm intending to target the CLR and JVM in my own 
environment -- whether I successfully implement the ability to use Factor (the 
language) inside my platform or not.   I was envisioning something like a 
combination of direct byte code generation (either MSIL or JVM byte code) 
together with whatever programmatic facilities are necessary for fixing up 
metadata tokens, invoking the respective jit compilers and the like.  This 
could just as easily be done from the existing Factor environment as any custom 
environment I manage to construct and in a perfect world Factor code created in 
either environment would compile and execute in the other just fine.

You Factor guru types might be scratching your heads and wondering why on earth 
I would want to reproduce the factor booting mechanism in my own environment 
and build it on top of my own foundations instead of just using what Slava has 
already put so much work into.  The answer is that while I'm not sure that this 
will be necessary (i might be able to get away with the DLL-ized version of 
Factor itself; I'm in major research mode about it as we speak), I suspect I 
may need to roll my own in order to integrate at as deep a level as I need with 
other language facilities I already have in place.

That's as much as I'm going to say about it, because I don't want to commandeer 
the FactorCode.org airwaves to talk about my stuff.  But whatever I end up 
doing, I do expect to give back to the community in the way of documentation of 
what I learn along the way.

Sent from my iPhone

On Aug 23, 2012, at 1:42 PM, Joe Groff arc...@gmail.com wrote:

 On Thu, Aug 23, 2012 at 11:46 AM, Michael Clagett mclag...@hotmail.com 
 wrote:
 That, I would guess, is a result of its being implemented in C#.  But what
 you lose at that point is the ability for the language to be used outside of
 the CLR and the extreme portability of something like Factor.  What I'm
 envisioning is something closer to Microsoft's C++, which now has built-in
 support for generating MSIL, while still remaining completely viable on a
 native code platform.  Such a capability for Factor (with the ability to
 generate JVM byte code as well) would allow Factor to act as a DSL layer
 above real-world code bases that organizations are always going to be using
 for a significant portion of their development.
 
 The JVM and CLR both have native code interfaces a Factor bridge could
 take advantage of. I think that would be a more realistic avenue
 toward interfacing with those platforms than rearchitecting Factor to
 target the JVM or CLR directly.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-17 Thread Michael Clagett

: pic-tail-reg ( -- reg ) EDX ;
//stack pointer // ?: stack-reg ( -- reg ) ESP ;
// stack frame pointer: frame-reg ( -- reg ) EBP ;
// virtual machine object base: vm-reg ( -- reg ) EBX ;
: ctx-reg ( -- reg ) EBP ;
// non-volatile registers  -- these would be registers needing to be preserved 
(and that callers can count on being preserved)?: nv-regs ( -- seq ) { ESI EDI 
EBX } ;
// volatile registers -- these would be registers one is free to use (and that 
callers cannot count on being preserved)?: volatile-regs ( -- seq ) { EAX ECX 
EDX } ;
// ?: nv-reg ( -- reg ) ESI ;
// ?: ds-reg ( -- reg ) ESI ;
// ?: rs-reg ( -- reg ) EDI ;
// ?: link-reg ( -- reg ) EBX ; Would anybody be able to validate 
assumptions articulated above and fill in missing pieces.  This is good 
foundational knowledge to operate in general with.
 From: mclag...@hotmail.com
Date: Thu, 16 Aug 2012 13:15:48 -0400
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Great, thanks.

Sent from my iPhone
On Aug 16, 2012, at 1:11 PM, John Benediktsson mrj...@gmail.com wrote:

 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
I'm getting the slot named array which is at offset 4 (and then declaring 
that to be an array, so as to disable some of the type safety checks)?   


Yes, the hashtable code is written at a bit lower level and thus maybe a little 
harder to read than one might normally write in Factor since it is one of the 
building blocks that everything is built upon.  It is also possible that some 
of the compiler optimizations that have been written in the last couple of 
years make some of those declarations unnecessary, although I'd have to look 
into it more to know for sure.


Also, due to the bootstrapping mechanism, some of the higher level language 
constructs like locals and fry quotations are not available yet.  That is 
something we hope to fix at some future point.

 Here it says slot takes two incoming values:  an obj and a non-negative 
fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
there are only three slots listed, but it does say that the slot named array 
is at offset 4.   Is it this offset number that is being specified by the m 
parameter?  And thus is the array I am seeing in my original description the 
contents of the array slot of the hashtable that was originally on the stack? 
  That makes sense to me.   And the fact that the array is 128 slots long 
(allowing flattened representation of 64 key-value pairs) just means that the 
underlying array in the hashtable has 64 buckets.  Is this a correct 
interpretation.  If it is, it makes sense that the actual 26 values stored in 
the hash table would be dispersed throught the 64 buckets, because this is what 
a hashtable does.


Yes, exactly!  The slot-spec tuple provides a generic description of what is 
to be found in this case at offset 4.  

Best,

John.
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. 
http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

--

Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-17 Thread Michael Clagett

A few more: // ?: shift-arg ( -- reg ) ECX ;
// ?: div-arg ( -- reg ) EAX ;
// ?: mod-arg ( -- reg ) EDX ;
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 17 Aug 2012 14:03:30 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





// ?
: pic-tail-reg ( -- reg ) EDX ;


// stack pointer
: stack-reg ( -- reg ) ESP ;


// stack frame pointer
: frame-reg ( -- reg ) EBP ;


// virtual machine object base
: vm-reg ( -- reg ) EBX ;


: ctx-reg ( -- reg ) EBP ;


// non-volatile registers  -- these would be registers needing to be preserved 
(and that callers can count on being preserved)?
: nv-regs ( -- seq ) { ESI EDI EBX } ;


// volatile registers -- these would be registers one is free to use (and that 
callers cannot count on being preserved)?
: volatile-regs ( -- seq ) { EAX ECX EDX } ;


// ?
: nv-reg ( -- reg ) ESI ;


// ?
: ds-reg ( -- reg ) ESI ;


// ?
: rs-reg ( -- reg ) EDI ;


// ?
: link-reg ( -- reg ) EBX ;
 
Would anybody be able to validate assumptions articulated above and fill in 
missing pieces.  This is good foundational knowledge to operate in general with.
 
From: mclag...@hotmail.com
Date: Thu, 16 Aug 2012 13:15:48 -0400
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Great, thanks.

Sent from my iPhone
On Aug 16, 2012, at 1:11 PM, John Benediktsson mrj...@gmail.com wrote:

 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
I'm getting the slot named array which is at offset 4 (and then declaring 
that to be an array, so as to disable some of the type safety checks)?   


Yes, the hashtable code is written at a bit lower level and thus maybe a little 
harder to read than one might normally write in Factor since it is one of the 
building blocks that everything is built upon.  It is also possible that some 
of the compiler optimizations that have been written in the last couple of 
years make some of those declarations unnecessary, although I'd have to look 
into it more to know for sure.


Also, due to the bootstrapping mechanism, some of the higher level language 
constructs like locals and fry quotations are not available yet.  That is 
something we hope to fix at some future point.

 Here it says slot takes two incoming values:  an obj and a non-negative 
fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
there are only three slots listed, but it does say that the slot named array 
is at offset 4.   Is it this offset number that is being specified by the m 
parameter?  And thus is the array I am seeing in my original description the 
contents of the array slot of the hashtable that was originally on the stack? 
  That makes sense to me.   And the fact that the array is 128 slots long 
(allowing flattened representation of 64 key-value pairs) just means that the 
underlying array in the hashtable has 64 buckets.  Is this a correct 
interpretation.  If it is, it makes sense that the actual 26 values stored in 
the hash table would be dispersed throught the 64 buckets, because this is what 
a hashtable does.


Yes, exactly!  The slot-spec tuple provides a generic description of what is 
to be found in this case at offset 4.  

Best,

John.
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. 
http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

--

Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-17 Thread Michael Clagett

Thank you Alex.  Seeing the polymorphic inline caching reference makes me 
realize that I really need to go back and reread Slava's (et. al) various blogs 
that have been produced through the years.  I read them all once, but that was 
a couple years ago -- not knowing what I know now.   This should help me not 
revisit ground in this forum that has already been documented elsewhere.   A 
bit more patience, everybody please, while I work out an effective (and 
self-sufficient) internals exploration strategy.
  From: ajvond...@csupomona.edu
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 17 Aug 2012 08:46:46 -0700
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 pic-tail-reg = polymorphic inline cache tail call register
 
 ds-reg = data stack register
 
 rs-reg = retain stack register
 
 nv-reg: might help to see 
 https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L14
 
 link-reg: only place it seems to be used is 
 https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L49
 
 shift-arg, div-arg, mod-arg: seem to be used in x86 bootstrapping for holding 
 arithmetic arguments; e.g., 
 https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L561
 
 That's as much as I can gather from a glance,
 --Alex Vondrak
 
 
 From: Michael Clagett [mclag...@hotmail.com]
 Sent: Friday, August 17, 2012 7:08 AM
 To: Factor-Talk
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 A few more:
 
 // ?
 : shift-arg ( -- reg ) ECX ;
 
 // ?
 : div-arg ( -- reg ) EAX ;
 
 // ?
 : mod-arg ( -- reg ) EDX ;
 
 
 
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 17 Aug 2012 14:03:30 +
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 // ?
 : pic-tail-reg ( -- reg ) EDX ;
 
 // stack pointer
 : stack-reg ( -- reg ) ESP ;
 
 // stack frame pointer
 : frame-reg ( -- reg ) EBP ;
 
 // virtual machine object base
 : vm-reg ( -- reg ) EBX ;
 
 : ctx-reg ( -- reg ) EBP ;
 
 // non-volatile registers  -- these would be registers needing to be 
 preserved (and that callers can count on being preserved)?
 : nv-regs ( -- seq ) { ESI EDI EBX } ;
 
 // volatile registers -- these would be registers one is free to use (and 
 that callers cannot count on being preserved)?
 : volatile-regs ( -- seq ) { EAX ECX EDX } ;
 
 // ?
 : nv-reg ( -- reg ) ESI ;
 
 // ?
 : ds-reg ( -- reg ) ESI ;
 
 // ?
 : rs-reg ( -- reg ) EDI ;
 
 // ?
 : link-reg ( -- reg ) EBX ;
 
 Would anybody be able to validate assumptions articulated above and fill in 
 missing pieces.  This is good foundational knowledge to operate in general 
 with.
 
 
 From: mclag...@hotmail.com
 Date: Thu, 16 Aug 2012 13:15:48 -0400
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 Great, thanks.
 
 Sent from my iPhone
 
 On Aug 16, 2012, at 1:11 PM, John Benediktsson 
 mrj...@gmail.commailto:mrj...@gmail.com wrote:
 
 
 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
 I'm getting the slot named array which is at offset 4 (and then declaring 
 that to be an array, so as to disable some of the type safety checks)?
 
 Yes, the hashtable code is written at a bit lower level and thus maybe a 
 little harder to read than one might normally write in Factor since it is one 
 of the building blocks that everything is built upon.  It is also possible 
 that some of the compiler optimizations that have been written in the last 
 couple of years make some of those declarations unnecessary, although I'd 
 have to look into it more to know for sure.
 
 Also, due to the bootstrapping mechanism, some of the higher level language 
 constructs like locals and fry quotations are not available yet.  That is 
 something we hope to fix at some future point.
 
 Here it says slot takes two incoming values:  an obj and a non-negative 
 fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
 there are only three slots listed, but it does say that the slot named 
 array is at offset 4.   Is it this offset number that is being specified by 
 the m parameter?  And thus is the array I am seeing in my original 
 description the contents of the array slot of the hashtable that was 
 originally on the stack?   That makes sense to me.   And the fact that the 
 array is 128 slots long (allowing flattened representation of 64 key-value 
 pairs) just means that the underlying array in the hashtable has 64 buckets.  
 Is this a correct interpretation.  If it is, it makes sense that the actual 
 26 values stored in the hash table would be dispersed throught the 64 
 buckets, because this is what a hashtable does.
 
 Yes, exactly!  The slot-spec tuple

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread Michael Clagett

Hi -- Okay.  I'm going to ask for my first lifeline. :)  I'm tracing through 
some arcane stuff indeed.  Everything is going along swimmingly.  I get to the 
word new-key@, which at its start wants to execute [ array 2dup hash@ 0 f 
(new-key@) ] with the keep combinator.  All good so far.  array resolves 
to [ 4 slot { array } declare ], which I believe should mean get the 4th slot 
of the object on top of stack and declare to Factor that you know for sure it 
is an array.  The object on the top of the stack, according to the Inspector, 
is a 26-slot hash table that includes such keys as architecture, auto-use?, 
bootstrap-syntax, bootsrapping?, etc. Now comes the part that baffles me.  
When I get to executing slot (whether I try to step past it or descend into 
it), the Walker simply moves me all the way to the end of the qotation (past 
declare) and I see the hash-table and index from the top of the data stack 
replaced with a 128-element array that has the 26 key-value pairs from the 
former hash table spread out through the array interspersed by tombstone 
objects; each of these key-value pairs that appear occupy two adjacent array 
slots.  But I'm completely mystified as to how the contents of the hash-table 
got mapped to the array slots they now occupy (there doesn't seem to be any 
rhyme or reason).  And I have little insight into the code that accomplished 
this.  Moreover I apparently can't see the 4th slot of the original object in 
the Inspector, as it only shows me three slots on the data stack trace, but 
organizes them alphabetically when I double-click to open the Inspector window. 
Don't know if any of this was intelligble.  But maybe one of you compiler guys 
can give me a clue as to how I can understand this.  I'm having to reverse 
engineer my understanding of all of this, so a break in the logical chain 
presents difficulties.Sorry for the long post. Regards, Mike
  Date: Wed, 15 Aug 2012 08:30:10 -0700
 From: doug.cole...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 1) Factor loads a ~/.factor-rc file every time it starts. You can put
 things there:
 
 USE: tools.scaffold
 scaffold-factor-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 
 
 2) Alternately, there's a boot rc file that gets loaded after bootstrap:
 
 USE: tools.scaffold
 scaffold-factor-boot-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 To load it without bootstrapping, call 'run-bootstrap-init' and then
 'save' your image.
 
 
 Doug
 
 
 On Wed, Aug 15, 2012 at 8:22 AM, Michael Clagett mclag...@hotmail.com wrote:
  Thanks.  I knew it had to be something like that.  And if I want it to be
  the default every time I load the Listener, I'm sure there must be a way to
  set that up?
 
  Sent from my iPhone
 
  On Aug 15, 2012, at 11:01 AM, John Benediktsson mrj...@gmail.com wrote:
 
  If you want all numbers to print in hex, the easiest way is:
 
  ```
  IN: scratchpad 16 number-base set-global
  ```
 
 
  On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Quick question.   Any way of having the data and retain stack panes of the
  Walker display values in hex?
 
   Date: Mon, 13 Aug 2012 12:21:52 -0400
   From: arc...@gmail.com
   To: factor-talk@lists.sourceforge.net
   Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
   image?
  
   On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
   wrote:
Here's an obscure question that is of interest to me in my current
quest,
but probably not to anyone else. So if there is a better forum for me
to
ask such things, I would love to be instructed; until I hear
otherwise,
however, I will continue to use this list.
   
Is there any place where I can penetrate the meaning of the following
constants:
   
CONSTANT: rt-dlsym 0
CONSTANT: rt-entry-point 1
CONSTANT: rt-entry-point-pic 2
CONSTANT: rt-entry-point-pic-tail 3
CONSTANT: rt-here 4
CONSTANT: rt-this 5
CONSTANT: rt-literal 6
CONSTANT: rt-untagged 7
CONSTANT: rt-megamorphic-cache-hits 8
CONSTANT: rt-vm 9
CONSTANT: rt-cards-offset 10
CONSTANT: rt-decks-offset 11
CONSTANT: rt-exception-handler 12
CONSTANT: rt-dlsym-toc 13
CONSTANT: rt-inline-cache-miss 14
CONSTANT: rt-safepoint 15
   
So far I've only encountered rt-here and I've only seen it encoded
into a
relocation entry and not really used anywhere yet. But this strikes me
as
the kind of thing it would be useful to know as I am slogging through
this
stuff.
   
Not a hugely pressing question, as I'm sure I'll muddle through it.
But if
anyone has a moment to illuminate, it would be nice.
  
   Those are relocation record types. When the compiler generates code

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread Michael Clagett

Wow.  Great, John!   Thanks.  This should keep me at bay for a good while.
 From: mrj...@gmail.com
Date: Thu, 16 Aug 2012 08:10:31 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

In the listener, if you run this code:
IN: scratchpad clearIN: scratchpad value key associate
Then step over to [ set-at ] keep


If at this point you just keep stepping into things, you should do a deep 
dive into all the parts, including the 4 slot { array } declare which should 
give you something like { ~tombstone~ ~tombstone~ ~tombstone~ ~tombstone~ } (an 
array full of tombstone elements which indicate no key or value is present).  
A hashtable with deleted elements will have ~empty~.  A hashtable with 
key/value will have { key value } at some point in the array.  The array is 
flattened key/value pairs, so a 4 bucket hashtable will have an 8 element array 
storing key/value side-by-side starting at the even indices.


I'm not sure what the 26-slot hash table is that you are looking at, so I put a 
clear in the code above to make sure your data stack is empty before walking.  
It is also possible that you are tracing some code which is traversing the 
namespaces (a vector of hashtables containing symbolic variables used in parts 
of the code, with names like the ones you mention).


A hashtable has 3 slots (the 0 slot is a numeric value), see:
```IN: scratchpad \ hashtable slots word-prop .{T{ slot-spec

{ name count }{ offset 2 }{ class array-capacity }
{ initial 0 }}T{ slot-spec{ name deleted }

{ offset 3 }{ class array-capacity }{ initial 0 }}  
  T{ slot-spec{ name array }{ offset 4 }

{ class array }{ initial { } }}}```
You might also like to try describe, and poke around at the various word 
properties (see props below):


```IN: scratchpad \ hashtable describeIN: hashtables SYMBOL: hashtablehashcode  
251442479911733628name  hashtablevocabularyhashtables

def   [ \ hashtable ]props H{ { help-parent hashtables } { 
slots ~array~ } { ...pic-def   fpic-tail-def  fsub-primitive f

```

On Thu, Aug 16, 2012 at 6:01 AM, Michael Clagett mclag...@hotmail.com wrote:






Hi --
 
Okay.  I'm going to ask for my first lifeline. :)  I'm tracing through some 
arcane stuff indeed.  Everything is going along swimmingly.  I get to the word 
new-key@, which at its start wants to execute [ array 2dup hash@ 0 f 
(new-key@) ] with the keep combinator.  All good so far.  array resolves 
to [ 4 slot { array } declare ], which I believe should mean get the 4th slot 
of the object on top of stack and declare to Factor that you know for sure it 
is an array.  The object on the top of the stack, according to the Inspector, 
is a 26-slot hash table that includes such keys as architecture, auto-use?, 
bootstrap-syntax, bootsrapping?, etc.


 
Now comes the part that baffles me.  When I get to executing slot (whether I 
try to step past it or descend into it), the Walker simply moves me all the way 
to the end of the qotation (past declare) and I see the hash-table and index 
from the top of the data stack replaced with a 128-element array that has the 
26 key-value pairs from the former hash table spread out through the array 
interspersed by tombstone objects; each of these key-value pairs that appear 
occupy two adjacent array slots.  But I'm completely mystified as to how the 
contents of the hash-table got mapped to the array slots they now occupy (there 
doesn't seem to be any rhyme or reason).  And I have little insight into the 
code that accomplished this.  Moreover I apparently can't see the 4th slot of 
the original object in the Inspector, as it only shows me three slots on the 
data stack trace, but organizes them alphabetically when I double-click to open 
the Inspector window.


 
Don't know if any of this was intelligble.  But maybe one of you compiler guys 
can give me a clue as to how I can understand this.  I'm having to reverse 
engineer my understanding of all of this, so a break in the logical chain 
presents difficulties.


Sorry for the long post.
 
Regards,
 
Mike
 
 Date: Wed, 15 Aug 2012 08:30:10 -0700
 From: doug.cole...@gmail.com


 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?


 
 1) Factor loads a ~/.factor-rc file every time it starts. You can put
 things there:
 
 USE: tools.scaffold
 scaffold-factor-rc
 
 Click it, edit it and add:
 


 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 
 
 2) Alternately, there's a boot rc file that gets loaded after bootstrap:
 
 USE: tools.scaffold


 scaffold-factor-boot-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 To load it without bootstrapping, call 'run-bootstrap-init

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread Michael Clagett
Great, thanks.

Sent from my iPhone

On Aug 16, 2012, at 1:11 PM, John Benediktsson mrj...@gmail.com wrote:

  
 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
 I'm getting the slot named array which is at offset 4 (and then declaring 
 that to be an array, so as to disable some of the type safety checks)?   
 
 Yes, the hashtable code is written at a bit lower level and thus maybe a 
 little harder to read than one might normally write in Factor since it is one 
 of the building blocks that everything is built upon.  It is also possible 
 that some of the compiler optimizations that have been written in the last 
 couple of years make some of those declarations unnecessary, although I'd 
 have to look into it more to know for sure.
 
 Also, due to the bootstrapping mechanism, some of the higher level language 
 constructs like locals and fry quotations are not available yet.  That is 
 something we hope to fix at some future point.
  
 Here it says slot takes two incoming values:  an obj and a non-negative 
 fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
 there are only three slots listed, but it does say that the slot named 
 array is at offset 4.   Is it this offset number that is being specified by 
 the m parameter?  And thus is the array I am seeing in my original 
 description the contents of the array slot of the hashtable that was 
 originally on the stack?   That makes sense to me.   And the fact that the 
 array is 128 slots long (allowing flattened representation of 64 key-value 
 pairs) just means that the underlying array in the hashtable has 64 buckets.  
 Is this a correct interpretation.  If it is, it makes sense that the actual 
 26 values stored in the hash table would be dispersed throught the 64 
 buckets, because this is what a hashtable does.
 
 Yes, exactly!  The slot-spec tuple provides a generic description of what 
 is to be found in this case at offset 4.  
 
 
 Best,
 John.
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread Michael Clagett

Quick question.   Any way of having the data and retain stack panes of the 
Walker display values in hex?
  Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:
  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,
  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0
  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6
  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12
  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a
  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if
  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread Michael Clagett
Thanks.  I knew it had to be something like that.  And if I want it to be the 
default every time I load the Listener, I'm sure there must be a way to set 
that up?

Sent from my iPhone

On Aug 15, 2012, at 11:01 AM, John Benediktsson mrj...@gmail.com wrote:

 If you want all numbers to print in hex, the easiest way is:
 
 ```
 IN: scratchpad 16 number-base set-global
 ```
 
 
 On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.com wrote:
 Quick question.   Any way of having the data and retain stack panes of the 
 Walker display values in hex?
  
  Date: Mon, 13 Aug 2012 12:21:52 -0400
  From: arc...@gmail.com
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
  
  On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
  wrote:
   Here's an obscure question that is of interest to me in my current quest,
   but probably not to anyone else.  So if there is a better forum for me to
   ask such things, I would love to be instructed; until I hear otherwise,
   however, I will continue to use this list.
  
   Is there any place where I can penetrate the meaning of the following
   constants:
  
   CONSTANT: rt-dlsym 0
   CONSTANT: rt-entry-point 1
   CONSTANT: rt-entry-point-pic 2
   CONSTANT: rt-entry-point-pic-tail 3
   CONSTANT: rt-here 4
   CONSTANT: rt-this 5
   CONSTANT: rt-literal 6
   CONSTANT: rt-untagged 7
   CONSTANT: rt-megamorphic-cache-hits 8
   CONSTANT: rt-vm 9
   CONSTANT: rt-cards-offset 10
   CONSTANT: rt-decks-offset 11
   CONSTANT: rt-exception-handler 12
   CONSTANT: rt-dlsym-toc 13
   CONSTANT: rt-inline-cache-miss 14
   CONSTANT: rt-safepoint 15
  
   So far I've only encountered rt-here and I've only seen it encoded into a
   relocation entry and not really used anywhere yet. But this strikes me as
   the kind of thing it would be useful to know as I am slogging through this
   stuff.
  
   Not a hugely pressing question, as I'm sure I'll muddle through it. But if
   anyone has a moment to illuminate, it would be nice.
  
  Those are relocation record types. When the compiler generates code
  for a word, it also needs to generate relocation entries every time it
  references another word in a jump or call statement, much like a
  native C compiler needs to do for symbols in other modules.
  The VM uses these relocation entries to update the operands of jump
  and call instructions when code is written to the code heap, when the
  code heap is compacted, or if code is moved in memory for any reason.
  The different rt-* constants are used to describe what kind of object
  a relocation refers to, such as a foreign function in a DLL (dlsym), a
  word entry point (entry-point-*), the current address (here), etc.
  
  -Joe
  
  --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and 
  threat landscape has changed and how IT managers can respond. Discussions 
  will include endpoint security, mobile security and the latest in malware 
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread Michael Clagett
Beautiful.  Thanks.

Sent from my iPhone

On Aug 15, 2012, at 11:30 AM, Doug Coleman doug.cole...@gmail.com wrote:

 1) Factor loads a ~/.factor-rc file every time it starts. You can put
 things there:
 
 USE: tools.scaffold
 scaffold-factor-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 
 
 2) Alternately, there's a boot rc file that gets loaded after bootstrap:
 
 USE: tools.scaffold
 scaffold-factor-boot-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 To load it without bootstrapping, call 'run-bootstrap-init' and then
 'save' your image.
 
 
 Doug
 
 
 On Wed, Aug 15, 2012 at 8:22 AM, Michael Clagett mclag...@hotmail.com wrote:
 Thanks.  I knew it had to be something like that.  And if I want it to be
 the default every time I load the Listener, I'm sure there must be a way to
 set that up?
 
 Sent from my iPhone
 
 On Aug 15, 2012, at 11:01 AM, John Benediktsson mrj...@gmail.com wrote:
 
 If you want all numbers to print in hex, the easiest way is:
 
 ```
 IN: scratchpad 16 number-base set-global
 ```
 
 
 On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.com
 wrote:
 
 Quick question.   Any way of having the data and retain stack panes of the
 Walker display values in hex?
 
 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
 wrote:
 Here's an obscure question that is of interest to me in my current
 quest,
 but probably not to anyone else. So if there is a better forum for me
 to
 ask such things, I would love to be instructed; until I hear
 otherwise,
 however, I will continue to use this list.
 
 Is there any place where I can penetrate the meaning of the following
 constants:
 
 CONSTANT: rt-dlsym 0
 CONSTANT: rt-entry-point 1
 CONSTANT: rt-entry-point-pic 2
 CONSTANT: rt-entry-point-pic-tail 3
 CONSTANT: rt-here 4
 CONSTANT: rt-this 5
 CONSTANT: rt-literal 6
 CONSTANT: rt-untagged 7
 CONSTANT: rt-megamorphic-cache-hits 8
 CONSTANT: rt-vm 9
 CONSTANT: rt-cards-offset 10
 CONSTANT: rt-decks-offset 11
 CONSTANT: rt-exception-handler 12
 CONSTANT: rt-dlsym-toc 13
 CONSTANT: rt-inline-cache-miss 14
 CONSTANT: rt-safepoint 15
 
 So far I've only encountered rt-here and I've only seen it encoded
 into a
 relocation entry and not really used anywhere yet. But this strikes me
 as
 the kind of thing it would be useful to know as I am slogging through
 this
 stuff.
 
 Not a hugely pressing question, as I'm sure I'll muddle through it.
 But if
 anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond.
 Discussions
 will include endpoint security, mobile security and the latest in
 malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-14 Thread Michael Clagett

One constructive criticism type comment, if you'll permit me.   While what I 
say directly below is absolutely true, it's true on a micro level.  At the 
broader level, the heavy use of (sometimes lengthy) quotations to feed 
workhorse words like define-sub-primitive make understanding what's going on 
quite difficult.  Although I realize the bootstrapping mechanism is not a 
general area of interest to many, I think something on the order of about 25 
well-placed comments prefacing some of the more extensive quotations would help 
improve readability tremendously, just in case someone needs to understand the 
internals of this mechanism. Just a thought, offered in a spirit of complete 
good will and overall general awe at the care and discipline that has gone into 
this work. 
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Subject: RE: [Factor-talk] Any way of making sense of what's in the boot image?
Date: Tue, 14 Aug 2012 05:28:45 +





Been looking at some of the x86 assembler code.  Damn!  All I can say is that I 
wish to hell I had had Factor when I wrote my own.   Quite a bit different 
approach, but the clarity and succinctness is tantalizing.
 
From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Mon, 13 Aug 2012 16:46:38 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thank you, Joe, for the quick response.  It was actually the information in the 
such as clause of your last sentence that I was looking for.  I don't mean 
for you to take the time out to document the meaning of these different 
constants, but if it is documented somewhere other than in the creators' heads, 
I would love to be directed to it.   Not a big deal, because I'm sure that when 
I get to seeing them used in the boot-image initialization code, all will 
become clear.  Still, it might help me better understand what's being done at 
the make-image level to know.  
 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:
  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,
  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0
  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6
  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12
  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a
  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if
  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-14 Thread Michael Clagett

Roger, that.   I will definitely do it.  In fact, I think you will be 
pleasantly surprised.
 From: mrj...@gmail.com
Date: Tue, 14 Aug 2012 17:35:39 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Any documentation that you write as part of your investigation would be welcome 
contributions.

On Tue, Aug 14, 2012 at 5:27 PM, Michael Clagett mclag...@hotmail.com wrote:






One constructive criticism type comment, if you'll permit me.   While what I 
say directly below is absolutely true, it's true on a micro level.  At the 
broader level, the heavy use of (sometimes lengthy) quotations to feed 
workhorse words like define-sub-primitive make understanding what's going on 
quite difficult.  Although I realize the bootstrapping mechanism is not a 
general area of interest to many, I think something on the order of about 25 
well-placed comments prefacing some of the more extensive quotations would help 
improve readability tremendously, just in case someone needs to understand the 
internals of this mechanism.


 
Just a thought, offered in a spirit of complete good will and overall general 
awe at the care and discipline that has gone into this work. 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Subject: RE: [Factor-talk] Any way of making sense of what's in the boot image?
Date: Tue, 14 Aug 2012 05:28:45 +







Been looking at some of the x86 assembler code.  Damn!  All I can say is that I 
wish to hell I had had Factor when I wrote my own.   Quite a bit different 
approach, but the clarity and succinctness is tantalizing.
 


From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net

Date: Mon, 13 Aug 2012 16:46:38 +

Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thank you, Joe, for the quick response.  It was actually the information in the 
such as clause of your last sentence that I was looking for.  I don't mean 
for you to take the time out to document the meaning of these different 
constants, but if it is documented somewhere other than in the creators' heads, 
I would love to be directed to it.   Not a big deal, because I'm sure that when 
I get to seeing them used in the boot-image initialization code, all will 
become clear.  Still, it might help me better understand what's being done at 
the make-image level to know.  


 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net


 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:


  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,


  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0


  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6


  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12


  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a


  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if


  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it


 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the


 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a


 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference


 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 


 threats. http

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-13 Thread Michael Clagett

(So you had better be nice to me; I don't mess around.)
  Date: Mon, 13 Aug 2012 09:50:04 -0700
 From: doug.cole...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 Is this you?
 
 http://www.clarkprosecutor.org/html/death/US/clagett651.htm
 
 On Mon, Aug 13, 2012 at 9:46 AM, Michael Clagett mclag...@hotmail.com wrote:
  Thank you, Joe, for the quick response.  It was actually the information in
  the such as clause of your last sentence that I was looking for.  I don't
  mean for you to take the time out to document the meaning of these different
  constants, but if it is documented somewhere other than in the creators'
  heads, I would love to be directed to it.   Not a big deal, because I'm sure
  that when I get to seeing them used in the boot-image initialization code,
  all will become clear.  Still, it might help me better understand what's
  being done at the make-image level to know.
  Date: Mon, 13 Aug 2012 12:21:52 -0400
 
  From: arc...@gmail.com
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
  wrote:
   Here's an obscure question that is of interest to me in my current
   quest,
   but probably not to anyone else. So if there is a better forum for me to
   ask such things, I would love to be instructed; until I hear otherwise,
   however, I will continue to use this list.
  
   Is there any place where I can penetrate the meaning of the following
   constants:
  
   CONSTANT: rt-dlsym 0
   CONSTANT: rt-entry-point 1
   CONSTANT: rt-entry-point-pic 2
   CONSTANT: rt-entry-point-pic-tail 3
   CONSTANT: rt-here 4
   CONSTANT: rt-this 5
   CONSTANT: rt-literal 6
   CONSTANT: rt-untagged 7
   CONSTANT: rt-megamorphic-cache-hits 8
   CONSTANT: rt-vm 9
   CONSTANT: rt-cards-offset 10
   CONSTANT: rt-decks-offset 11
   CONSTANT: rt-exception-handler 12
   CONSTANT: rt-dlsym-toc 13
   CONSTANT: rt-inline-cache-miss 14
   CONSTANT: rt-safepoint 15
  
   So far I've only encountered rt-here and I've only seen it encoded into
   a
   relocation entry and not really used anywhere yet. But this strikes me
   as
   the kind of thing it would be useful to know as I am slogging through
   this
   stuff.
  
   Not a hugely pressing question, as I'm sure I'll muddle through it. But
   if
   anyone has a moment to illuminate, it would be nice.
 
  Those are relocation record types. When the compiler generates code
  for a word, it also needs to generate relocation entries every time it
  references another word in a jump or call statement, much like a
  native C compiler needs to do for symbols in other modules.
  The VM uses these relocation entries to update the operands of jump
  and call instructions when code is written to the code heap, when the
  code heap is compacted, or if code is moved in memory for any reason.
  The different rt-* constants are used to describe what kind of object
  a relocation refers to, such as a foreign function in a DLL (dlsym), a
  word entry point (entry-point-*), the current address (here), etc.
 
  -Joe
 
 
  --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and
  threat landscape has changed and how IT managers can respond. Discussions
  will include endpoint security, mobile security and the latest in malware
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk
 
  --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and
  threat landscape has changed and how IT managers can respond. Discussions
  will include endpoint security, mobile security and the latest in malware
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-13 Thread Michael Clagett

Been looking at some of the x86 assembler code.  Damn!  All I can say is that I 
wish to hell I had had Factor when I wrote my own.   Quite a bit different 
approach, but the clarity and succinctness is tantalizing.
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Mon, 13 Aug 2012 16:46:38 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thank you, Joe, for the quick response.  It was actually the information in the 
such as clause of your last sentence that I was looking for.  I don't mean 
for you to take the time out to document the meaning of these different 
constants, but if it is documented somewhere other than in the creators' heads, 
I would love to be directed to it.   Not a big deal, because I'm sure that when 
I get to seeing them used in the boot-image initialization code, all will 
become clear.  Still, it might help me better understand what's being done at 
the make-image level to know.  
 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:
  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,
  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0
  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6
  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12
  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a
  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if
  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett


  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive
  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever
  encountered this and any idea how to get around it?
 
 Factor code doesn't follow the C calling convention so it's unlikely
 that a debugger will be able to walk a stack with Factor frames. In
 recent versions of Factor you can trigger Factor's own low-level
 debugger with ^C, which will let you backtrace and step through Factor
 frames.
 
 -Joe
 
If I'm understanding this correctly, you are suggesting that if I'm in the 
Factor development environment, I can drop into Factor's own low-level 
debugger.  But what do people do (you language maintainer, for example) when 
you need to debug the startup code that builds an image that needs to be in 
place for the development environment even to be launched?  Am I correctly 
understanding you, that I can't use a Windows debugger to step through the init 
sequence, but don't have Factor's debugger available yet either?  Or am I 
missing something? Any insights would be greatly appreciated.   
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 11:51:00 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?






  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive
  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever
  encountered this and any idea how to get around it?
 
 Factor code doesn't follow the C calling convention so it's unlikely
 that a debugger will be able to walk a stack with Factor frames. In
 recent versions of Factor you can trigger Factor's own low-level
 debugger with ^C, which will let you backtrace and step through Factor
 frames.
 
 -Joe
 

If I'm understanding this correctly, you are suggesting that if I'm in the 
Factor development environment, I can drop into Factor's own low-level 
debugger.  But what do people do (you language maintainer, for example) when 
you need to debug the startup code that builds an image that needs to be in 
place for the development environment even to be launched?  Am I correctly 
understanding you, that I can't use a Windows debugger to step through the init 
sequence, but don't have Factor's debugger available yet either?  Or am I 
missing something?
 
Any insights would be greatly appreciated.
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener 
environment.From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html




On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.com wrote:






Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 11:51:00 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?








  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive


  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever


  encountered this and any idea how to get around it?
 
 Factor code doesn't follow the C calling convention so it's unlikely
 that a debugger will be able to walk a stack with Factor frames. In


 recent versions of Factor you can trigger Factor's own low-level
 debugger with ^C, which will let you backtrace and step through Factor
 frames.
 
 -Joe
 

If I'm understanding this correctly, you are suggesting that if I'm in the 
Factor development environment, I can drop into Factor's own low-level 
debugger.  But what do people do (you language maintainer, for example) when 
you need to debug the startup code that builds an image that needs to be in 
place for the development environment even to be launched?  Am I correctly 
understanding you, that I can't use a Windows debugger to step through the init 
sequence, but don't have Factor's debugger available yet either?  Or am I 
missing something?


 
Any insights would be greatly appreciated.
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  

--

Live Security Virtual Conference

Exclusive live event will cover all the ways today's security and

threat landscape has changed and how IT managers can respond. Discussions

will include endpoint security, mobile security and the latest in malware

threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___

Factor-talk mailing list

Factor-talk@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/factor-talk





--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Hi -- I've been trying to run the make-image word from the Listener and got as 
far as this trace: IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path
x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor
 From Traceback: Data Stack: [ ~quotation~ with-compilation-unit ]Bad 
architecture: x86.32 Call Stack: (U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]
(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip
]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [
~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require
~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get
{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor
parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set
init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each
fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin
f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin
string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin
alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin
f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at
t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create
fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~
] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global
[ original-error set-global ] [ rethrow ] bi
]
Anyone have any ideas?  From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener environment.
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html




On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.com wrote:






Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 11:51:00 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?








  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive


  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever


  encountered

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Beautiful.  Worked like a charm.   Thanks.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64
You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:






Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path


x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor


 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]


(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip


]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [


~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require


~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get


{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor


parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set


init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each


fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin


f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin


string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin


alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin


f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at


t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create


fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~


] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global


[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?







Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener environment.
From: mrj...@gmail.com


Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?



You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html






On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.com wrote:






Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64
You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:






Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path


x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor


 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]


(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip


]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [


~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require


~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get


{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor


parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set


init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each


fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin


f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin


string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin


alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin


f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at


t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create


fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~


] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global


[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?







Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener environment.
From: mrj...@gmail.com


Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?



You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Thanks much.  This should keep me occupied and out of everyone's hair for a 
while.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:10:41 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Write my-arch make-image in listener.
Then type Ctrl-W to walk it.
Step across my-arch
Into into make-image


Rinse, repeat.  :)

On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com wrote:






Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.


 
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net


Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64


You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:








Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path




x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor




 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]




(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip




]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [




~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require




~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get




{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor




parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set




init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each




fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin




f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin




string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin




alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin




f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at




t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create




fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~




] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global




[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

For anyone else who might happen onto the problem I had, the solution ended up 
being that my architecture was named windows-x86.32, not x86.32.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:10:41 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Write my-arch make-image in listener.
Then type Ctrl-W to walk it.
Step across my-arch
Into into make-image


Rinse, repeat.  :)

On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com wrote:






Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.


 
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net


Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64


You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:








Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path




x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor




 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]




(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip




]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [




~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require




~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get




{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor




parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set




init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each




fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin




f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin




string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin




alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin




f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at




t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create




fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~




] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global




[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

One more question before I disappear.  I've been tracing through the 
bootstrapping code with WinDbg and am currently in factor_vm::compile_all_words 
where a loop is about to compile 4894 words.  These are accessible as words, 
which in turn can server up their definitions (via word-def).  These are 
quotations, which, like words, display in the debugger inspector as a fairly 
simple structure with a value and parent_slot.   I'm wondering if by some 
small chance there is some way to navigate back to the symbolic name for any 
words that one comes across in this fashion.  Certainly one could get away with 
compiling simply with the type and value and never need the symbolic name, 
which I suspect is what is being done.  So I don't have high hopes, but it 
certainly doesn't hurt to ask.
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 21:16:40 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





For anyone else who might happen onto the problem I had, the solution ended up 
being that my architecture was named windows-x86.32, not x86.32.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:10:41 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Write my-arch make-image in listener.
Then type Ctrl-W to walk it.
Step across my-arch
Into into make-image


Rinse, repeat.  :)

On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com wrote:






Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.


 
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net


Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64


You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:








Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path




x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor




 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]




(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip




]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [




~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require




~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get




{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor




parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set




init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each




fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin




f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin




string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin




alien alien create register-builtin

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Doug, thank you for your help, but I'm afraid I didn't understand everything in 
your response.  Not sure of the context of your instructions.   Not sure, for 
example, what you mean by ./factor (is this something I'm supposed to type 
somewhere?), what you mean by in the repl: die (not sure what the repl is -- 
or what die means for that matter), and then what you mean by the shell.  
Other than that I understood you completely :) .
  Date: Fri, 10 Aug 2012 14:57:51 -0700
 From: doug.cole...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 You can do this:
 
 ./factor
 in the repl: die
 then in the shell:
 words
 
 It dumps a list of word addresses in Factor.
 
 This works for words, but not quotations.
 
 Hope this helps.
 
 Doug
 
 On Fri, Aug 10, 2012 at 2:55 PM, Michael Clagett mclag...@hotmail.com wrote:
  One more question before I disappear.  I've been tracing through the
  bootstrapping code with WinDbg and am currently in
  factor_vm::compile_all_words where a loop is about to compile 4894 words.
  These are accessible as words, which in turn can server up their definitions
  (via word-def).  These are quotations, which, like words, display in the
  debugger inspector as a fairly simple structure with a value and
  parent_slot.   I'm wondering if by some small chance there is some way to
  navigate back to the symbolic name for any words that one comes across in
  this fashion.  Certainly one could get away with compiling simply with the
  type and value and never need the symbolic name, which I suspect is what is
  being done.  So I don't have high hopes, but it certainly doesn't hurt to
  ask.
 
  
  From: mclag...@hotmail.com
  To: factor-talk@lists.sourceforge.net
  Date: Fri, 10 Aug 2012 21:16:40 +
 
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  For anyone else who might happen onto the problem I had, the solution ended
  up being that my architecture was named windows-x86.32, not x86.32.
 
 
  
  From: mrj...@gmail.com
  Date: Fri, 10 Aug 2012 14:10:41 -0700
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  Write my-arch make-image in listener.
 
  Then type Ctrl-W to walk it.
 
  Step across my-arch
 
  Into into make-image
 
  Rinse, repeat.  :)
 
 
  On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Quick question, if you're still on the horn.   How do I trace into myarch
  make-image from the Listener.  If I hit enter it just executes.  I'm sure
  there must be any easy way to step into it, which I'm sure I can find by
  searching the documentation.  But perhaps you could save me five minutes.
 
  
  From: mrj...@gmail.com
  Date: Fri, 10 Aug 2012 14:01:58 -0700
 
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  Typically the architecture is a combination of os and arch:
 
  IN: scratchpad my-arch .
  unix-x86.64
 
  You can use the my-arch word to make an image for your architecture:
 
  IN: scratchpad my-arch make-image
 
 
 
  On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Hi --
 
  I've been trying to run the make-image word from the Listener and got as far
  as this trace:
 
  IN: scratchpad Command: restart
  1: Note:
  Added bootstrap.image vocabulary to search path
  x86.32 make-image
  Loading resource:/core/bootstrap/stage1.factor
  Bootstrap stage 1...
  Loading vocab:bootstrap/primitives.factor
  Creating primitives and basic runtime structures...
  Loading vocab:bootstrap/syntax.factor
 
  From Traceback:
 
  Data Stack:
 
  [ ~quotation~ with-compilation-unit ]
  Bad architecture: x86.32
 
  Call Stack:
 
  (U)
  Quotation: [ set-namestack init-catchstack self quot call - stop ]
  (O)
  Word: listener-thread
  (O)
  Word: listener
  (O)
  Word: (listener)
  (U)
  Quotation: [
  [ ~quotation~ dip swap ~quotation~ dip ] dip swap
  [ call datastack ] dip - swap [ set-datastack ] dip
  ]
  (U)
  Quotation: [ call - datastack ]
  (O)
  Word: make-image
  (U)
  Quotation: [
  Bootstrap stage 1... print
  flush vocab:bootstrap/primitives.factor run-file
  - load-help? off { resource:core } vocab-roots set [
  ~quotation~ % math.integers require
  math.floats require memory require
  io.streams.c require vocabs.loader require
  syntax require bootstrap.layouts require
  ~quotation~ %
  ] [ ] make bootstrap-startup-quot set
  ]
  (U)
  Quotation: [
  Creating primitives and basic runtime structures... print
  flush H{ } clone sub-primitives set
  vocab:bootstrap/syntax.factor parse-file architecture get
  { ~array~ ~array~ ~array~ ~array

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-09 Thread Michael Clagett

Thank you, Joe, once again for your help.  I have settled into a nice rythym of 
virtually tracing through the code by looking at the source (both vm and factor 
files), augmented by the Help system in the listener.  That should keep me busy 
and out of your hair for a couple months (or couple years? :( ).  Let me hold 
off on asking any more questions until I've had a chance to absorb some of 
this. Maybe one little question.   Am I correct in suspecting that there is a 
high-level Factor word I can execute on demand and trace through the exectution 
of via the Factor debugger to get a more dynamic picture of how this all 
unfolds?  Would it be make-image?  Can you just call that directly or is it 
only called in the context of a sequence of operations that have already set 
other things up?
  Date: Wed, 8 Aug 2012 21:12:23 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Wed, Aug 8, 2012 at 8:23 PM, Joe Groff arc...@gmail.com wrote:
 
  The code in the bootstrap.image module outputs the bootstrap image as
  a binary blob. You can get a sense for the format of the bootstrap
  image and its contents by looking at that module.
 
 To clarify, by output as a binary blob I mean the code in
 bootstrap.image doesn't have any special help from the VM—it just
 generates a byte array whose contents resemble a Factor image and
 outputs that to a file. It could be transliterated to another language
 and still generate a valid boot image.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-09 Thread Michael Clagett

Much appreciated, thanks.  I had actually already discovered some significant 
portion of what you explain below, which is why I'm going to hold off on the 
baby-step questions so that I can save the limited Joe Groff bandwidth that the 
universe is going to provide me for more meaty important stuff.
  Date: Thu, 9 Aug 2012 06:26:54 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Wed, Aug 8, 2012 at 9:56 PM, Michael Clagett mclag...@hotmail.com wrote:
  Hi Joe --
 
  Thank you so much for your guidance.  I'm assuming that it is the
  basis\bootstrap\image\image.factor and the core\bootstrap\primitives.factor,
  stage1.factor and syntax.factor that you are referring to?
 
  One question just to help me get oriented before I go into heavy
  head-twisting mode.  I notice that all these files have significant numbers
  of pre-existing vocabularies that they use.  If this is what is used to
  generate the early stage1 bootstrapping stuff, then am I correct to assume
  that this is done from some version of factor where all this stuff has built
  already from scratch (that would be the implication, if all these files are
  able to use those vocabularies)?  Or is there some other mechanism at work
  here that I should know about, and if so, is it written up anywhere that you
  know about.
 
  I have just read Slava's January 2010 post on the bootstrapping mechanism,
  so I understand the mechanism a bit better now, but am still thinking there
  has to be some Factor system somewhere that was built without a bootstrap
  image in order to have the vocabularies available that are used to generate
  the bootstrapping.  Is there anything anywhere documenting that aspect of
  the picture.  The reason I ask is that I would like to get a sense of how
  extensive that core fundamental set of vocabularies is that is needed to
  process the primitives and stage1 factor files.
 
  Here's the USING statement for primitives.factor:
 
  USING: alien alien.strings arrays byte-arrays generic hashtables
  hashtables.private io io.encodings.ascii kernel math
  math.private math.order namespaces make parser sequences strings
  vectors words quotations assocs layouts classes classes.private
  classes.builtin classes.singleton classes.tuple
  classes.tuple.private kernel.private vocabs vocabs.loader
  source-files definitions slots classes.union
  classes.intersection classes.predicate compiler.units
  bootstrap.image.private io.files accessors combinators ;
  IN: bootstrap.primitives
 
  It's got a lot of stuff there.  Is a lot of this built in the C++ code that
  constitutes the VM?  Or is some fundamental processing capability put into
  place that allows the processing of factor files to build these
  vocabularies?  And if so, is the factor source used also included in the
  downloaded platform?  Or was this a special primordial code base that was
  used once and never really needed again?
 
 Although core/bootstrap/primitives.factor is in core/, it's not
 actually loaded as-is into the boot image; it's really a script
 designed to run as part of `make-image` in the host image. All of
 those modules are loaded and run in the host image. While there of
 course had to have been a primordial Factor that could boot itself, I
 think it would be too different now to resemble current Factor.
 Factor's bootstrapping loop evolved somewhat organically.
 
 You can tell whether a word is a C++ primitive by `see`ing it in the
 listener. Primitive words show up as `PRIMITIVE:` when prettyprinted.
 
 At a high level, `make-image` has two stages: First, it executes
 `core/bootstrap/stage1.factor`, which runs 'bootstrap/syntax.factor`
 to transfer the basic syntax from the host image to the boot image,
 `bootstrap/primitives.factor` to set up primitive words corresponding
 to VM primitives, and a CPU-specific `basis/cpu/*/bootstrap.factor`
 script to assemble sub-primitives which are blobs of assembly
 language code composed by the VM's compiler. It also composes a
 startup quotation to begin the second stage of bootstrap when the boot
 image is started. Second, after the bootstrapping elements have been
 loaded, it serializes the data structures loaded by the bootstrap
 scripts into a boot image. Again, it does this without help from the
 VM, though it does borrow some knowledge of layouts from the compiler
 and other Factor libraries.
 
  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive
  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever
  encountered this and any idea how to get

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-09 Thread Michael Clagett

Quick question about parse-file.Is the quotation that is returned on the 
stack as a result of this word a parse tree, as discussed in the 
documentation's article on parsing?  This would be a parse tree as in Tokens 
are appended to the parse tree, the top level of which is a quotation returned 
by the original parser invocation., right?  There could also potentially be 
nested elements in the tree contributed by other parse words encountered in the 
course of satisfying the original parser invocation.   Am I understanding this 
correctly? Thanks. --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


[Factor-talk] Any way of making sense of what's in the boot image?

2012-08-08 Thread Michael Clagett

Hi -- I've been tracing through the initial vm initialization code trying to 
get a picture of how Factor bootstraps itself.  Does anyone know if there is a 
way to resolve code in the initial boot image that is being jit-compiled by 
factor_vm::prepare_boot_image to a set of symbolic names that can give a hint 
as to what functionality is included there?  I'm trying to get a sense of the 
minimal functional set included here that allows higher-level initial code to 
be compiled.  The comment on prepare_boot-image says /* Compile code in boot 
image so that we can execute the startup quotation */.  It would be nice to 
know what this code includes.  My guess is that the answer is no, there is no 
way and that one just has to be in possession of whatever code generated it 
(and there's nothing to say that this was even a Factor system that did this in 
the first place; could have easily been some C++ code that just knew what bits 
to emit).   But it never hurts to ask... Presumably if I proceed past this to a 
point where actual Factor code is being parsed and compiled, I'll be able to 
get a feel for what primitives are already being depended on?  Or maybe not.  
Maybe it's just a big bang where earlier word definitions can depend on later 
word definitions having been initialized before they start their execution.  Is 
mine a hopeless effort?  Would be nice to know before I suck up too much time 
with it. Thanks for any guidance anyone can provide. Regards, Mike  
 --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-08 Thread Michael Clagett

Hi Joe -- Thank you so much for your guidance.  I'm assuming that it is the 
basis\bootstrap\image\image.factor and the core\bootstrap\primitives.factor, 
stage1.factor and syntax.factor that you are referring to? One question just to 
help me get oriented before I go into heavy head-twisting mode.  I notice that 
all these files have significant numbers of pre-existing vocabularies that they 
use.  If this is what is used to generate the early stage1 bootstrapping stuff, 
then am I correct to assume that this is done from some version of factor where 
all this stuff has built already from scratch (that would be the implication, 
if all these files are able to use those vocabularies)?  Or is there some other 
mechanism at work here that I should know about, and if so, is it written up 
anywhere that you know about. I have just read Slava's January 2010 post on the 
bootstrapping mechanism, so I understand the mechanism a bit better now, but am 
still thinking there has to be some Factor system somewhere that was built 
without a bootstrap image in order to have the vocabularies available that are 
used to generate the bootstrapping.  Is there anything anywhere documenting 
that aspect of the picture.  The reason I ask is that I would like to get a 
sense of how extensive that core fundamental set of vocabularies is that is 
needed to process the primitives and stage1 factor files.   Here's the USING 
statement for primitives.factor: USING: alien alien.strings arrays byte-arrays 
generic hashtables
hashtables.private io io.encodings.ascii kernel math
math.private math.order namespaces make parser sequences strings
vectors words quotations assocs layouts classes classes.private
classes.builtin classes.singleton classes.tuple
classes.tuple.private kernel.private vocabs vocabs.loader
source-files definitions slots classes.union
classes.intersection classes.predicate compiler.units
bootstrap.image.private io.files accessors combinators ;
IN: bootstrap.primitives It's got a lot of stuff there.  Is a lot of this built 
in the C++ code that constitutes the VM?  Or is some fundamental processing 
capability put into place that allows the processing of factor files to build 
these vocabularies?  And if so, is the factor source used also included in the 
downloaded platform?  Or was this a special primordial code base that was used 
once and never really needed again? Any clarification you can provide (or 
better yet, any sources you can point me to that I can go and do the work to 
gain an understanding of this) would be greatly, greatly appreciated. I 
envision creating my own Inside the Factor VM and possibly inside the Factor 
Compiler writeup once I have accomplished what I am after.  So hopefully I can 
give back a little after traveling up these respective learning curves. Thanks 
much. Mike  P.S.   Incidentally, while I am on the subject, I find myself able 
to trace through the VM startup code in Visual Studio with no problem at all, 
until I get to the factor_vm::c_to_factor, which wraps a c-to-factor 
sub-primitive inside of a callback stub and then invokes that function.  On 
both a Windows 7 platform and a Windows Server 2008 platform, my Visual Studio 
blows up when the callback address loaded into EDX is called.  Anybody ever 
encountered this and any idea how to get around it? Thanks. Date: Wed, 8 Aug 
2012 20:23:04 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Wed, Aug 8, 2012 at 3:24 PM, Michael Clagett mclag...@hotmail.com wrote:
  Hi --
 
  I've been tracing through the initial vm initialization code trying to get a
  picture of how Factor bootstraps itself.  Does anyone know if there is a way
  to resolve code in the initial boot image that is being jit-compiled by
  factor_vm::prepare_boot_image to a set of symbolic names that can give a
  hint as to what functionality is included there?  I'm trying to get a sense
  of the minimal functional set included here that allows higher-level initial
  code to be compiled.  The comment on prepare_boot-image says /* Compile
  code in boot image so that we can execute the startup quotation */.  It
  would be nice to know what this code includes.  My guess is that the answer
  is no, there is no way and that one just has to be in possession of
  whatever code generated it (and there's nothing to say that this was even a
  Factor system that did this in the first place; could have easily been some
  C++ code that just knew what bits to emit).
 
  But it never hurts to ask...
 
  Presumably if I proceed past this to a point where actual Factor code is
  being parsed and compiled, I'll be able to get a feel for what primitives
  are already being depended on?  Or maybe not.  Maybe it's just a big bang
  where earlier word definitions can depend on later word definitions having
  been initialized before they start their execution.  Is mine

Re: [Factor-talk] Shared libraries considered harmful

2011-11-22 Thread Michael Clagett

Well, I've looked into this quite a bit for my own platform that I'm developing 
(which, as I've mentioned to you before, I have the desire -- if not yet 
exactly the confidence -- of building an implementation of Factor the language 
on top of).   At least I've looked extensively into the CLR.   There are a 
number of possibilities, ranging from hosting the CLR through native interfaces 
and interacting with the Managed environment through this all the way to 
intercepting the JIT compiler calls and injecting code there (again through 
native interfaces).  ANd there are a number of stops in between.
 
I will of course be adding this functionality first to my own environment, but 
am very happy to share any knowledge and or code that I acquire along the way.  
Perhaps, if anyone's interested, we might start such a project from the Factor 
end.

 



Date: Mon, 21 Nov 2011 18:16:11 -0800
From: arc...@gmail.com
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Shared libraries considered harmful

On Mon, Nov 21, 2011 at 5:09 PM, Michael Clagett mclag...@hotmail.com wrote:




As for integration, I can see from your description of Factor's host 
integration that we may indeed have different notions about this.  Compared to 
Lisp or Scheme I'm sure that Factor comes out ahead, no doubt about it.  When I 
speak about integration, however, I am talking about integration with 
mainstream computing runtimes -- like .NET's Common Language Runtime or J2EE -- 
an integration that would make it possible to use Factor fluidly and easily 
alongside such languages as Java and C#


That makes sense, Michael. Interop with mainstream managed platforms would be 
great, but the interfaces for doing so are somewhat daunting. JNI is a 
nightmare. I've heard rumors that CLR objects can interop through COM 
interfaces, which we could potentially use through Factor's COM bridge, but 
documentation is scarce—is the ABI used between native and CLR code by C++/CLI 
documented anywhere? At any rate, the lack of finalizers or other automatic 
resource management on the Factor side would still make managing references to 
Java or C# objects inconvenient. It's definitely something worth exploring 
deeper, though.


-Joe 
-- 
All the data continuously generated in your IT infrastructure contains a 
definitive record of customers, application performance, security threats, 
fraudulent activity, and more. Splunk takes this data and makes sense of it. IT 
sense. And common sense. http://p.sf.net/sfu/splunk-novd2d
___ Factor-talk mailing list 
Factor-talk@lists.sourceforge.net 
https://lists.sourceforge.net/lists/listinfo/factor-talk
   --
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Shared libraries considered harmful

2011-11-21 Thread Michael Clagett

Hi --
 
Sorry for such a delayed response to this.   First of all, I want to make it 
absolutley clear that I was not criticizing Factor in the message below.  I was 
simply noting that the flip side of any language being as expressive and 
extensible as is Factor is the increased opportunity it brings to 
miscommunicate -- or not communicate at all, is really what I mean -- except 
perhaps to the machine you are trying to instruct.  It's the old adage Any 
fool can write programs that a computer can understand; it takes a talented 
developer to write programs that a human being can understand.  With power 
comes license is the only point I was trying to make -- not a criticism, just a 
statement of reality.  And as you note in your response, at this stage of 
Factor's development and with the limited resources available to create 
infrastructure that would help promote coding standards and lower the barrier 
to entry, there's not a whole lot that can be done about this issue.  So once 
more, not a criticism -- more a lament.
 
As for integration, I can see from your description of Factor's host 
integration that we may indeed have different notions about this.  Compared to 
Lisp or Scheme I'm sure that Factor comes out ahead, no doubt about it.  When I 
speak about integration, however, I am talking about integration with 
mainstream computing runtimes -- like .NET's Common Language Runtime or J2EE -- 
an integration that would make it possible to use Factor fluidly and easily 
alongside such languages as Java and C#, which it is never going to replace, 
but could augment very nicely.  In some sense this is probably unfair of me, as 
it is clear that Factor is coming out of a functional language tradition that 
isn't particularly integrated into mainstream enterprise computing environments 
either.   It just seems to me that as a language Factor has so much promise and 
has the capability of being so expressive and so direct and natural in its 
translation of concepts that I find myself wishing I had it to use with my team 
and their work in enterprise development.  Clearly I'm talking about stuff that 
could certainly be developed, but just hasn't been yet -- perhaps because I'm 
the only one who sees a need for it at this point.  
 
In my message below I really was countering the sentiment by the original 
poster, who was longing for Factor to be the machine -- OS and everything else. 
  I was countering with an idea in the opposite direction of having Factor be 
as easily consumable inside of a C# program as, say, inline assembly is inside 
of a C++ program or Java scriptlets are inside of a server-side JSP page.  The 
idea being that I want to use the prepackaged resources of an OS or a runtime 
library.  I don't want to build my web infrastructure in Factor when some high 
percentage of the programmers out there are working in C# or Java. It's just 
not practical.  But maybe this isn't a use case that the language creators 
intended to address.
 
Hope this clarifies.
 
Mike
 



Date: Thu, 17 Nov 2011 09:03:53 -0800
From: arc...@gmail.com
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Shared libraries considered harmful

On Thu, Nov 17, 2011 at 6:36 AM, Michael Clagett mclag...@hotmail.com wrote:




That brings a cost, however, as I've seen up to this point.  It distributes 
responsibility for documenting behavior across a community that like most 
communiteis is uneven in its fulfillment of responsibility.  The greater the 
dependency on just read the code to figure out what's going on, the greater 
the barrier to entry to newcomers.  I have talked to more than one such person 
who has come to take a look and turned away for this very reason.  The power 
and flexibility is tremendous, no question.  But power and flexibility aren't 
always the only thing you need.


This is definitely a problem, and a similar problem afflicts most languages 
that rely heavily on metaprogramming, such as Lisps and even C++. The common 
substrate is too thin, and different users' code looks too different to easily 
read or interoperate with. Factor at least benefits from having a relatively 
small community and a well-centralized code base, so when we do promote idioms 
and libraries to the core language it's easier for us to propagate those 
benefits across all the bundled code. That said, being a small community, we 
also lack the free hands to keep the documentation polished and accessible to 
newcomers a lot of the time.
 


 But wouldn't it be nice to have a platform that offers the power and 
flexibility of Factor that also plays nicely with OSes and other runtime 
environments?



I think Factor goes much further than most languages of its kind in integrating 
with the host platform. Unlike Smalltalks, the canonical source code isn't 
hidden in the image, and you can use your own text editor. More OS features 
have bindings and bundled high-level APIs than your typical Lisp or Scheme

Re: [Factor-talk] Shared libraries considered harmful

2011-11-17 Thread Michael Clagett

A couple thoughts --
 
First of all, as far as I can tell Factor is one big shared library; so much of 
even the core language is implemented in library code that this is truer for 
Factor than it is for many languages one encounters.
 
That brings a cost, however, as I've seen up to this point.  It distributes 
responsibility for documenting behavior across a community that like most 
communiteis is uneven in its fulfillment of responsibility.  The greater the 
dependency on just read the code to figure out what's going on, the greater 
the barrier to entry to newcomers.  I have talked to more than one such person 
who has come to take a look and turned away for this very reason.  The power 
and flexibility is tremendous, no question.  But power and flexibility aren't 
always the only thing you need.
 
As a development manager managing a group of about eight individuals, I have to 
say that one of the benefits of operating systems and runtimes like .NET and 
Java is the shared vocabulary they give a team to develop working practices and 
patterns.  The value of this obviously varies from situation to situation, but 
the greater difficulty that Factor and other flexible and extendible 
vocabulary-based development platforms can bring with them in terms of 
achieving standards and discipline is a concern that to me is very real and 
potentially limits the scope of their adoption.  Maybe it was never intended 
that Factor become a mainstream language suitable for use in primarily 
team-based environments and perhaps I am applying a standard to it that is not 
appropriate.  But wouldn't it be nice to have a platform that offers the power 
and flexibility of Factor that also plays nicely with OSes and other runtime 
environments?
 
Curious what others think about this.
 



Date: Thu, 17 Nov 2011 06:45:00 -0500
From: leonardne...@gmail.com
To: factor-talk@lists.sourceforge.net
Subject: [Factor-talk] Shared libraries considered harmful

Does anybody ever dream about returning to the early days of Forth, where the 
vocabulary is the system?

http://www.colorforth.com/POL.htm

Does anybody ever dream about software that shares functionality with 
procedure calls, rather than with OLE, SOAP, or .so files?

http://blogs.oracle.com/rvs/entry/what_does_dynamic_linking_and

Is it even necessary to package code into programs?

Perhaps namespaces provide more flexibility than programs?

Does anyone dream about the Factor vocabulary becoming so rich than a modern 
OS is unnecessary?

Cheers,
Leonard



-- 
All the data continuously generated in your IT infrastructure contains a 
definitive record of customers, application performance, security threats, 
fraudulent activity, and more. Splunk takes this data and makes sense of it. IT 
sense. And common sense. http://p.sf.net/sfu/splunk-novd2d
___ Factor-talk mailing list 
Factor-talk@lists.sourceforge.net 
https://lists.sourceforge.net/lists/listinfo/factor-talk
   --
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


[Factor-talk] Using combinators as a substitute for loops

2011-10-09 Thread Michael Clagett

Hi ---
 
Finally getting around to developing my first serious Factor code and I have a 
quick question.  I'm a Forth programmer (although of late it has been mostly my 
own bastardized version of Forth).  I'm thinking of one immediate use of 
Combinators as a way of eliminating some of the unsightly procedural code that 
lives in the kind of Forth function I would write inside of, say, a Begin While 
Repeat loop. 
 
But if what I would have wanted to do with my loop is loop through every item 
in a collection of some sort until some condition was true and at that point 
exit the loop early, is there a way to do this using Combinators?  Are there 
versions of the primary ones that will operate on the target sequence only 
until a condition is reached?  I will of course peruse the documentation, but I 
thought I would just ask in case someone could steer me there more quickly (and 
in case some other newbie has the same question).
 
Thanks much.
 
Mike
 
  --
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2dcopy2___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


[Factor-talk] Work done already on graph processing

2011-10-07 Thread Michael Clagett

Hi --

Just want to know what libraries might already be out there with graph 
processing stuff in them.  Don't want to reinvent the wheel.

Thanks.

Mike
  --
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2dcopy2___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Brute Force Ignorance!

2011-09-30 Thread Michael Clagett

Wow!  Patrick, thank you very much.  This will be extremely helpful to me, 
since the internet-less two hours on the train back and forth to work everyday 
is a significant piece of the time I have available to absorb Factor.
 

 Date: Fri, 30 Sep 2011 00:58:12 -0400
 From: patr...@spellingbeewinnars.org
 To: factor-talk@lists.sourceforge.net
 Subject: [Factor-talk] Brute Force  Ignorance!
 
 Here is all the .factor files that ship with the source as a PDF:
 http://spellingbeewinnars.org/all_Factor_Source.pdf
 It's 4019 pages
 
 Here is just the .factor core source:
 http://spellingbeewinnars.org/all_Core_Code.pdf
 It's 427 pages
 
 Here is all of the IRC logs as a PDF:
 http://spellingbeewinnars.org/all_Irc.pdf
 It's 1275 pages
 
 Here is all the emails to the mailing list:
 http://spellingbeewinnars.org/all_Mailing_List.pdf
 It's 1990 pages
 
 Here is Volume 1 of the words documentation:
 http://spellingbeewinnars.org/words_Volume1.pdf
 It's 6959 pages
 
 Volume 2 of words:
 http://spellingbeewinnars.org/words_Volume2.pdf
 It's 9945 pages
 
 Volume 3:
 http://spellingbeewinnars.org/words_Volume3.pdf
 It's 7115 pages
 
 Here is all the vocabulary documentation as a PDF
 http://spellingbeewinnars.org/all_Vocab.pdf
 It's 2826 pages
 
 All the articles:
 http://spellingbeewinnars.org/all_Articles.pdf
 783 pages
 
 All the authors:
 http://spellingbeewinnars.org/all_Authors.pdf
 82 pages
 
 All the tags
 http://spellingbeewinnars.org/all_Tags.pdf
 38 pages
 
 Hopefully this will provide a quick, offline way to look for previously 
 discussed topics, idioms, libraries used and such-Patrick
 
 
 
 
 
 
 --
 All of the data generated in your IT infrastructure is seriously valuable.
 Why? It contains a definitive record of application performance, security
 threats, fraudulent activity, and more. Splunk takes this data and makes
 sense of it. IT sense. And common sense.
 http://p.sf.net/sfu/splunk-d2dcopy2
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2dcopy2___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] TryRuby, etc.

2011-08-23 Thread Michael Clagett

Sorry.  Misunderstood what you were asking.
 



From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Wed, 24 Aug 2011 03:15:58 +
Subject: Re: [Factor-talk] TryRuby, etc.





Hi Andrew --
 
Not a video tutorial, but I found this useful:  
http://www.bluishcoder.co.nz/handbook.pdf
 
Regards,
 
Mike
 



From: andrew.penneba...@gmail.com
Date: Tue, 23 Aug 2011 20:25:58 -0400
To: factor-talk@lists.sourceforge.net
Subject: [Factor-talk] TryRuby, etc.

Has anyone made an interactive online tutorial for Factor comparable to TryRuby?

Cheers, 


Andrew Pennebaker
www.yellosoft.us
-- 
EMC VNX: the world's simplest storage, starting under $10K The only unified 
storage solution that offers unified management Up to 160% more powerful than 
alternatives and 25% more efficient. Guaranteed. 
http://p.sf.net/sfu/emc-vnx-dev2dev
___ Factor-talk mailing list 
Factor-talk@lists.sourceforge.net 
https://lists.sourceforge.net/lists/listinfo/factor-talk
-- 
EMC VNX: the world's simplest storage, starting under $10K The only unified 
storage solution that offers unified management Up to 160% more powerful than 
alternatives and 25% more efficient. Guaranteed. 
http://p.sf.net/sfu/emc-vnx-dev2dev
___ Factor-talk mailing list 
Factor-talk@lists.sourceforge.net 
https://lists.sourceforge.net/lists/listinfo/factor-talk
   --
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management 
Up to 160% more powerful than alternatives and 25% more efficient. 
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


[Factor-talk] Can anyone point me to a library for manipulating Windows

2011-01-02 Thread Michael Clagett

I'm hunting for a library that can be used to help me do quick and dirty 
Windows/GDI programming with Factor.  Has anyone created such an animal yet?  
Thanks.
  --
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Can anyone point me to a library for manipulating Windows

2011-01-02 Thread Michael Clagett


Thanks, Joe.
From: arc...@gmail.com
Date: Sun, 2 Jan 2011 21:38:34 +0530
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Can anyone point me to a library for manipulating
Windows



On Jan 2, 2011, at 8:35 PM, Michael Clagett wrote:I'm hunting for a library 
that can be used to help me do quick and dirty Windows/GDI programming with 
Factor.  Has anyone created such an animal yet?  Thanks.

If you want really quick and dirty, there are raw FFI bindings to a 
decent-sized chunk of the Win32 API in windows.kernel32, windows.user32, 
windows.gdi32, etc., though you'll have to fill in missing bindings for things 
that Factor's cross-platform UI doesn't directly use. I don't believe anybody's 
developed a higher-level binding.
-Joe

--
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] aspects and querying factor code

2010-12-29 Thread Michael Clagett

I haven't used AspectJ, but Attributes in .NET can be used for the same purpose 
and I have done that.  I don't know how the Attribute syntax compares with 
Aspect J, but I have found it to be very clean and you may want to look at it 
as food for thought in what you are trying to do.  I don't want to pollute 
Factor-Talk with unrelated content, so if you want to take this offline for a 
while until you can bring it back to Factor, please feel free to ping me at 
mclag...@hotmail.com. 

 Date: Wed, 29 Dec 2010 17:25:45 +0200
 From: k_lu...@gbrener.org.il
 To: factor-talk@lists.sourceforge.net
 Subject: [Factor-talk] aspects and querying factor code
 
 Hi guys, does anyone know where I can find jamesnvc 's aspects vocabulary?
 I think it really fits in with factor. james used annotate to implement 
 it, don't know if it was finished.
 
 Thanks, Kobi
 
 PS:
 why is it of interest? I recently read about aop: (but haven't tried yet)
 In addition to querying, it can be used to implement contracts cleanly 
 (maybe with predicates), and keep the supporting code away from the 
 actual logic (thereby keeping factor's elegant code, even in real world 
 apps). Atleast that's the promise.
 i'd like to experiment with this, and see what further customizations 
 are possible.
 
 if you have experience (for example with AspectJ from java, or others), 
 please share.
 
 
 --
 Learn how Oracle Real Application Clusters (RAC) One Node allows customers
 to consolidate database storage, standardize their database environment, and, 
 should the need arise, upgrade to a full multi-node Oracle RAC database 
 without downtime or disruption
 http://p.sf.net/sfu/oracle-sfdevnl
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Integrating Browser functionality into Listener: John Benediktsson's Syntax Highlighting

2010-11-15 Thread Michael Clagett

Shaping --

If you do embark on the effort you propose below, I  would be happy to work on 
it with you (although I would think you would want to find at least one old 
hand to participate as well).  What you describe is very close to what I intend 
for my own factor-like environment that I described to you previously and so 
I'm going to be doing a lot of the same design work anyway.

Sounds like a good project to sink one's teeth into for really going up the 
factor learning curve.

Regards,

Mike

 From: shap...@charter.net
 To: factor-talk@lists.sourceforge.net
 Date: Sun, 14 Nov 2010 21:15:10 -0600
 Subject: [Factor-talk] Integrating Browser functionality into Listener: John  
 Benediktsson's Syntax Highlighting
 
 Hi John/all.
 
 I still have some Git exercises and maintenance to do tonight, but I tripped
 over this http://planet.factorcode.org/ and want to see where it might lead.
 
 The syntax highlighting is interesting to me.  I'm wondering whether we can
 change the Listener GUI into a color vocab browser that focuses more on code
 and less on the navigation links and doc and examples, as in the current
 Browser. There is a place for those too, obviously, but I'm trying to change
 the emphasis a little to make development faster and to reduce the amount of
 typing of words into the Listener.
 
 One possibility:  Split the Listener vertically, placing the usual Listener
 command line progression on, say, the right side, and another pane on the
 left. The idea is that, when you need to know what a word means, because you
 are trying to use it, or are wondering whether you even have the right word
 or concept in mind, you can type it into the Listener, and instead of doing
 
 \ some-word see
 
 you could instead dynamically search for the word's definition by either
 clicking on the word or just hovering over it.  I'm thinking that if you
 access and display the word's definition on hover-over, instead of on
 click-on, you could rapidly scan colored formatted word definitions in the
 left pane.  You could have, say, a line of words entered into the Listener,
 scan over them left to right (or whichever way) with your mouse, looking at
 their color definitions flash through the pane on the left.  When you hit a
 word that is especially interesting/confusing, you click on it to lock that
 definition into the left pain.  You can now wander up to the definition in
 the left pane with your mouse and continue the process of scanning over its
 words, drilling down toward primitives, until you are convinced you
 understand enough to complete the expression at hand.  Every time you want
 to drill, stop scanning with your mouse and click on the interesting word to
 popup yet another pane below the one you were in when you clicked on the
 interesting word. Or, you could stack your definition windows on top of each
 other, as you drill, and provide a context menu back command, or just use
 some forward/backward arrows in the GUI to go back and then go forward
 again, just as you would in the HTML help Browser.  So why do this?
 
 If you are in a coding app and not a browsing app, you could not only scan
 and study as you drill, you can also scan and edit the command line you are
 building.  Maybe Ctrl-click on a word to append it to the end of the
 Listener's command line.  (Maybe the other way:  Ctrl-click for doc and
 click for appending.)
 
 I want to get around faster, and to assemble correct Factor expressions, the
 first time.  I don't want to see an example for a word before I see the code
 for the word.  The reason for this is subtle but important:  I want to
 understand the words increasingly quickly when I read them and their
 definitions, and not by remembering necessarily several favorite examples,
 which memories I will acquire anyway if I can use the word successfully in
 my own word definitions a few times.  Having a bad time reading words
 creates a drive to improve the words, especially because you are now reading
 definitions more often than examples (which I think I would want to put in a
 nearby pane or in an examples tab in the same pane).  I don't want to use
 English explanations and examples as crutches for reading Factor fluently.
 I want to write better words and patterns of them.  Being required to read
 definitions first may be a healthy source of pressure in that direction. 
  
 I'm also thinking that the stack-effect data could be more binding than it
 currently is.  I noticed while compiling some new words that the compiler
 will infer a stack-effect, and tell you when you've written it incorrectly.
 This looks almost binding.  So my suggestion/question is:  Can we use the
 stack effects to check at least the superficial (type- and count-based)
 correctness of a forth expression, as it is assembled on a Listener command
 line?
 
 Also, concerning literals and stack objects, when you mouse-scan those, you
 could get an inspector, also on the left in its own pane, under your last
 

Re: [Factor-talk] Building Factor in Visual Studio

2010-10-10 Thread Michael Clagett

Never mind.  I was reminded of the Visual Studio command prompt and am just 
building with the NMakefile from there.  Seems to be working ok.  Sorry for the 
noise.

From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Sun, 10 Oct 2010 18:04:06 +
Subject: [Factor-talk] Building Factor in Visual Studio








Just trying to get a fix on this.  Have people been building Factor from within 
Visual Studio on WIndows XT 32-bit?  If so, any guidance?  (Trying to see if I 
can avoid the cgywin download thing).  

--
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2  L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2  L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk