00:00:00 --- log: started forth/06.03.20 01:03:24 --- join: amca (n=plump@as-bri-3-88.ozonline.com.au) joined #forth 01:03:55 --- quit: amca (Client Quit) 01:45:37 --- quit: segher ("Leaving") 01:56:12 --- quit: JasonWoof ("off to bed") 03:00:35 --- join: amca (n=plump@as-bri-1-118.ozonline.com.au) joined #forth 03:37:33 --- quit: Infight9 (SendQ exceeded) 03:57:40 --- join: neceve (n=Clau@unaffiliated/neceve) joined #forth 04:14:05 --- join: ecraven (n=nex@ns.AHL.Uni-Linz.AC.AT) joined #forth 04:14:17 good day #forth :) 04:15:24 gday 04:15:55 is there any better place than here for questions about stack machines (not only forth)? 04:16:48 I havent looked for one, but i would think this would be agood place to ask Qs about them 04:18:51 have you asked here about them before? 04:19:18 Have you read "Stack Machines" by Koopman? 04:19:43 yes, is there anything else freely available? 04:19:56 i found a few papers about stack machine implementations 04:21:16 Are you thinking purely of hardware stack machines, or vms as well? 04:22:08 purely hardware, though i'll probably implement a vm to play around :) 04:22:25 there might be more information online about stack machines under the term "MISC" (Minimal Instruction Set Machine) 04:22:34 :) 04:22:48 ah, i'll google :) thanks 04:22:59 Pleasure :) 04:24:22 one question, do you know if anyone implements an optimisation when compiling conventional languages to a stack machine like the following: change the order of parameters for a function to be optimal for the actual execution (if i have (lambda (x y) (- x y)) but - takes the parameters in the reverse order, treat the function internally as (lambda (y x) (- x y))) 04:24:33 (and all this on a larger scale of course) 04:25:51 I dont know myself 04:26:09 i was thinking this might save a lot of stack shifting if done correctly 04:26:11 Stack machines like the Java VM tend to not have the two stack system like Forth 04:26:27 you realise you was using LISP, rather than Forth notation dont you? 04:26:30 i like the two stack approach a lot 04:26:45 amca: yes, that optimization doesn't make any sense in forth :) 04:26:56 ;0 04:26:57 :) 04:27:01 last time i asked i used C and a few people said they didn't like it :) 04:27:36 probably cause they have religious views about C 04:27:47 could always have use forth notation ;) 04:29:03 Im trying to see how your earlier lambda statement applies to a stack machine, but cant figure it out myself 04:29:12 sorry, if you want i'll explain? 04:29:25 was you thinking of having a pre/in-fix to post fix parser or such? 04:29:55 say you have a word FOO that takes two parameters, it's body is : FOO SWAP / ; 04:30:51 okay. go on 04:31:46 now a smart compiler coult optimise the SWAP away, by noting that the parameters to FOO need to be reversed, so every time it encounters something that would compile to A B FOO, it actually issues B A FOO 04:32:12 i think im not understanding why you wouldnt have the parameters from the start swapped 04:32:43 because you are not writing forth code, but rather compiling C or Lisp or whatever to it 04:33:52 well most compilers from what I hear, convert source to a post-fix "intermmediate code" during compiling 04:34:17 so this "optimisation" wouldn't be too hard to do.. and save a lot of stack movement 04:34:50 Can i ask what your idea is for the project? 04:35:49 ecraven: that optimization could happen in several steps - basically partial inlining: replace every "foo" with "swap foo", replace the definition with ": foo / ;" (later completely inline foo), then look how far you can move swap to the front in the code, and if you can eliminate it there 04:36:06 an optimisation when compiling another HLL to stack machines 04:36:10 oxygene: so it would make sense? 04:37:49 ecraven: under the constraint I proposed last time: only for internal code, otherwise external callers will have no idea that foo needs swapped arguments 04:38:33 oxygene: in my lisp system i wouldn't have external callers :) 04:38:35 ecraven: ie. when compiling like eiffel compilers (full system optimization/compilation), that's okay. if it's file by file, like C, then I'd avoid partial inlining 04:39:09 are there any recent stack processors? what about chuck moore's stuff, are there any design docs? 04:39:18 even then you'd have to remember that your 'foo needs its arguments swapped. 04:39:33 though you could probably do something with macros.. 04:39:44 oxygene: i need information about inlining anyway, i just add actual argument order 04:40:06 : realfoo / ; : foo swap realfoo ; : foo ' swap , ' realfoo , ; compile-only 04:40:22 similar for your lisp :) 04:40:52 what does , do? 04:41:41 ecraven: stored a word at the current heap location 04:41:43 push the token on TOS onto HERE - ie compile the word you have on the stack at the current location in the definition. ("' baz" gives you the token/address/whatever identifier your forth has for baz) 04:43:18 how is ' swap , different from only swap inside a definition? 04:45:15 the second definition is "compile only". it instructs the compiler that it should get the token of swap and store it as next instruction in the currently generated word 04:46:07 basically those two definitions of "foo" say "on runtime, call foo - which calls swap and realfoo. on compile time, compile swap, then compile realfoo into the current word" 04:46:29 --- join: virl (n=virl@62.178.85.149) joined #forth 04:47:05 hi 04:47:26 hey virl 04:52:45 herst, wie gehts? 04:54:20 guad, donksche :) 04:54:35 mia maiszn echt amoi a fug in wea mocha :) 04:54:40 ..miaszn.. 04:57:03 jo des waer ned bled, nur gnu leut findn 04:57:47 moi merkn :) 05:12:48 --- join: PoppaVic (n=pete@0-1pool73-94.nas24.chicago4.il.us.da.qwest.net) joined #forth 05:13:31 --- quit: ecraven ("bbl") 05:23:29 hi PoppaVic 05:24:35 hiya, virl 05:24:37 could you give an example of commands your metabuilder would recognize? 05:25:17 RIght now, no.. I want to simply have something like sh, that combines Make. 05:25:36 I thought I'd had some examples, but it's sorta' mutating as I rip into issues. 05:25:42 hey PoppaVic 05:25:51 hiya, oxygene 05:26:25 oxygene: I was gonna' ask you something the other day... Lemme' see if I can recall where my head was. 05:26:47 the in-channel context of your inquiry yesterday is rather.. weak :) 05:27:25 a shell that combines make, well, for me that means it can execute following commands: cd, ls, mkdir, mv, cp, set compiler=gcc, define target, do list 05:27:43 OK.. I was jotting notes on the stacks and sych, (layouts or typing and whatnot), and it suddenly seemed to dawn on me... The issues is with the compiler and prototyping or lack thereof, isn't it? 05:27:58 virl: indeedy. 05:28:08 also piping and redirection. 05:28:44 PoppaVic: uh, some more context, please :) 05:28:45 Also strings and files and chars and funcs and - well, the whole schmoo 05:29:43 oxygene: I was thinking about how C "compiles" and then how Forths compile... and, it looks to me like everything I was even considering, such as "typing" is a runtime issue, instead of compiletime. 05:30:08 ..and that was when I sat back and asked myself "why?" 05:30:57 oxygene: it seems to me that all we need is to insure the compiling-code checks the typing and such.. 05:31:27 "check" as in inference? if so, take a cross section of functional languages, done :) 05:32:07 Right.. I'm thinking of "prototypes" and a new header-field, and those need to be checked only during compiling. 05:33:49 oxygene: and, at runtime, shit would be allowed to fail as usual, methinks. 05:33:53 and that header field will basically carry what we now write as stack comments? (ie. input and output configuration) 05:34:25 right.. Or merging stack-comments and locals-stuff. 05:35:11 the field would be a list 05:35:31 right, or a string of some form. 05:35:59 a forth/pascal string would be the best 05:36:40 no, I meant like a printf or sscanf format-string.. *something* like that. 05:36:59 so the compiler knows without searching the list, how much input arguments it has 05:37:30 what about variable length input? 05:37:33 a format string what should it show? 05:37:34 right.. and it can emulate a stack while compiling. Keeping track of i/o 05:37:52 emulate a stack - hmm.. loops? 05:37:59 oxygene: yes.. Not sure how that gets handled. I'm open to sensible suggstions. 05:38:11 how about you ask slava? seems like he has taken care of such issues in factor already 05:38:14 yeah, the compiler would have to, I imagine. 05:38:34 hmm 05:39:14 I could, or even start reading the factor source (downloaded a week or so ago), but I felt I'd toss it into the Courtarena ;-) 05:40:54 It all would slow down the compile of words, but.. hmm.. Don't we gain something, as well as what seems like enough to manage FFI as required? 05:42:33 virl: it'd have to track order, types and ultimately the number-of or sizeof.. 05:42:36 --- join: granv (n=grahame@82-38-120-89.cable.ubr01.hali.blueyonder.co.uk) joined #forth 05:43:52 virl: also, while I can understand some stack-gymnastics, it just sems to me that we use them all far too often. 05:45:05 PoppaVic: I'd say that they are not encapsulated enough 05:45:07 Or... phrased sideways: if the comiler could see a "picture" of what comes in and goes out, it seems like it could do away with most gymnastics while compiling the pcode 05:45:38 amca: yes, that too... Working on my notes about that sorta' led me into this typing and possible prototyping stuff. 05:45:49 * amca nods 05:47:02 After all, while asm-programmers are used to loading and saving regs, they also reuse all over... While, C compilers look at it first, and then lay down code - which might then be checked later for "optimizations" 05:47:33 /at it/at the proto/ 05:48:20 brb... nature screams 05:53:20 --- join: madwork (n=foo@derby.metrics.com) joined #forth 05:54:49 ahh 06:04:05 --- quit: amca ("d34d") 06:07:06 Hmm.. What a pita. 06:41:56 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 06:41:56 --- mode: ChanServ set +o JasonWoof 06:44:53 hi JasonWoof 06:45:21 hi :) 06:48:02 context is everything, in portable systems 06:53:54 yeppers 06:54:32 * JasonWoof looks at the channel log to get a little context 06:56:10 I'm fascinated of contexts in the sense that one call of a routine can produce different outputs for example, each is different because it uses not the same code. for example one routine which can in one case execute routine a of lib a in the other case it uses routine a of lib b 06:56:44 in xell that will be an important element. 07:03:34 Yeah, Skakespeare said "The play is the thing" - he was wrong, it's context... I think that's what I'm trying to zoom in on, with this code. 07:03:48 brb - beerrun.. 07:03:52 --- quit: PoppaVic ("Pulls the pin...") 07:20:21 --- join: PoppaVic (n=pete@65.143.47.0) joined #forth 07:21:19 ta-da! 07:24:04 What's the context? ;-) 07:42:13 --- join: oldman (n=nobody@lsi-01.bit.uni-bonn.de) joined #forth 07:49:39 right 08:03:18 PoppaVic: factor infers stack effects but i might switch to explicit 'annotations' (parsing stack comments) since inference is slow 08:03:30 bbl 08:03:34 ahhh 08:04:01 Yeah, I sorta' thought so... 08:12:27 --- quit: OrngeTide (zelazny.freenode.net irc.freenode.net) 08:12:46 --- join: OrngeTide (i=orange@rm-f.net) joined #forth 08:29:15 --- part: oldman left #forth 09:14:41 well, retroforths vector words show what I mean with contexts 09:15:16 I read very few of the docs 09:15:31 it's topheavy with x86 09:27:38 virl: contexts are common to decent C... GTK+ is an overkill example. 09:29:12 What *I* have found weird is, when I looked around for "calling conventions", I learned most C++ bitches use a hidden, last-argument, as "this" - even in stdarg vararg situations. 09:55:41 GTK+ should use it? well, there I don't see contexts or in any other C lib 09:55:53 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 09:56:59 yeah, GTK+ passes contexts all over - and THEN they bend rules 11:02:54 you have to recall, "contexts" are - in C - mostly a related func given a "state" ptr to a "context-struct" 11:04:05 Alternately, you use the "context-ptr" to access a "context-function" within a vtable or some other mess. 11:20:40 --- quit: warpzero ("leaving") 11:34:07 --- join: warpzero (n=warpzero@wza.us) joined #forth 11:38:08 --- quit: PoppaVic (Read error: 110 (Connection timed out)) 11:46:09 --- join: LOOP-HOG (n=chatzill@sub22-119.member.dsl-only.net) joined #forth 11:50:37 --- quit: tathi ("leaving") 11:56:44 Come On People! Do I have to get a Unix box and host a MUCK myself! 11:58:55 a MUCK? 11:59:35 sounds like MUCK is halfway between IRC and MUD 11:59:44 a text baised multi user dungeon baised in Forth 12:06:13 oh. I missed the "in forth" bit 12:06:40 there is #forthmud 12:06:43 but it's pretty dead 12:06:55 afaik nothing has been done towards a forth mud in months 12:27:50 --- quit: Raystm2_ (Read error: 104 (Connection reset by peer)) 12:28:02 --- join: Raystm2 (n=Raystm2@adsl-69-149-37-198.dsl.rcsntx.swbell.net) joined #forth 12:31:05 --- join: Lars_G (n=lars@unaffiliated/lars-g/x-000001) joined #forth 13:12:46 --- quit: Cheery ("Leaving") 13:24:02 --- part: Lars_G left #forth 14:10:39 --- quit: granv (Read error: 104 (Connection reset by peer)) 15:09:20 --- quit: uiuiuiu (Remote closed the connection) 15:09:24 --- join: uiuiuiu (i=ian@dslb-084-056-248-164.pools.arcor-ip.net) joined #forth 15:20:25 --- join: tathi (n=josh@c-68-81-250-189.hsd1.pa.comcast.net) joined #forth 15:57:07 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-135-218.pools.arcor-ip.net) joined #forth 16:09:09 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 16:09:09 --- nick: snoopy_1711 -> Snoopy42 17:24:57 --- quit: tathi ("leaving") 18:41:32 virl: despite the fact you hate OOP so much, note that OOP is really just a way to switch a bunch of "deferred words" (methods) in and out in batches 18:42:16 virl: having DEFER EMIT to make the EMIT word pluggable is no different from a Stream abstract class with a write method 19:47:31 --- join: madgarden_ (n=madgarde@Kitchener-HSE-ppp3577296.sympatico.ca) joined #forth 19:49:12 --- join: amca (n=plump@as-bri-1-159.ozonline.com.au) joined #forth 19:49:19 --- quit: JasonWoof (Read error: 110 (Connection timed out)) 19:49:22 --- join: ratziggurat (n=madgarde@Toronto-HSE-ppp3712957.sympatico.ca) joined #forth 19:49:23 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 19:49:25 --- mode: ChanServ set +o JasonWoof 19:49:25 hi 19:49:25 hi 19:49:25 --- quit: madgarden (Read error: 110 (Connection timed out)) 19:49:41 what's new? 19:49:47 --- quit: madgarden_ (Read error: 110 (Connection timed out)) 19:49:56 --- quit: LOOP-HOG (Remote closed the connection) 19:49:59 damn, my computer crashed while I was out 19:49:59 hope nobody said anything to me 19:49:59 maybe I should log irc 19:50:02 i'm optimizing bootstrap 20:02:45 --- nick: ratziggurat -> madgarden 22:19:06 --- log: started forth/06.03.20 22:19:06 --- join: clog_ (n=nef@bespin.org) joined #forth 22:19:06 --- topic: 'Welcome to #forth. We discuss the Forth programming language, simplicity, and a variety of technical subjects. The rules are simple: don't spam, don't troll, and please speak English.' 22:19:06 --- topic: set by Quartus on [Sat Jan 21 17:32:55 2006] 22:19:06 --- names: list (clog_ @JasonWoof madgarden amca Snoopy42 uiuiuiu Raystm2 warpzero OrngeTide madwork virl neceve Jim7J1AJH ccfg saon @crc slava Zymurgy clog arke oxygene) 22:23:46 I like fiddling around with bits and bytes 22:24:21 JasonWoof: You like to play with your bits ? :P 22:25:07 virl: What do you view OOP as in contrast? 22:25:47 in contrast? 22:26:27 in contrast to "this '.' conventions and the terms constructor, destructor and perhaps soon also garbage collector" 22:27:29 like if OOP is not those terms, what is it to you? 22:28:49 handling data like objects and methods, well I don't have time 22:29:13 --- quit: virl (Remote closed the connection) 22:32:19 --- log: started forth/06.03.20 22:32:19 --- join: clog__ (n=nef@bespin.org) joined #forth 22:32:19 --- topic: 'Welcome to #forth. We discuss the Forth programming language, simplicity, and a variety of technical subjects. The rules are simple: don't spam, don't troll, and please speak English.' 22:32:19 --- topic: set by Quartus on [Sat Jan 21 17:32:55 2006] 22:32:19 --- names: list (clog__ clog_ @JasonWoof madgarden amca Snoopy42 uiuiuiu Raystm2 warpzero OrngeTide madwork neceve Jim7J1AJH ccfg saon @crc slava Zymurgy clog oxygene arke) 22:34:11 --- quit: clog (Read error: 110 (Connection timed out)) 22:34:11 --- nick: clog__ -> clog 22:41:04 --- quit: amca ("d34d") 22:48:42 --- quit: clog_ (Read error: 110 (Connection timed out)) 23:14:13 --- join: apgo (n=apgo@59.204.186.195.cust.bluewin.ch) joined #forth 23:41:14 404 on http://www.ultratechnology.com/chatlog.htm ? 23:41:32 from http://www.forthology.com/channel.html 23:54:45 man, there's a lot of source code in herkforth right now 23:54:58 given there's two forth systems. but still 23:55:51 apgo: I e-mailed thinfu (the administrator of forthology.com) about that a couple days ago 23:56:28 I've got a copy of that days chat log here: http://jasonwoof.com/downloads/forth_channel_chuck_moore_interview_02-05-04.txt 23:56:39 some day I'll learn to make decent file names ;) 23:59:59 --- log: ended forth/06.03.20