00:00:00 --- log: started forth/07.08.11 00:02:07 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 00:02:07 --- mode: ChanServ set +o slava 00:44:41 --- join: ygrek (i=user@gateway/tor/x-6b5e18850cc237bf) joined #forth 01:24:56 --- join: jns (n=jens@p57B06B49.dip.t-dialin.net) joined #forth 04:01:42 --- quit: lukego () 04:34:33 --- join: Al2O3 (n=Al2O3@12.144.193.67) joined #forth 04:56:07 --- quit: Al2O3 () 05:59:13 --- join: Al2O3 (n=Al2O3@216.143.252.231) joined #forth 06:00:44 --- join: Al2O3_ (n=Al2O3@gatekeeper.greshamstorage.com) joined #forth 06:06:54 --- quit: Al2O3_ (Read error: 104 (Connection reset by peer)) 06:06:54 --- join: Al2O3__ (n=Al2O3@gatekeeper.greshamstorage.com) joined #forth 06:16:28 --- quit: Al2O3 (Read error: 110 (Connection timed out)) 06:54:34 --- join: tnovelli (n=me@pool-72-79-234-10.spfdma.east.verizon.net) joined #forth 08:06:24 --- join: H4ns (n=Hans@p57A0D12F.dip.t-dialin.net) joined #forth 08:08:35 --- quit: ygrek (Remote closed the connection) 08:15:55 --- join: ygrek (i=user@gateway/tor/x-dd16d874a17e3f69) joined #forth 08:27:40 --- part: tnovelli left #forth 08:38:40 --- join: tetonca (n=chris@66.155.140.234) joined #forth 08:41:39 --- quit: H4ns (Read error: 113 (No route to host)) 08:50:57 --- join: H4ns (n=Hans@p57A0D12F.dip.t-dialin.net) joined #forth 09:11:36 --- join: tnovelli (n=me@pool-72-79-234-10.spfdma.east.verizon.net) joined #forth 09:21:42 --- join: edrx (i=edrx@201.5.12.152) joined #forth 09:36:09 --- part: tlockney left #forth 09:36:37 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 09:36:37 --- mode: ChanServ set +o Quartus 09:37:03 hey 09:48:44 --- part: edrx left #forth 09:52:10 yo. 09:52:18 how are things? 09:52:22 not bad. 09:52:37 umm.. what's your current project? 09:53:10 Living in the 21st century whilst maintaining equilibrium and peace of mind. You? :) 09:53:50 Yeah, same thing, and putting together some demos. 09:54:17 I could've sworn you were writing a compiler or something, though.. 09:54:33 Quartus Forth is alive and well. 09:54:41 I am working on a Forth book. 09:55:37 any interesting niches you're covering? 09:56:38 It's a textbook teaching programming to those new to Forth; trying to be as broad-spectrum as possible, at least in the current edit. 10:00:47 Hmm... I wrote a Forth compiler, but never really learned the language...not well enough to use it for everything 10:00:51 heh. 10:00:58 That happens a lot. 10:01:06 I've seen it mentioned here. 10:01:18 repeatedly :-) 10:01:34 I wrote a date calculation prog in Quartus Forth and had the beginnings of a graphical UI from some other dev. kit I was going to leverage in Quartus. 10:01:44 I'm beginning to think something like Factor is necessary for Forth to compete in the modern world. 10:01:46 It's easier to write a Forth, at least most of a Forth, than it is to learn to use Forth well. 10:01:55 tetonca, interesting 10:02:26 That was when the Palm III was still not very out of date. 10:03:01 My favourite Palm, from a form-factor standpoint, was the V. 10:03:17 My present JDN calculator can slew a million years into the future and back, and not lose it's place. ;) 10:03:30 It's not that I had trouble finishing Retroforth... in fact I rewrote most of the assembler routines in Forth, and got it down to a 20-30 asm-word core.. 10:05:20 Well, some Forths are more complete than others, certainly. When you survey hobby Forths, you find they commonly drop off sharply before, for instance, implementing CREATE/DOES> properly. 10:05:35 hehehehe 10:05:36 The first 80% is 20% of the effort. 10:05:46 I don't understand why hobby forths are not encouraged. 10:05:51 you get CREATE/DOES> right, you can do the rest in Forth :-) 10:06:40 Maybe I should write a book of my own: How To Write A Hobby Forth The Right Way :-) 10:06:44 I'm not discouraging hobby forths; I'm commenting on the form they usually take. It's the work of a few days to write the first 80% in some working form; the last 20% is at least four times harder than the first 80 10:07:40 I tend to work on stuff like i2c drivers for micros; a hobby forth is far beyond my skill at present (and indeed may always be). 10:07:54 Finding the right name for a word is brain-tasking for me. 10:07:57 I would discourage anyone new to Forth who wishes to learn to program in it, from beginning by writing a toy Forth; I think it's entirely the wrong end of the stick, and can get you mired in wrong thinking and bad habits. 10:08:10 Feh. If you can sort through the typically crappy i2c docs, you can deal with Forth. 10:08:35 I have only 1 of 4 cases of i2c reasonably well working. 10:08:37 But as Quartus says, you ought to use one before you write one. 10:08:47 I can write to PCF8574. That's about it. 10:09:01 Keep at it. 10:09:27 Tnx. I want the case going where C8051F330 is the receiver (has the address we want to speak to). 10:09:58 --- join: ecraven (i=nex@eutyche.swe.uni-linz.ac.at) joined #forth 10:10:00 Then I can expand my micro projects on i2c bus which'd broaden my horizons. 10:11:15 I also have a working c2 interface from one 'F330 to another to initialize a new device. 10:15:06 TreyB: It's easier to find a good Forth (for Linux etc.) than 10 years ago when there was just gforth, eforth, pforth.. which didn't adhere to the "spirt of Forth" very well. 10:16:38 You'd think that would reduce the number of hobby forth's.. but apparently not 10:20:46 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 10:20:46 --- mode: ChanServ set +o tathi 10:26:19 Hey tathi 10:27:37 well, I promised my wife I'd go for a bike ride with her.. gotta go :-) 10:28:09 ciao 10:30:27 cya. 10:41:34 Hi all 10:41:40 what's new? 10:42:39 I got some stuff for irrigation today, have to decide how exactly I want to set that up. 10:44:50 I did a couple of little text-filtering things yesterday, tried doing them in Forth, but gave up and used awk instead. 10:45:42 I really haven't figured out how to deal with text in Forth well yet. 10:48:48 You could develop a useful wordset for that sort of thing, but for one-off work awk already exists. 10:49:17 sure. 10:54:24 Yeah...awk never quite seems to fit my problems, but it hasn't been a bad enough match yet for me to figure out how to do it in Forth... 10:58:02 I fflib'd a regex library to gforth awhile ago for a particular project 10:58:56 Did that work well? 10:59:02 yes, without incident 11:01:08 PCRE? 11:01:33 I believe that was the animal, yes 11:01:52 does pcre support unicode? 11:01:56 factor could bind to it too 11:01:58 Don't recall 11:02:27 probably 11:03:43 so I hear that PCRE is pretty slow compared to sed, egrep, etc.... 11:03:59 there's an incomplete regexp written in factor but it needs work 11:04:01 I hadn't heard. 11:04:30 I thought it'd be neat to do a fast DFA regex in Forth, that compiles regexes to machine code.. 11:06:45 I also read something about Ken Thompson's fast NFA routine... used in sed/egrep/etc... I think it uses DFA unless you use a nondeterministic expression 11:07:46 DFA = deterministic finite automata, NFA = nondeterministic (unpredictable speed, may not terminate) 11:07:58 I'm sure you've read more about it than I have. PCRE was more than fast enough for my purposes. 11:08:01 NFAs certainly do terminate 11:08:21 regexps in general have a problem though, certain inputs/regex patterns result in exponential match time 11:09:48 I think DFAs are guaranteed to be linear time, or something less than exponential 11:10:14 but yeah, PCRE is adequate for most purposes 11:12:02 PCRE vs. Thompson NFA: http://swtch.com/~rsc/regexp/regexp1.html 11:14:40 --- quit: timlarson (Read error: 110 (Connection timed out)) 11:30:36 food for thought :-) anyway, see y'all later 11:30:38 --- part: tnovelli left #forth 12:07:22 --- quit: tetonca ("User disconnected") 12:20:03 --- join: timlarson (n=timlarso@66.213.50.2) joined #forth 12:28:21 man, c.l.f is the only place in the world where peple can get into a heated discussion on something as banal as numeric base prefixes. 12:29:32 hehe 12:29:44 no kidding 12:30:12 I was under the impression that most language discussion groups could get pretty heated about stupid things 12:30:17 well, that's true 12:30:29 but the discussion in c.l.f. is at least typical 12:31:15 i don't know, to me it seems that 0xff -vs- HEX ff -vs- $ff is totally irrelevant in the big scheme of things 12:31:23 true 12:31:28 its not like using the ideal prefix will lead to good design, performance and stability 12:31:50 there are some minor arguments in favour of certain approaches 12:36:37 i'm surprised doty hasn't chimed in about the superior approach taken by LSE64 to signify non-decimal literals 12:39:40 I'm sure he will. 12:42:06 Quartus: what editor do you use? 12:45:30 Whatever one is at hand. joe, often. Notepad, sometimes. An old DOS editor called 'sled', on occasion. 12:45:59 I can't come down on either side of the vi/emacs argument; I don't like either. 12:47:25 How about you? 12:47:33 i use jedit 12:47:41 i was wonderinf if your editor had fancy forth-specific features 12:47:59 I have a forth colouring facility in joe. 12:48:04 ah. pretty? 12:48:12 a novelty. 13:11:44 --- quit: Al2O3__ (Read error: 104 (Connection reset by peer)) 13:25:46 --- quit: ygrek ("Leaving") 14:13:02 slava: I just noticed you posted a few of my website links to Reddit. I discovered it when I got an abnormally large number of hits from that site. :) 14:13:08 (reviewing my website logs) 14:13:13 Thanks for the links. :) 14:15:14 --- quit: timlarson (Read error: 110 (Connection timed out)) 14:51:28 --- join: timlarson (n=timlarso@user-12l37rb.cable.mindspring.com) joined #forth 15:02:39 anybody else seeing PoppaVic endlessly blither on ##c? He does it for hours and hours at a stretch. 15:02:55 right now? 15:03:02 yes, and at any given point 15:03:26 [17:57] pnk: we get thousands of folks that feel a bit or an octet is a byte or a word or it all means something "universal" - it gets intolerably old. 15:04:52 i see he has a fan club. 15:05:20 I wonder that he isn't driven out. He misinforms and bloviates continually. 15:08:47 --- mode: ChanServ set +o crc 15:08:58 hi crc 15:09:05 hi Quartus 15:10:07 --- quit: ecraven ("bbl") 15:11:34 look, I can be an arsehole ##c pedant too! 15:11:46 yes, but you run the risk of being correct 15:13:02 he's also considerable crass and foul-mouthed; you'll need to try harder to compete :) 15:13:04 what sets PoppaVic off? mention of OOP? 15:13:38 as I recall, yes; mention of anything including the word 'interpret' or 'evaluate' 15:17:24 PoppaVic: slava: If I had my way, everyone would understand interp/compile/exec and we'd all share an endian once and for all. 15:23:42 saw that 15:25:24 he was on about how old and experienced he is, earlier 15:29:54 PoppaVic: meanwhile, "infinity" means "just listen while I keep spewing" 15:30:00 very apt 15:33:01 the eternal and temporal, eh? :) 15:40:17 and I see gavino is trying again in c.l.f. 15:40:32 I also wonder that they never tire of this silly crap 15:41:27 where does he find the time to post all these inane one-liners? 15:41:48 well, he's a basement dwelling troll with no life. But more importantly, why does he doe it? 15:42:12 i think you just answered your own question 15:42:37 have I? I mean, it's easy to say he's a troll; he trolls, so it's merely descriptive. But it doesn't say why. 16:44:00 --- quit: Quartus (Read error: 110 (Connection timed out)) 16:44:12 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 16:44:12 --- mode: ChanServ set +o Quartus 16:56:45 --- join: FMota (n=fmota@dhcp-36-203-57-69.cf-res.cfu.net) joined #forth 16:57:04 --- join: Al2O3 (n=Al2O3@12.144.193.67) joined #forth 16:57:54 Heh. I found this channel by looking at old logs, when I searched for 1xforth on Google 16:59:01 these logs: http://tunes.org/~nef/logs/forth/05.09.11 16:59:08 hello FMota 16:59:15 Hi. 16:59:18 are you a floating point motorola chipset with Forth on it? 16:59:25 Thus FMota for a handler? 16:59:30 haha, no 16:59:31 :) 16:59:45 well, welcome to the forth channel. 16:59:48 right before the 5th 16:59:59 thank you 17:00:12 Herkamire rocks. 17:00:36 check out the retroforth and pforth distros, they are worthy. 17:00:47 ok, thanks 17:02:13 I was actually thinking of forth with a higher signal-to-noise ratio... 17:02:21 what's with all those colons and semicolons? :/ 17:02:52 : is a word that, when executed, defines a new word with the behavior specified after it -- in other words, it is the compiler 17:02:59 ; stops the compilation. 17:03:22 I know what they do, and that they are somewhat necessary 17:03:48 Well, it's a bit like asking what all the equals signs are doing in an functional programming language. :D 17:04:11 but, and I admit Im not very experienced with forth, it seems like every other line begins with a colon 17:04:22 Yes. 17:04:38 There are two competing coding patterns in Forth. 17:04:48 oh? 17:04:49 The first is to use a "vertical" format for code, which tends to look vaguely like normal C. 17:04:58 The other, which is the original, is to use a more horizontal format. 17:05:06 hmm 17:05:09 In this format, : word definition ; fits on one, maybe two, lines. 17:05:24 The idea is to think of a glossary or a dictionary entry. 17:06:02 right 17:06:13 anyway, I was thinking of doing away with : and ; 17:06:29 which sort of makes it un-foth-like 17:06:32 *forth 17:06:34 and replacing them with what? 17:06:47 The only alternatives are color and significant whitespace. 17:06:55 * kc5tja has thought of using caps/lowercase distinction too. 17:06:55 significant whitespace 17:07:15 Since I like Python and Haskell, I would have no problems with significant whitespace. :) 17:07:19 as in, if you put a word at the beginning of a new line,. its a definition 17:07:39 but if its whitespace at the beginning, its not a definition (der) 17:07:49 Kind of like old-school assemblers. 17:07:54 yes 17:08:01 * kc5tja is dating himself. :D 17:08:05 (also, "what's with all the equals signs in functional programming language[s]"? Which ones? 17:08:10 its like they're just labels :o 17:08:22 ) 17:08:26 gnomon: Hahah -- Haskell, SML/NJ, Erlang, OCaml, ... 17:08:34 gnomon: I was being facetious though. :) 17:08:47 ;) 17:08:58 imagine haskell used the same notation for function calls as python 17:09:05 that would be a lot of noise 17:09:13 FMota: It almost does. 17:09:14 :) 17:09:17 kc5tja, ah. Ok. 17:09:31 f x y z = do blah 17:09:32 hey gnomon 17:09:36 blort 17:09:39 ...etc... :) 17:09:49 I said for function calls 17:09:55 Hey, slava! What ho? 17:09:55 instead of f x y z 17:09:57 But I like Haskell. Like Forth, it really encourages high factorization. 17:10:05 you'd say f(x,y,z) 17:10:06 Factor looks nice too, though I've not used it yet. 17:10:34 FMota: Actually, speaking from experience, more often than not, I invariably end up using (f x y z), so it ends up looking more like Lisp. :) 17:10:54 Also, lots of $ sprinkled in to collapse the ()s. 17:10:57 oh, the other thing I was thinking about is about Charles Moore's 1xforth 17:11:39 well, (f x y z) is still better than f(x,y,z) 17:11:43 :) 17:11:48 * kc5tja released a new blog post somewhat drawing loose similarities to memory management in Forth and in languages like Haskell and SML/NJ 17:12:07 FMota: It certainly allows for easier currying. Both a good and a bad thing. :) 17:12:09 :o 17:12:17 yep 17:13:15 back to 1xforth: in this colon-and-semicolon-free forth, your only real control structure is if 17:13:31 Yes, and good riddance too. 17:13:33 forth memory management? 17:13:36 what memory management? :) 17:13:50 BEGIN/AGAIN/REPEAT/WHILE/UNTIL are nice, but often get in the way. 17:14:00 i like higher-order functions for iterating over structures 17:14:04 http://www.falvotech.com/blog -- read it for yourself. :) 17:14:09 counted loops and such, not so much 17:14:23 Counted loops are trivial with recursion too. 17:14:37 Just need tail recursion optimization to get it to play nice. 17:15:19 Usually, though, I'll define some word that I use inline with code. 17:15:32 Something like: 5 repeat: some stuff here 17:16:10 so, the way I thought about it was, when you use 'if', if the test succeeds, you keep going on that line. If the test fails, you skip the rest of the line and go to the next one. 17:16:14 : repeat: r> swap 0 ?do dup execute loop drop ; 17:16:25 however, you wouldn't normally go to that next line 17:16:35 in other words, if does a two-way branching by default 17:17:15 hmm 17:17:17 example 17:17:51 fact dup 0 = if drop 1 17:18:04 dup 1- fact * 17:18:21 (I know, this is a terrible implementation of fact) 17:19:15 In some respects it reminds me of Smalltalk code. 17:19:23 someMethod: aParam with: anotherParam 17:19:35 ^self forwardToAnotherMethod: aParam with: anotherParam 17:21:57 Hmm. I guess I'll just improve on that factorial... 17:22:04 fact 1 swap fact' 17:22:33 fact' 0 test drop (where x test is the same as dup x if ) 17:22:52 dup >r * r> fact' 17:23:39 : fact 1 swap [m..n] product ; 17:24:00 :o 17:24:11 That's Factor code, BTW, not Forth. :) 17:24:13 I suppose that works 17:24:26 even better, we can do : fact (0..n] product ; 17:25:07 factor, huh 17:26:01 oh, the final thing I was thinking of simplifying was a little more esoteric 17:26:10 (if that makes any sense) 17:26:39 >r could be called { and r> could be called } 17:26:49 that way you always can ttell if they're paired up 17:26:56 *tell 17:27:20 --- quit: jns (Remote closed the connection) 17:27:41 in joy, you have a dip word instead of >r and r> 17:27:44 you pass a code block to dip 17:28:10 that's basically the same thing 17:28:28 except it doesn't allow you to fiddle with the return stack 17:28:36 it also enforces nesting 17:28:41 pairing, even 17:29:22 that's safer, but it gives you less options 17:30:47 anyway, I should probably try making an interpreter for my simplified forth 17:31:17 *cough*, I mean, 'simplified' forth 17:34:31 and with that, I'm off. Sushi ;) 17:34:38 --- nick: FMota -> FMotAFK 17:36:08 --- join: tnovelli (n=me@pool-72-79-234-10.spfdma.east.verizon.net) joined #forth 17:36:58 hey tnovelli 17:37:04 are you the original developer of retroforth? 17:38:11 yeah 17:39:39 tnovelli: You thought I'd forget. You were wrong. 17:39:43 tnovelli: Yes, I'm into Haskell. :) 17:40:02 tnovelli: CUT is my latest project using Haskell (CUT 3 prototype is written in it, soon to be re-released as CUT 2.6). 17:40:45 oh yeah, so, uh, what turned you over to that dark side? heh.. I have barely touched Haskell, but it seems very cool, but oh so weird... 17:40:57 Forth did. 17:41:03 Forth has _strong_ functional similarities. 17:41:31 Plus, a lot of buzz was surrounding the language (in a positive way), so I figured I'd take the time to learn it. 17:41:39 Plus, there were a few bugs in darcs that I wanted to hammer out. 17:41:51 Alas, by the time I had the fluency in the language I was happy with, the bugs were already fixed. :) 17:42:09 darcs sucks 17:42:29 So, I rewrote CUT 2.4 in Haskell to make the language more "real-world" concrete to me. 17:42:47 I like darcs. 17:42:50 But it has problems. 17:42:55 its only suitable for toy projects 17:43:04 My website is hardly a toy project. :) 17:43:09 Not at 200MB and counting. 17:43:13 it doesn't scale to a large number of patches, at all 17:43:16 (eeesh...I really need to prune it somehow) 17:43:28 This depends. 17:43:44 slava: I noticed that when I started to get factor 17:43:59 for a get, there's no problem, you just do darcs get --partial and it only gets since the last checkpoint 17:44:06 You need to keep your patches relatively small. 17:44:09 aha 17:44:17 My site has hundreds of patches, and it blows right through them. 17:44:19 i shouldn't have to do anything to workaroudn flaws in the vcs. 17:44:24 * kc5tja has never checkpointed. 17:44:28 slava has thousands 17:44:45 Then use git. 17:44:50 i have > 3000 patches and dozens of contributors; i can't control everything, nor do I care to waste time working around some crusty haskell academic's idea of a scalable algorithm 17:44:57 git doesn't work on Windows yet, does it? 17:45:01 yes it does, in cygwin 17:45:07 oh, cool. 17:45:21 Actually, the author of darcs is a physicist. 17:45:25 He is not a Haskell academic. 17:45:32 I would even argue that that is the problem. 17:45:44 while we're on the subject, what's bad about SVN? 17:45:49 or, at least, the historical cause. 17:45:50 its centralized 17:46:27 Centralized repositories are OK, but as your developer base increases, and patch submission rate increases geometrically as a result, you quickly find yourself svn update'ing more than you svn commit. 17:46:28 a distributed vcs is better for open source projects 17:47:19 They also alleviate the whole "Who has commit access" problem too. 17:47:33 yes 17:47:45 Patches can be submitted through a chain-of-trust system instead of through sponsorship, which can be manipulated on political grounds. 17:47:51 So the quality of submissions tends to be higher too. 17:47:53 hmm 17:48:03 This is not to say that svn is a poor tool. 17:48:13 I just think it doesn't scale well as project size grows. 17:48:22 We use Perforce at Google, and I hate it. 17:48:32 here's a program which asks darcs to spit out a complete change lot on xml format, parses the xml, then prints a formatted table with the sorted tally: 17:48:32 http://www.factorcode.org/repos/Factor/extra/contributors/contributors.factor 17:48:33 jeez, everyone works for Google now :-) 17:48:49 "complete change log in" 17:48:56 Much of my time is spent p4 sync'ing, then merging, commiting, realizing someone ELSE made a change, p4 sync'ing again, merging, ...ad infinitum sometimes. 17:49:11 I don't work FOR Google. I only work AT Google. 17:49:21 But, I'm hoping that will change at some point. 17:49:22 :) 17:49:26 heh 17:49:48 try doing that in forth. you'd have to write an xml parser, a utility to spawn processes and read pipes, a sort algorithm, ... :-) 17:50:10 slava: You had to write that code for Factor. 17:50:22 no, contributors did :) 17:50:31 http://www.factorcode.org/repos/Factor/extra/ 17:50:36 Whatever. 17:50:39 SOMEONE had to write it. 17:50:47 that's why I use python for hacking 17:50:48 right, but now it exists 17:51:04 sadly, there's no base of tested, documented libraries for ANS Forth 17:51:25 Lisp & Scheme have the same problem as Forth 17:51:33 common lisp has plenty of libs 17:51:59 slava: Hopefully, Forth 200x will resolve that. That's a hot topic from what I understand. 17:52:02 but try gettting them to all work together :) 17:52:13 Lisp libraries work well together. 17:52:14 tnovelli: i don't think that's a problem. CL has good support for abstraction and modularization 17:52:21 Lisp has an ANSI standardized library/module system. 17:52:27 It's scheme that is the problem child. 17:52:42 That's also on the chopping block for R6RS too. :) 17:53:08 there's some things forth 200x cannot address. 17:53:19 for example, complete built-in unicode support 17:53:26 oddly enough, I have better luck with Scheme than CL 17:53:28 Looking at : contributors, I find the nested blocks there to be inscrutible. I just can't tell what the things are doing. 17:54:06 The first line, "changelog authors patch-counts sort-keys ", however, is VERY easy to read. 17:54:13 Very (if I dare say it) object oriented. :) 17:54:15 yeah, table output can be messy 17:54:31 <...> is a constructor. so yeah, its somewhat OOP 17:55:51 Factor is definitely on my queue of languages to learn. 17:56:01 But, it's been added only after Haskell, OCaml, and Erlang. :D 17:57:26 I'm thinking about Factor for Tunes-related experiments... but not until it's cleaned up :-) 17:57:33 cleaned up how? 17:57:41 isn't tunes pretty much dead? 17:57:56 yeah, i'm trying to revive it 17:58:12 even slate is dead, now 17:58:20 it used to be the only active sub-project for a good 5 years 17:58:27 there's enough interest to get Tunes going again, except people are very busy with work 17:58:29 its a pity, slate had much potential 17:58:58 I'd like to see a "lessons learned" doc from the Slate people 17:59:15 lessons learned: if the guy working on your compiler quits, the project is pretty much stalled 17:59:17 I'm writing a better one for the Retro Tunes-related work 17:59:49 It sounds like Slate got too slow 18:00:19 if Retro was too low-level, Slate was too high-level :-) 18:00:28 i don't think it was too high-level 18:00:41 it just didn't get enough contributors/sustained activity 18:01:05 say, anyone here actually *like* smalltalk? oh yeah, crc :) 18:01:06 just a lot of "omg wtf bbq tunes!!111 can i see some screenshots of your OS" 18:01:19 i think smalltalk is great, but current implementations are trash. 18:01:28 smalltalk 80 and squeak 1.x were cool. 18:01:43 brb 18:05:04 back 18:06:02 I like smalltalk. 18:06:09 But Squeak is just beyond me. 18:06:18 And Squeak runs slower than a Commodore VIC-20 on my box. 18:06:30 the crucial thing for Tunes is to get all these languages working together smoothly 18:06:39 (well, the VM runs VERY fast; the graphics output is horrifyingly slow) 18:06:52 Heh, see CLR. :) 18:06:57 kc5tja: oh yeah, I was not impressed with current Squeak.. 18:08:55 if you're on a mac, http://www.ambrai.com/ is a very slick smalltalk. 18:09:19 hmm.. can CLR programs call each other no matter what language you use? 18:09:34 the CLR, just like the JVM, defines a common object system 18:09:52 it seems like there'd still be messiness 18:09:59 so you can compile language into bytecode, then instantiate classes and call methods 18:10:11 well, depends on how the language uses the CLR object model 18:10:27 if all your objects are hashtables, then using them from C# will be a pain, sure 18:11:53 in the end, neither the JVM or CLR are language-independent, whatever that means 18:12:08 you pay a price which is inversely proportional to how closely your language follows the semantics of C#/Java. 18:12:50 right.. JVM would've stopped Tunes in its tracks 10 years ago, if the JVM/CLR approach "worked" 18:12:59 factor used to run on the JVM 18:13:11 to implement continuations and tail calls, I basically had to manage my own return stack 18:13:28 heh 18:13:32 when I started compiling to JVM bytecode, everyday things like words returning multiple values had to be modelled by 'invisible wrapper' objects 18:13:35 so what stopped Tunes in its tracks 10 years ago? 18:13:50 Your compiler would be aware that it's compiling to the CLR, though, and thus could automatically generate thunks so that other languages uses your internal objects in a more "normal" manner. 18:13:52 there is an impedance mismatch 18:13:57 kc5tja: yes 18:14:04 I believe this is how COM-related software interfaces COM and CLR code. 18:14:18 JVM has no such capability, AFAIK. 18:14:25 Quartus: infighting killed Tunes 18:14:29 JVM and CLR are almost identical in what they can do, kc5tja. 18:14:31 elitism 18:14:48 kc5tja: CLR has some additonal minor features (value structs, easier callout to C) but for the most part, the object models and bytecode are very, very similar. 18:15:02 CLR is not more "inherently multi-language" than the JVM. 18:15:17 in fact, if you look at production apps, there are plenty of scripting langauges running on the JVM, but in CLR-land you basically have C# and VB.net 18:15:18 I didn't say it was. 18:15:33 Python.. Ruby.. 18:15:38 F# 18:15:51 CLR has Oberon, C++, Python, Haskell, SML, and many others. 18:16:09 (the fact that they got C++ working in the environment really shocks me though) 18:16:28 JVM has Jython, Scheme, Javascript.. 18:17:00 the popular ones on the JVM are Groovy, BeanShell, Jython, JRuby, and JSP 18:17:03 JVM has problems being compiled though. CLR is much more amenable to JITing (which is its original purpose). 18:17:13 how so? 18:17:21 both JVM and CLR implementations JIT these days 18:17:30 Sure. 18:17:50 But compare a BASIC compiler's output to a C++ compiler's output. C++ will give it the smack down anyday. 18:18:01 Both languages can be compiled. 18:18:08 But one is more _conducive_ to compiling than the other. 18:18:13 that's false. 18:18:34 neither the CLR nor the JVM have an advantage in this regard. 18:18:36 umm 18:18:38 OK. 18:18:40 both bytecode schemes are very, very similar 18:18:58 MS hardly innovated in this respect. 18:19:06 they could have come up with something a lot better than a JVM with value types 18:19:11 ok guys, enough already :-) 18:22:39 that was a real conversation stopper 18:22:48 well, asking it to stop was 18:22:53 seemed reasonable enough to me 18:22:57 No, I was just Googling. 18:23:13 Because, every indication I've seen so far was that CLR is faster than JVM. 18:23:21 But I've found a few sites to contest that. 18:23:30 Especially when compiled with GCJ. 18:23:36 GCJ is trash. 18:23:55 you cannot statically-compile a language with a high rate of polymorphic message sends and expect good performance. 18:24:13 Thankfully, GCJ doesn't do that. 18:24:14 you need runtime profiling and a type feedback JIT to figure out static properties 18:24:39 in java-land, anyway, JITs have long ago beaten AOT compilers in terms of performance 18:24:50 not startup time, of course, but that's irrelevant for long-running server apps which is Java's main niche 18:29:33 AOT? 18:29:38 ahead of time compilation. 18:32:37 --- quit: tathi ("leaving") 18:32:41 kc5tja: How do you like Haskell's typesystem? 18:33:36 tnovelli: what did you mean by factor being cleaned up? 18:34:09 tnovelli: I love it. 18:34:25 But, understand, I like *BOTH* typeful and type-free systems. 18:34:43 But as a statically typed language goes, it's extremely liberating, and yet, spot on in catching typing errors. 18:35:03 Sometimes it's a pain in the butt, but it's always worth it to work through the repeated type errors you'll invariably hit during compiling. 18:35:16 The resulting code 98% always does what you expect/want when run when it compiles. 18:35:25 slava: I couldn't get it to build.. issues w/ X 18:35:49 well in that case, it's better to report the problem and ask for help 18:36:47 I tried compiling without X, but I guess the bootstrap assumes X is supported? 18:37:28 what was the compile error? 18:38:28 Looking for some library I didn't have installed 18:39:05 It just seems like X support should be disentangled from the core language 18:39:14 its not entangled at all. 18:39:38 let me try the Darcs version and see what happens 18:39:44 the VM is linked with the X11 libraries by default, and the UI is loaded by default, too, because its a useful system not a minimalist one. but you can compile the VM with NO_UI=1 passed to 'make', and bootstrap with -exclude=ui 18:39:47 no, use 0.89 18:40:02 aha 18:40:17 if the gcc cannot find libX11, libGL or libGLU while linking, then make sure you have those libraries installed 18:40:23 -exclude=ui 18:40:29 i don't recommend doing tat 18:40:30 that 18:41:44 sorry, in 0.89, its not -exclude. 18:41:54 you bootstrap normally then pass the -shell=tty switch 18:42:25 I'm running Ubuntu, btw.. I went to install libGL (dev files) and it wanted to update like 20 dependencies.. I worried about screwing things up, so I tried compiling without X.. 18:42:51 I've had bad experiences with Debian, and I don't quite trust Ubuntu yet 18:42:56 I assume by default that people have X11 installed 18:43:01 it's a pretty safe assumption, for the most part 18:43:11 X11 binaries, yes, but not development libs 18:46:08 well anyway, when I download Factor 0.89, I'm getting a lot more than just the core language, right? 18:46:38 vm, core, library, docs 18:47:02 library = like Python's std. lib? 18:47:14 (huge) 18:47:15 well, nowhere near as large 18:48:31 I was sort of expecting 100-200k :-) 18:49:01 in darcs we have about 100kloc all up 18:49:05 but some of that is demos, etc 18:49:52 I mean 200k bytes.. comparing it to various Forths 18:50:09 a hello world turnkey image is 70kb. 18:52:07 actually, you can get it down to 3kb or so. 18:52:21 but its pretty pointless, because if you just want to write a hello world, may as well use 6502 assembly or something 18:52:38 what about the X interface.. is it really cool? 18:52:54 PEA hwMsg - hwMsgEnd 18:52:57 PEA hwMsg 18:52:58 PEA 0 18:53:02 JSR _printf 18:53:04 PLA 18:53:06 PLA 18:53:06 PLA 18:53:07 ;) 18:53:13 you can browse the docs, view and edit objects in the inspector, and you get some command completion features. 18:53:14 kc5tja: nice! 18:53:21 65816 machine language. 18:53:26 kc5tja: JSR _printf suggests you have a bloated C standard library there, though :( 18:53:57 * crc likes factor's ui 18:53:57 tnovelli: its a presentation-based UI. that's one of those tunes buzzwords :) 18:53:59 Maybe, maybe not. :) 18:54:13 Scheme has a 'printf' 18:54:14 Presentation-based UI? 18:54:35 yeah. if i ask factor to print out a list, then the textual output of the list is clickable and is linked to the original list, etc. 18:54:42 Well, I guess I have to try it 18:54:50 hmmm 18:54:55 so you really recommend 0.89? 18:55:36 * kc5tja has a hankering for iced tea. 18:56:29 tnovelli: yes 18:56:54 tnovelli: we have releases because they're somewhat tested 18:57:04 ok, here goes again 18:59:35 compiles the vm.. oops, ld can't find -lGL .. 18:59:52 ls /usr/X11R6/lib/libGL.* 19:00:26 oh yeah, I had to install freetype .. that was easy.. then GL and GLU.. that's where it got messy 19:00:35 it's a debuntu issue, really 19:00:46 if you have x.org, all those libraries are already installed. 19:00:52 if I was still running gentoo, this wouldn't be a problem 19:01:02 ubuntu makes it hard to get libGL? 19:01:03 you don't need the -dev packages, btw. 19:01:10 hmm 19:01:15 the -dev packages make a symlink from libGL.so.1.2.3 to libGL.so 19:01:20 so that -lGL can find the latest version 19:01:20 something's wacky here 19:01:21 that's all 19:01:26 you can also make the symlinks yourself. 19:01:34 doh 19:01:58 I had to do that for libcups.so to make Qcad work 19:02:47 Fare was right, Unix must die 19:04:07 success 19:04:17 Thanks! 19:04:39 I should spend more time on IRC 19:05:45 slava: You should put that in the "note about broken software"! 19:06:11 soon i'll have a build farm going which will build linux binary packages 19:06:20 and run unit tests on all architectures etc 19:07:50 neat 19:08:03 much less impressive than it sounds, Quartus 19:08:13 just a matter of some consistent shell scripts 19:08:18 well, a good idea, no matter how easy it is tos et up 19:08:23 yes, definitely 19:09:27 can Factor dynamically load libraries at runtime? 19:09:40 http://www.factorcode.org/responder/help/show-help?topic=alien 19:09:57 example: http://www.factorcode.org/repos/Factor/extra/x11/xlib/xlib.factor 19:09:59 include X, GL, etc? 19:10:36 I mean.. could it load X, GL, GLU, etc. that way, instead of when compiling the VM? 19:10:53 yes, but then the same problem would exist, i'd have to hardcode a path like "libGL.so" which would not be found if the symlink did not exist 19:11:21 by linking them with the VM, I dodge all "bootstrap suceeded but the UI doesn't run" questions 19:11:49 other bindings just do stuff like 19:11:50 : load-vorbis-library ( -- ) 19:11:50 "vorbis" { 19:11:50 { [ win32? ] [ "vorbis.dll" ] } 19:11:51 { [ macosx? ] [ "libvorbis.0.dylib" ] } 19:11:51 { [ unix? ] [ "libvorbis.so" ] } 19:11:52 } cond "cdecl" add-library ; 19:12:37 couldn't you search for libXXX.so.*? 19:12:51 that's a possibility, yes, but then which version do you load? 19:13:13 the latest? 19:13:29 the thing is I don't search the library path, I just call dlopen() 19:13:37 gotcha 19:13:40 and you can't ask dlopen for a list of libraries which begin with a given string 19:15:39 see, if tunes was finished, i wouldn't have to support unix and windows :) 19:15:58 if factor was finished, I'd use it for tunes :) 19:16:26 you want to write an OS in Factor, is that the plan? 19:16:36 not OS... "computing environment"! 19:16:36 me? 19:16:42 no, tnovelli 19:16:50 ok, an OS by some other name, then 19:17:02 a language-independent environment.. on top of other OSes for now 19:17:06 i'm building an interactive development environment in the spirit of smalltalk and lisp. tunes has the same goal 19:17:15 difference is i have code 19:17:34 I have it up now.. looks slick :) 19:21:59 yeah 19:22:50 http://www.factorcode.org/hacking-status-bar.png -- I like this window layout. 19:23:01 * kc5tja considers steali...er...borrowing the layout for use in the Kestrel. :) 19:23:07 * slava wonders where you dug up this ancient screenshot 19:23:17 kc5tja: i foudn the return stack display was mostly useless 19:23:21 I just googled for Factor Screenshots 19:23:46 http://www.factorcode.org/screenshot-23-7-7.png 19:23:52 Particularly for Forth, yes, it would be. 19:24:45 Do you have one with, say, no more than two windows on the screen? 19:24:48 I'm a tad bit lost in that image. 19:25:20 heh 19:25:47 holy mother of god, that's a big screen 19:25:53 :o slava, we use the same IM and the same IRC client 19:26:02 --- nick: FMotAFK -> FMota 19:31:15 tnovelli: 30" 19:32:00 I just bought two 20 inchers and I think they're sweet.. 30.. wow 19:32:15 Some folks at work have a 30" 16:9 screen. 19:32:17 *DROOL* 19:32:43 OK, I'm going to go read a bit. 19:32:46 at my first job I had dual 24" CRTs 19:32:56 mapping :) 19:33:21 i have the apple cinema display. it's pretty nice 19:33:21 * kc5tja has a single 24", but I can get another pretty easily if I wanted. 19:33:45 My wife has the other 20" so I only get one :) 19:33:58 err, :( 19:34:15 well, anyway, nice work, Slava! 19:36:21 it looks like a very full-featured *typed* forth 19:37:23 thanks 19:37:26 its not really a forth, though 19:39:42 did you ever see my little "Retro Conclusions" doc? I said Forth was missing some "je ne saix qua".. which Brian Rice pointed was, Types... judging by the sheer size of Factor, I'd say he was right.. 19:40:50 I guess having types makes it "not forth", FWIW 19:41:10 factor isn't that large, the darcs version has a modular bootstrap which allows you to get a development image < 1mb 19:41:14 and turnkeys can be smaller 19:41:29 it just loads a lot of stuff by default for convenience, and because most computers are quite powerful these days 19:41:53 loads instantly :) 19:43:26 whoa.. it's Reflective! 19:43:42 source is loaded during bootstrap 19:43:42 when you run an image it just maps the image into the heap 19:43:42 When you produce definitions, do you compile to native code? 19:47:55 kc5tja: it depends on whether the compiler is able to infer a static stack effect for the definition 19:48:25 i'm still undecided if eventually i want to move towards enforcing 100% static stack effects 19:48:29 I knew something like that was coming, after that JVM debate :) 19:49:39 enforcing static stack effects... could that be an _option_? 19:50:10 well, it's an option now, in the sense that if a word's stack flow cannot be shown to be static, the word will run in the interpreter 19:50:25 the compiler compiles words with static stack flow and applies assorted optimizations 19:50:41 its hard to infer types, unbox values, etc if you don't know what the stack will be like ahead of time 19:51:18 enforcing that rule would be nice if you need speed 19:51:32 catching mistakes ahead of time, also. 19:51:39 ( stack -- comments ) are checked 19:52:04 that's new 19:54:01 Dynamic scope.. hmm 19:54:23 in darcs, there's a library with lexical scope, too. 19:54:29 ok 19:55:29 so, do you make money from this? 19:55:38 no 19:57:03 --- part: tnovelli left #forth 19:57:13 --- join: tnovelli (n=me@pool-72-79-234-10.spfdma.east.verizon.net) joined #forth 19:57:15 lol 19:57:37 well, it's late.. i'll play with Factor tomorrow 19:57:39 see ya 19:57:44 --- part: tnovelli left #forth 20:06:11 --- quit: Quartus (Read error: 110 (Connection timed out)) 20:09:48 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 20:09:49 --- mode: ChanServ set +o Quartus 20:37:30 --- quit: Al2O3 ("Eggplant & SenseTalk: Driving Success Through Automation") 22:29:20 --- nick: FMota -> FMotAFK 23:56:32 --- join: edrx (i=edrx@201.5.13.126) joined #forth 23:59:59 --- log: ended forth/07.08.11