Re: [Factor-talk] Talk about Factor
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" > 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
[Factor-talk] Pattern matching and Algebraic Data Types
Hi -- Getting back into Factor after a year-plus hiatus. I am about to familiarize myself with whatever facilities exist for working with Algebraic Data Types and pattern matching in the vein of what Languages like Haskell and ML provide. Any suggestions of what to look at would be greatly appreciated. Thanks. Mike Sent from my iPad -- Comprehensive Server Monitoring with Site24x7. Monitor 10 servers for $9/Month. Get alerted through email, SMS, voice calls or mobile push notifications. Take corrective actions from your mobile device. http://p.sf.net/sfu/Zoho ___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] Test Driven Development
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" wrote: > Michael Clagett 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] Test Driven Development
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 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 Factor-talk@lists.sourceforge
Re: [Factor-talk] embedding factor
Also interested in this. Sent from my iPhone On Nov 30, 2012, at 3:25 PM, "Naveen Garg" 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] Quick Question For Chris Double
unity likes to foster, I am contemplating (not promising, mind you, but definitely seriously considering) putting together a series of introductory discussions for the Factor user to some of the more powerful concepts I encountered in the Clean book. I would probably do this by a series of concept tutorials that work through a handful of the half dozen or so serious examples that are in part 2 of the Clean book and demonstrate how you would code them in Factor (much along the lines of Chris’s blog that got me started on all of this). Of course my underlying agenda is to answer some of this for myself and to learn Factor well enough to be able to pull such an exercise off.So I would expect anything coming from me to get better as it goes along. Now I could try to do all this myself, but given what a busy guy I am, chances are that if I did, this would remain largely the stuff of pipe dreams. So anyone else wishing to engage in such an effort would be most appreciated and welcomed and would help make this idea actually come to fruition. Also, I’m sure there’s stuff out there that I don’t know about that is more geared to the newcomer than some of the things I’ve been looking at, so no need to reinvent the wheel . Given these caveats, here’s an introductory list of topics (in no particular order) I would propose to cover. Any feedback on suitability and valuable additions/deletions would be greatly appreciated: Defining by combination in Factor and effective use of Higher Order FunctionsPartial parameterization and Currying Effective use of Pattern matching Effective alternation (if/else, switch, etc.) Iteration in Factor Induction and Recursion Lists, Tuples, Records and Arrays in Factor Effective use of named stack parameters and local variables Overloading – effective use of Factor’s Generics List and array comprehensions and lazy sequences in Factor Creating and using effective algebraic data structures This is more or less the set of concepts needed to slog your way through some of the more extended Clean examples, so I’m assuming they are available in one form or another in Factor as well. Even if there is a good treatment of all these concepts available already in one place or another, it still might be valuable to have them all pulled together and applied in an integrated way to a series of coherent examples. And I've found in the past that it can be valuable having the efforts of a group coordinated by a single editor, who helps achieve consistency and coherence. Of course if any of this does materialize, we’ll have to find a place to put it (I don’t think you want me posting tutorials here). But I’ll cross that bridge when it actually becomes an issue. Talk is cheap after all. Sorry about the long post. It seemed potentially worthwhile, however. From: mclag...@hotmail.com To: factor-talk@lists.sourceforge.net Date: Tue, 4 Sep 2012 21:43:27 + Subject: Re: [Factor-talk] Quick Question For Chris Double Damn you, Chris Double! Now you have me reading the Functional Programming in Clean book. Please, don't ever answer any of my questions so helpfully again. > From: chris.dou...@double.co.nz > Date: Sat, 25 Aug 2012 01:39:41 +1200 > To: factor-talk@lists.sourceforge.net > Subject: Re: [Factor-talk] Quick Question For Chris Double > > On Fri, Aug 24, 2012 at 11:29 PM, Michael Clagett > 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 >
Re: [Factor-talk] Quick Question For Chris Double
Damn you, Chris Double! Now you have me reading the Functional Programming in Clean book. Please, don't ever answer any of my questions so helpfully again. > From: chris.dou...@double.co.nz > Date: Sat, 25 Aug 2012 01:39:41 +1200 > To: factor-talk@lists.sourceforge.net > Subject: Re: [Factor-talk] Quick Question For Chris Double > > On Fri, Aug 24, 2012 at 11:29 PM, Michael Clagett > 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] Comments on 'Your First Program
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 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
Re: [Factor-talk] Comments on 'Your First Program
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 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
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" 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] Quick Question For Chris Double
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" wrote: > On Fri, Aug 24, 2012 at 11:29 PM, Michael Clagett > 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
[Factor-talk] Quick Question For Chris Double
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] Is there a Factor.js ?
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" wrote: > On Thu, Aug 23, 2012 at 11:46 AM, Michael Clagett > 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] Is there a Factor.js ?
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" 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 ?
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 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] Any way of making sense of what's in the boot image?
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" > mailto: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
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" 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/lis
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" 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 endpo
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" 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?
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)? slot ( obj m -- value ) Vocabulary slots.privateInputs and outputs obj an object m a non-negative fixnum value an object Word description Reads the object stored at the nth slot of obj. 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. So am I understanding this correctly? By the way, the words you pointed me to are exceedingly useful, thank you very much. I hate to be so needy, but this is foundational stuff that will help me immensely with my task (which should produce documentation goodies for the entire community). 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 "hashtable"vocabulary"hashtables" 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 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 o
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 "hashtable"vocabulary"hashtables" 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 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: too
Re: [Factor-talk] Any way of making sense of what's in the boot image?
Something just occurred to me about the message below. Could it be that this array is some sort of underlying layout of the hash table and that the slots of the target array that hash table contents are mapped to are the underlying buckets that the hash function maps to? If this were the case, it still leaves as a mystery why this gets returned from asking for slot # 4 of the hash table. Maybe I'll go look in the cpp code for the underlying implementation of hash table and this will all reveal itself. From: mclag...@hotmail.com To: factor-talk@lists.sourceforge.net Date: Thu, 16 Aug 2012 13:01:45 + Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image? 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 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" 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 > > 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 > >> > wrote: > >> > > Here'
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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" 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 > > 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 > >> > 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-
Re: [Factor-talk] Any way of making sense of what's in the boot image?
Beautiful. Thanks. Sent from my iPhone On Aug 15, 2012, at 11:30 AM, "Doug Coleman" 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 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" 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 >> 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 >>>> 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 >>>> >>>> >>>> --
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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" 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 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 > > 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 sec
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 > 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?
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 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 > 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-*), t
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 > 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/501222
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 > 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 secu
Re: [Factor-talk] Any way of making sense of what's in the boot image?
(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 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 > >> 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 > > > > --
Re: [Factor-talk] Any way of making sense of what's in the boot image?
yes. I've come back to haunt y'all. > 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 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 > >> 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 > > > > --
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 > 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?
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 0CONSTANT: rt-entry-point 1CONSTANT: rt-entry-point-pic 2CONSTANT: rt-entry-point-pic-tail 3CONSTANT: rt-here 4CONSTANT: rt-this 5CONSTANT: rt-literal 6CONSTANT: rt-untagged 7CONSTANT: rt-megamorphic-cache-hits 8CONSTANT: rt-vm 9CONSTANT: rt-cards-offset 10CONSTANT: rt-decks-offset 11CONSTANT: rt-exception-handler 12CONSTANT: rt-dlsym-toc 13CONSTANT: rt-inline-cache-miss 14CONSTANT: 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. Thanks. Mike > 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 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-i
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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 > > 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 > > 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:
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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 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 builtins set [ ( -- ) call-effect ~array~ ~quotation~ each "fixnum" "math" create register-builtin "bignum" "math" create register-builtin "tuple&q
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 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 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 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?"
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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 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 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" &q
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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 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-th
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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 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?
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 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?
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 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?
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?
> > 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?
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
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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
Re: [Factor-talk] Any way of making sense of what's in the boot image?
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 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?
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 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
[Factor-talk] Any way of making sense of what's in the boot image?
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] Shared libraries considered harmful
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 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
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 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 te
Re: [Factor-talk] Shared libraries considered harmful
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
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
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!
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] Cheat sheet?
I want to make sure you are aware of these: First Program ( "first-program" help ) https://github.com/mrjbq7/re-factor/raw/master/docs/first-program.pdf Cookbook ( "cookbook" help ) https://github.com/mrjbq7/re-factor/raw/master/docs/cookbook.pdf Language ( "handbook-language-reference" help ) https://github.com/mrjbq7/re-factor/raw/master/docs/handbook.pdf System ( "handbook-system-reference" help ) https://github.com/mrjbq7/re-factor/raw/master/docs/system.pdf Tools ( "handbook-tools-reference" help ) https://github.com/mrjbq7/re-factor/raw/master/docs/tools.pdf John Benediktson (sp?, sorry) was kind enough to generate these recently from the docs. Date: Wed, 21 Sep 2011 18:25:29 +0100 From: withnom...@gmail.com To: factor-talk@lists.sourceforge.net Subject: Re: [Factor-talk] Cheat sheet? Oh id love one, especially since im not a frequent factor coder; would make it easier to do write more code in factor. On Fri, Sep 16, 2011 at 12:19 PM, Patrick Mc(avery wrote: I really miss not having a cheat sheet for factor, it's a great way to get a compete but high level view of a language. Does anyone know if there is one kicking around? If not I will try to make one tonight, perhaps the list can help me fix errors and omissions after. -Patrick -- BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA http://p.sf.net/sfu/rim-devcon-copy2 ___ 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. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 ___ 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. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] Mixed up about deployment
One quick clarification, if you would be so kind. Isn't it true that even after the image file is loaded there is still an interpreter present (as with Forth) that can permit subsequent interpretation of new stuff even if everything in the image file has already been compiled? > Date: Fri, 9 Sep 2011 10:10:15 -0700 > From: sl...@factorcode.org > To: factor-talk@lists.sourceforge.net > Subject: Re: [Factor-talk] Mixed up about deployment > > Hi Patrick, > > On Fri, Sep 9, 2011 at 5:22 AM, Patrick Mc(avery > wrote: > > With factor, what is happening during deployment? Is there an > > interpreter built into it's own executable like py2exe? : > > http://www.py2exe.org/ > > When you run the Factor VM binary named 'factor', it loads an image > file named 'factor.image'. Similarly, when you use the deploy tool to > deploy your app, it creates an image file named 'myapp.image', and > copies the VM binary to a new binary named 'myapp'. > > > I don't know much about smalltalk, are there any downfalls to this > > approach? does it mean heavier memory use at runtime? is there more > > redundancy between files compared to files being sent to a separate > > interpreter at runtime like Lua? Disk spaces is almost irrelevant now > > but it would still be good to know. If several instances of the same > > program were running at the same time would there be memory waste vs the > > other approaches? > > A good way of thinking about the image is that it is a cache for > parsed and compiled code that just happens to be serializable to disk. > While Factor does use more memory than Lua for various reasons, it is > not anything inherent in the image model. Lua has the same data > structures in memory after you load a source file -- syntax trees, > bytecode, and JITted code. It just doesn't offer a way of saving them > to disk, so you "deploy" by giving your users the source code and an > interpreter, instead of an image file and a VM. > > Cheers, > > Slava > > -- > Why Cloud-Based Security and Archiving Make Sense > Osterman Research conducted this study that outlines how and why cloud > computing security and archiving is rapidly being adopted across the IT > space for its ease of implementation, lower cost, and increased > reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/ > ___ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk -- Why Cloud-Based Security and Archiving Make Sense Osterman Research conducted this study that outlines how and why cloud computing security and archiving is rapidly being adopted across the IT space for its ease of implementation, lower cost, and increased reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] TryRuby, etc.
Yes I guess it is. Probably better to use on-line documentation for more up-to-date info. Still, I found this a pretty useful read on the train. Much of what's here, though, is in the Reference section of the on-line docs. > Date: Wed, 24 Aug 2011 13:03:11 -0700 > From: sl...@factorcode.org > To: factor-talk@lists.sourceforge.net > Subject: Re: [Factor-talk] TryRuby, etc. > > I can't load that link right now, but IIRC this is just the old Factor > 0.72 docs in PDF format. > > On Wed, Aug 24, 2011 at 1:00 PM, Andrew Pennebaker > wrote: > > "Note that this handbook is not a tutorial..." > > --Forward to the Factor Developer's Handbook > > > > It's still a valuable resource. Thanks. > > Cheers, > > Andrew Pennebaker > > www.yellosoft.us > > > > > > On Tue, Aug 23, 2011 at 11:15 PM, Michael Clagett > > wrote: > >> > >> 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 > > > > > > -- > 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
Re: [Factor-talk] TryRuby, etc.
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
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
Re: [Factor-talk] Can anyone point me to a library for manipulating Windows
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
[Factor-talk] Can anyone point me to a library for manipulating Windows
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] aspects and querying factor code
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
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
Re: [Factor-talk] Git: Repository ->Verfiy Database warnings on freshly cloned and pulled repo
Shaping -- If you switch to some other forum to troubleshoot your git issues, could you please post a message here telling us where it is. I am following this discussion (and would like to continue to do so) to save myself some pain and aggravation when I go through the same process. Thanks. Mike From: shap...@charter.net To: factor-talk@lists.sourceforge.net Date: Mon, 15 Nov 2010 05:38:40 -0600 Subject: Re: [Factor-talk] Git: Repository ->Verfiy Database warnings on freshly cloned and pulled repo I imagine that someone has seen the problem before and already knows the issue. Has anyone tried to verify a fresh clone and seen this problem? I suppose it doesn't matter much, if the problem still exists for all of us, and hasn't caused any problems. Then, again, I may be the only one doing the verify; it's convenient from the GUI. I think most of us are using the Git Bash. Shaping From: John Benediktsson [mailto:mrj...@gmail.com] Sent: 2010-November-15, 05:10 To: factor-talk@lists.sourceforge.net Subject: Re: [Factor-talk] Git: Repository ->Verfiy Database warnings on freshly cloned and pulled repo Can someone explain this? How serious a problem is this? Does it indicate corruption in my local repo? Would it be possible to keep out-of-topic questions out of this list (this one should be posted on a git users mailing-list since it has nothing to do with Factor)? They seem to arrive faster than I am able to mark them as "ignored". I have to agree. Generally I'm in favor of helping out where possible, but the discussion here is overwhelming and not about Factor. If you want some iterative help like this, perhaps IRC or other sources would be better? Don't misunderstand - your Factor ideas are very welcome and encouraged. Thanks,John. -- Centralized Desktop Delivery: Dell and VMware Reference Architecture Simplifying enterprise desktop deployment and management using Dell EqualLogic storage and VMware View: A highly scalable, end-to-end client virtualization framework. Read more! http://p.sf.net/sfu/dell-eql-dev2dev ___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk -- Centralized Desktop Delivery: Dell and VMware Reference Architecture Simplifying enterprise desktop deployment and management using Dell EqualLogic storage and VMware View: A highly scalable, end-to-end client virtualization framework. Read more! http://p.sf.net/sfu/dell-eql-dev2dev___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] Building Factor in Visual Studio
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
[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