00:00:00 --- log: started forth/07.11.16 00:00:34 I think I'll need to be able to stack a few sets of keybindings 00:01:02 in my example of typing a word into a code definition, I'd need these sets of bindings in order: 00:01:53 1) the system-wide stuff that always works, 2) the (customized for only word-name-legal chars) text editor keys, 3) some word-level navigation words, since I'm in a definition too 00:02:54 --- quit: Quartus () 00:03:07 the system-wide stuff is always the same, so doesn't need to be involved in the FSM 00:03:08 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 00:03:08 --- mode: ChanServ set +o Quartus 00:03:12 the system-wide stuff is always the same, so doesn't need to be involved in the FSM 00:04:28 There's no reason not to put it in the FSM. 00:06:23 --- join: ecraven (i=nex@eutyche.swe.uni-linz.ac.at) joined #forth 00:35:14 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 01:10:06 --- quit: forther (Read error: 110 (Connection timed out)) 01:12:53 --- quit: proteusguy ("Leaving") 01:42:16 --- quit: Al2O3 ("Eggplant & SenseTalk: Driving Success Through Automation") 02:46:39 --- quit: saon ("CGI:IRC") 03:41:42 --- join: DeFrag (n=DeFrag@ppp91-122-8-95.pppoe.avangard-dsl.ru) joined #forth 04:00:26 --- quit: Quartus (Read error: 110 (Connection timed out)) 04:00:45 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 04:00:45 --- mode: ChanServ set +o Quartus 04:22:11 --- join: KipIngram (n=KipIngra@c-98-199-207-98.hsd1.tx.comcast.net) joined #forth 04:47:54 --- quit: ecraven ("bbl") 05:51:28 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 06:17:56 --- nick: TreyB_ -> TreyB 06:42:29 --- join: madwork (n=foo@204.138.110.15) joined #forth 07:16:47 --- quit: KipIngram (Read error: 110 (Connection timed out)) 07:26:17 --- join: ygrek (i=user@gateway/tor/x-70dbb1033c26f1da) joined #forth 07:42:53 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 07:42:53 --- mode: ChanServ set +o tathi 07:54:13 --- join: gnomon (n=gnomon@CPE0050eb372bdb-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 08:06:26 --- join: CyberKid (i=HydraIRC@c-68-63-244-236.hsd1.ky.comcast.net) joined #forth 08:24:07 --- quit: CyberSpace (Read error: 110 (Connection timed out)) 08:24:07 --- nick: CyberKid -> CyberSpace 08:24:44 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 08:26:48 --- join: timlarson__ (n=timlarso@65.116.199.19) joined #forth 08:44:28 --- quit: timlarson_ (Read error: 110 (Connection timed out)) 09:05:48 --- quit: Quartus (Read error: 110 (Connection timed out)) 09:06:07 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 09:06:07 --- mode: ChanServ set +o Quartus 09:07:44 --- join: arke_ (n=arke@p54A7C182.dip.t-dialin.net) joined #forth 09:23:40 --- join: Al2O3 (n=Al2O3@c-75-70-5-69.hsd1.co.comcast.net) joined #forth 09:25:05 --- quit: ygrek (Remote closed the connection) 09:25:28 --- quit: arke (Read error: 110 (Connection timed out)) 09:28:55 --- join: ygrek (i=user@gateway/tor/x-1ec84ef207dff5ab) joined #forth 09:45:32 --- join: timlarson___ (n=timlarso@65.116.199.19) joined #forth 10:03:20 --- quit: timlarson__ (Read error: 110 (Connection timed out)) 10:04:02 --- quit: tathi (Read error: 110 (Connection timed out)) 10:29:41 --- join: iano (n=iosgood@sub26-46.member.dsl-only.net) joined #forth 10:48:02 --- quit: timlarson___ (Read error: 104 (Connection reset by peer)) 10:48:33 --- join: timlarson___ (n=timlarso@65.116.199.19) joined #forth 10:55:01 --- join: ygrek_ (i=user@gateway/tor/x-47293ca270c31933) joined #forth 10:57:45 --- join: ecraven (i=nex@eutyche.swe.uni-linz.ac.at) joined #forth 11:12:05 --- quit: ygrek (Remote closed the connection) 11:12:07 --- join: KragenSitaker (n=kragen@panacea.canonical.org) joined #forth 11:17:04 --- quit: forther ("Leaving") 11:23:56 So does anyone have a Forth running as a real-time task under RTLinux? 13:05:29 I vaguely remember someone making a Forth that ran in kernel mode for a standard kernel 13:08:58 from c.l.f 2004: Rick Hohensee has made a Forth in the linux kernel. 13:09:31 --- quit: Al2O3 (Read error: 104 (Connection reset by peer)) 13:10:03 --- join: Al2O3 (n=Al2O3@c-75-70-5-69.hsd1.co.comcast.net) joined #forth 13:10:21 it was called H3sm 13:10:32 --- quit: Al2O3 (Success) 13:10:35 also search for cLIeNUX 13:13:14 look here: ftp://ftp.gwdg.de/pub/linux/install/clienux/interim/ for H3rL 13:13:27 Though it is five years old now. 13:15:20 --- join: kitsune (n=fox@166.129.173.180) joined #forth 13:26:03 --- quit: timlarson___ ("Leaving") 13:52:48 --- quit: Quartus__ ("used jmIrc") 13:53:03 --- join: Quartus__ (n=Quartus_@209.167.5.2) joined #forth 13:54:48 Hi. 13:56:30 --- join: saon (n=saon@207.138.42.211) joined #forth 14:12:03 --- quit: Quartus (Read error: 110 (Connection timed out)) 14:12:15 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 14:12:15 --- mode: ChanServ set +o Quartus 14:12:31 iano: yeah, i remember the rick hohensee thing 14:13:12 I also would be very interested in such a Forth. 14:13:25 the thing is, the linux kernel itself can't really meet real-time deadlines. that's why RTLinux exists --- by paravirtualizing Linux, you can run real-time tasks next to it 14:13:26 It would be marvelous for embedded Linux debugging. 14:13:37 oh, hey, i hadn't thought about that 14:13:40 and embedded hardware debugging 14:13:46 you're completely right 14:14:00 although for embedded hardware debugging you could probably get away with a gdb stub task or something 14:14:15 The OLPC folks have gone above and below that level: 14:14:17 but maybe forth on the embedded board would be nicer than scripting gdb :) 14:14:34 Open Firmware for hardware debugging without Linux 14:15:00 do you happen to know how to interrupt an infinite loop in OLPC Open Firmware? in June I wrote an Open Firmware program which had a bug 14:15:01 and a Forth that can run as root as a standard process for debugging with Linux 14:15:04 and as far as I know it's still running 14:15:13 :) 14:15:15 somewhere in Boston 14:15:24 Ask in #olpc 14:15:29 on old Suns it was L1-A or something 14:15:39 the OFW author Mitch Bradley is there now 14:16:06 if he doesn't know, no one does. :) 14:19:13 --- quit: DeFrag () 14:21:06 --- join: Al2O3 (n=Al2O3@c-75-70-5-69.hsd1.co.comcast.net) joined #forth 14:22:41 --- quit: ygrek_ (Remote closed the connection) 14:24:20 --- quit: Al2O3 (Client Quit) 14:25:27 yeah, stop-a should get you back out 14:25:38 or break on the serial terminal 14:25:47 (serial BREAK not ctrl-c) 14:32:37 lucca: you mean on the Sun, right? 14:32:57 right 14:48:20 yes, they did ;) 15:06:34 --- quit: ecraven ("gn") 15:09:20 --- join: crest__ (n=crest@p5489C64D.dip.t-dialin.net) joined #forth 15:12:27 --- quit: Quartus (Read error: 110 (Connection timed out)) 15:12:37 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 15:12:37 --- mode: ChanServ set +o Quartus 15:17:53 --- quit: crest_ (Read error: 110 (Connection timed out)) 15:19:19 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 15:19:19 --- mode: ChanServ set +o tathi 15:22:20 --- nick: arke_ -> arke 16:05:18 how goes it? 16:06:13 pretty good 16:06:28 tathi: where do i look for a colorforth i can nasm to life? 16:09:43 hmmm...qualdan.com/colorforth/ I think. 16:10:23 http://qualdan.com/colorforth/chuck05-jg5.tar.gz 16:10:26 thanks! 16:10:54 there might have been a couple of minor fixes, but I think that one should work, if any colorforth does on your box 16:11:42 heh 16:11:54 well, i assume i can get it to boot in qemu or something 16:12:44 KragenSitaker: this is a bit out of date, but may me some help: http://jasonwoof.org/colorforth_under_bochs 16:13:16 yes, quite likely 16:13:33 heh. I wouldn't be so quick to assume that. I don't recall hearing of anyone getting it to work under qemu. 16:13:37 bochs is amazingly slow, and you'll probably have to compile that old patched version yourself, but I was able to get it to work 16:13:41 (not that I pay much attention) 16:16:35 --- quit: gnomon (Read error: 110 (Connection timed out)) 16:17:15 the idea is that color16 or color32 occupy the first few sectors of a floppy disk? 16:17:21 yes 16:17:32 if you're running Linux you can use dd or something 16:17:41 yeah. even cp works. 16:17:49 oh, really? 16:17:57 heh. Well, that's colorforthers for you 16:18:02 always pushing the more difficult solution 16:19:50 heh 16:20:21 i think people used to use dd because on non-linux unixes, cp to a block device didn't usually do the right thing 16:20:36 looks like there's some remarks about getting it to boot from CD in the last few months: http://colorforth.cvs.sourceforge.net/colorforth/colorforth/jc2007/ 16:20:44 but of course i have no idea which version that is 16:21:28 hmm, jeff fox has said things like this over the years: 16:21:55 # and that he is going to compile a complete Forth system on top 16:21:55 # of the 1K before he starts an application. This is wrong. The 16:21:55 # complete Forth system is 1K, and the reason for that is 16:21:55 # maximize Chuck's productivity. What stops people from doing 16:22:29 but color32 and color16 are 72kiB each, not 1kiB 16:22:34 yeah. 16:22:52 the kernel is at least 8KiB, and he left 12KiB of space for it 16:23:00 --- quit: Quartus (Read error: 110 (Connection timed out)) 16:23:06 (IIRC) 16:23:15 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 16:23:15 --- mode: ChanServ set +o Quartus 16:23:19 most of it is colorforth source code to do various things 16:24:24 But yeah, it's not really all that small. 16:24:53 I keep saying that one of these days I'm going to write a little Standard Forth system with an editor that's no bigger than colorforth, but with more functionality :) 16:25:04 it's a normal size forth really 16:25:08 Haven't found the time or the motivation to actually do it though. 16:25:12 yup 16:25:40 well, a normal size minimalist forth 16:25:47 right 16:30:05 --- quit: kitsune (Read error: 110 (Connection timed out)) 16:35:20 apparently that version runs on qemu 16:35:34 but not on actual computers 16:35:37 oh, right. 16:35:58 that guy registered colorforth.sourceforge.net and has actually been doing some work on the thing. 16:36:34 I don't know why somebody doesn't just make a version that will run on almost anything. 16:36:34 did he start from your code, or an earlier jeff fox drop? 16:36:51 It can't be *that* hard to find code for a decent boot sector 16:37:02 earlier code, I think. 16:37:07 Pretty sure he's seen mine though. 16:37:10 you could probably use grub or something 16:37:19 There's not that much difference in the kernel. 16:37:40 i'm mostly interested to see the chuck moore programming style 16:38:03 oh god. you don't want to know 16:38:14 heh. I wasn't going to say it. 16:38:37 heh 16:38:50 i have cmForth so I have some idea :) 16:39:06 but I'm curious to see how his technique has evolved in the ensuing, uh, 18 years? 16:39:34 well, some of the Forth code probably isn't too bad, allowing for the restrictions imposed by colorforth 16:39:48 even if I wouldn't want to write code that was that hard to read, I still might learn some new ways of thinking about things 16:39:57 the asm core is pretty awful though 16:40:00 heh 16:40:14 that's what you get when you edit your program by hand-hacking a bunch of machine code 16:40:37 I'm particularly interested in Chuck's assertion that ROT implies you're using too many stack entries 16:41:48 well, chuck doesn't have to deal with reality 16:42:10 heh 16:42:25 also he says to just use variables when you get that much stuff to deal with 16:43:34 complex business rules, calls to win32 api, and other situations are hard to implement in chuck's style 16:43:41 right --- but not local variables. which implies that he's still managing to do a lot of stuff with a lot less hassle than I am 16:43:57 yeah, obviously you can't call select() without digging deeper than two elements into your stack 16:44:00 chuck writes programs for aesthetic beauty, not to solve practical problems 16:44:22 i'd like to see him try introducing colorforth in a j2ee shop :) 16:44:24 so too does sedgewick 16:44:39 but i learned a hell of a lot from reading "algorithms in c" 16:44:54 the only other C code I've seen that was that beautiful was in the Lions book 16:45:27 complex business rules a lot of times benefit from decision tables and things like that 16:45:38 yup 16:45:46 you can express hard problems with a DSL 16:45:56 that rids of you of accidental complexity but not essential complexity 16:46:03 and implementing the DSL is of course a project in itself 16:46:10 and you can probably traverse a decision table without too much stack wibbling 16:46:39 in general, avoid dogma such as "NEVER use locals" or "NEVER use rot" or "NEVER use that" 16:51:08 actually, I agree about ROT. I use it sparingly. 16:51:23 there's a difference between using something sparingly and condemning its use altogether 16:51:38 chuck thinks if you use ROT or if you use locals or if you use files then you're just a shit programmer 16:51:46 I get the impression that Chuck generally doesn't solve complex problems 16:51:52 he does 16:51:54 OKAD for instance 16:51:59 but he has full control over the entire scope of the problem 16:52:05 he doesn't have to interact with existing data, existing programs 16:52:10 or even existing operating systems 16:52:20 and he has all the time in the world to write (in his view) 100% perfect code 16:52:20 chuck works in the embedded space, don't forget. smaller problems 16:52:26 most other programmers don't operate like that 16:52:46 you have deadlines, you have existing software to talk to, you have to deal with messy stuff like XML, web services, Win32, etc 16:53:26 its the 100% perfection style that really determines his style 16:53:45 I get the impression he never stops tuning his code 16:53:57 yup 16:54:07 and he chooses problems where Forth is a good fit 16:54:18 and he's been writing forth implementations for the last 40 (?) years so he's tuned them pretty well 16:54:19 ...whereas the rest of us don't have that luxury 16:54:43 i think forth is a good fit for many problems, most of the barriers to its adoption are social not technical 16:54:54 remember, he has said he considers text manipulation problems "uninteresting" 16:54:55 the forth community does not value code reuse or having a solid base of tested, documented libraries ready to go 16:55:15 whereas that is an entire industry's livelihood! 16:55:37 and the domain of entire programming languages! 16:56:23 yeah, perl and python win big time in terms of sharing and community 16:56:59 yep 16:57:15 it's taken me a lon gtime to realise that (what slava said) 16:57:23 it's not that we can't agree on a good library 16:57:26 any individual library is easy to implement 16:57:27 it's that we don't really care to have one 16:57:34 do you want string concatenation and splitting? well that's a couple hours work at most 16:57:39 assuming your forth isn't buggy or broken to hell 16:57:50 --- join: arke_ (n=arke@p54A7E36D.dip.t-dialin.net) joined #forth 16:57:50 do you want sockets? 16:57:55 well that's easy too, if you read the docs for your OS 16:58:03 I personally far prefer to write my own library, than learn how to use an existing one 16:58:06 part of their win is working hard to establish a solid base for library development 16:58:08 want an http client once you have sockets? easy 16:58:15 but doing EVERYTHING yourself eventually adds up 16:58:15 --- quit: arke (Nick collision from services.) 16:58:18 --- nick: arke_ -> arke 16:58:28 --- mode: ChanServ set +o arke 16:58:30 JasonWoof: that's the other thing 16:58:34 its easy to write a library which solves 80% 16:58:36 which Forth with its bazillion incompatible dialects has never had 16:58:40 but then someone else needs to solve a disjoint 80% 16:58:47 and can't/won't use your library because it doesn't do what they want, or its inelegant for them 16:58:49 so they write a new one 16:59:00 writing truly universal libraries which don't devolve into a mess of sphaghetti APIs is very hard 16:59:50 sure 16:59:58 a problem with the forth community largely ignores 17:00:10 and so forth is mostly used to write smaller programs 17:00:23 and not used to deal with complex stuff like nasty file formats and protocols 17:01:14 there is currently a forth discussion on ##asm 17:01:48 iano: I try to use it sparingly but often I am not smart enough to 17:02:45 (rot) 17:13:38 So, has anyone ever used one of chuck moore's chips? 17:16:08 don't think so 17:16:39 They seem interesting, but I cannot find any info on them really. 17:17:53 If you're referring to intellasys, you have to register before their site shows any actual info... 17:18:15 Hmm. 17:18:51 oh, i think i found some info on the seaforth chip in some electronic design magazine's yearly PDF listing of microcontrollers 17:18:58 Do they sell any boxes that would be good for fooling around on? Maybe something that has some flash storage, ability for keyboard input, and some graphic output? 17:19:36 --- quit: iano (Nick collision from services.) 17:22:38 Hmm, I am wondering where they plan to go with these new designs. 17:22:45 I don't find forth optimal for multi-core stuff. 17:22:50 I don't even see how it can be done. 17:25:37 didn't we already have this discussion? 17:26:00 which one? 17:26:14 (and yeah, probably) 17:26:28 --- join: iano_ (n=iosgood@sub26-46.member.dsl-only.net) joined #forth 17:26:34 Deformative thinks that in any multi-threaded forth system, all threads share a single data stack, and when you point out that this is not the case he changes the subject, then an hour later starts talking about how forth is unsuitable for concurrency again 17:27:04 slava: I don't think I ever received an answer. 17:27:12 Sec, lemmi check my logs. 17:27:14 you received several, and you ignored them 17:27:15 threads cannot share a data stack 17:27:18 that's crazy-talk 17:27:26 I never said they would. 17:27:37 for some reason many people think forth cannot do concurrency because the data stack must be global 17:27:48 um. no 17:28:05 I wondered how to construct a new thread, I guess you can pass it a single word... 17:28:13 forth has one of the simplest cooperative taskers 17:28:21 But then I don't see how message passing would be implemented. 17:28:35 send-msg ( msg thread -- ) 17:28:42 12:30:21 Hmm, is parallel processing even possible in forth? 17:28:42 12:30:25 I do not see it. 17:28:45 november 7th, 2007 17:29:11 16:19:43 Because wouldn't they be working on the same stack? 17:29:12 How would the message be received? 17:29:12 etc.. 17:29:19 wait-for-msg ( -- msg ) ?? 17:29:25 just like in C or any other language? 17:29:28 let's see if I can find a reference for you... 17:29:34 * Deformative scratches head. 17:29:45 Alright I guess. 17:29:52 Forget I said anything. ._. 17:30:03 ugh you're that morse code guy? 17:30:25 forget *I* said anything 17:32:42 here is one overview of a common model: http://www.zetetics.com/bj/papers/8051task.pdf 17:33:04 i'm not sure which forths support native threads 17:35:29 hah. Forth usually is the operating system. It's tasks are as native as it gets. 17:35:36 usually? 17:36:04 Well, I don't know how Forth has adapted to multi-core architectures these days. 17:36:10 if at all 17:36:30 IntellaSys must have some multi-processing techniques 17:36:36 in my experience, forth is usually an interpreten language on my OS 17:36:50 (lately, linux, but previously mac os 8-9) 17:37:29 iano_: each of the seaforth chip-lets has it's own stacks built it 17:37:29 which forth did you use on classic mac os? 17:37:49 mops 17:37:52 oh ok 17:38:00 didn't do much with it 17:38:09 I got obsessed with forth later 17:41:59 first time i saw forth i was looking at the ans spec and i didn't understand why they have + d+ and f+ as separate words 17:42:22 i really only knew java at the time, which uses compile time overloading 17:43:30 :) 17:43:45 I think it's a shame that people learn java first 17:44:08 http://www.dataman.ro/?page_id=37 -- this used to be a java applet 17:44:12 now its .net for some reason 17:44:15 but it was the first "forth" i saw. 17:44:26 the java applet was pretty accurate, actually. it used a big integer array as the store for @ and !, etc. 17:44:35 not sure how far the .net version goes, perhaps its just a thin layer over c# 17:46:06 did it handle mal-aligned fetches or byte fetches? 17:46:27 i don't know, but you can do that with bit masking and shifting 17:46:33 so it would not have been hard to implement 17:46:53 even floats, java has functions to turn a float into its bitwise representation and vice versa 17:47:33 yeah, i realize it wouldn't be that hard 17:47:40 int-array is probably best 17:48:18 * JasonWoof thinks for a sec about porting fovium (stack based vm I'm writing a forth for) to javascript 17:48:32 that would be funny 17:48:42 I figured that at some point there might be a browser plugin for it 17:49:42 I am thinking about writing an image manipulation program with concepts from lisp and forth. 17:49:45 Not sure though. 17:50:13 JasonWoof: you could port it to java and run it as an applet :) 17:50:15 slava: I thought I was the morse code guy ;) 17:50:16 or even flash 17:50:33 i don't know, some guy can here a few days ago and every few lines he would type some morse code with . and_ 17:50:36 slava: applet would make more sense than javascript certainly 17:50:43 javascript is very slow 17:50:57 yep :) 17:51:03 slower than java 17:51:26 yeah, especially with graphics ;) 17:51:41 heh 17:51:43 heh, I don't think I would implement graphics if I did a javascript version 17:51:50 slava: I don't remember that Delta ever finished their Java forth 17:51:52 I don't have graphics yet in the C version 17:51:57 ncurses? 17:51:59 nor did Misty Beach 17:52:09 heh. that wasn't me 17:52:09 slava: Erm, [Wed Nov 14 2007] [21:37:56] Deformati: just out of curiosity, why do you keep typing 'R' in Morse code at the end of your sentences? 17:52:11 iano_: i don't know about finished, but i ran it at somepoint 17:52:18 [Wed Nov 14 2007] [21:38:44] You mean ._. ? 17:52:30 the C version is SDL, but the client (being emulated) only has text output atm 17:52:30 [Wed Nov 14 2007] [21:38:56] That is supposed to be a text expression smiley thing. 17:52:30 [Wed Nov 14 2007] [21:39:10] Kinda like "Uh" 17:52:52 Deformative: yeah, I remember you said that. It doesn't look remotely like a face though 17:52:59 it does in my font 17:53:02 May be with your font. 17:53:06 it's amazing how much strife there can be over smileys 17:53:27 Deformative: well, get a better font. two dots with a line between them isn't face-shaped 17:53:52 -_- 17:54:13 I recommend the 10x20 font from misc-fixed 17:54:14 I'm surprised there isn't a Unicode area for smileys yet. :) 17:54:23 humph 17:54:39 i like monaco :) 17:54:48 me too 17:55:26 ˘-˘ 17:56:04 we were talking about something relivant and interesting to me 17:56:18 how's fronds coming along 17:56:28 I'm actually working on it again :) 17:56:39 I wrote some nice code to handle branch tables and lookup tables 17:57:35 now that I've got that in place I can set up a more sophisticated keybinding system so I can make different editing modes in a sane and expandable way 17:57:51 basically I need to be able to edit a tree of typed data 17:57:59 cool 17:58:11 a word name is edited differently than an integer value, than a comment, than a definition, etc 17:58:57 iano_: there are some smileys in Unicode 17:58:59 I'm pretty psyched about my table stuff, because it handles all my word types seamlessly 17:59:23 immediates work as you'd expect (ie you don't have to know if a word is immediate or not to use it in your branch tables) 18:00:01 at some point I'll make a lot of the lower level words like 2+ inline themselves 18:00:10 : 2+ ,1+ ,1+ ; immediate 18:00:12 that sort of thing 18:03:05 what if you want to do ['] 2+ execute? 18:03:21 i've come to the conclusion that optimization should not be part of the parser 18:05:07 that'll compile the opcodes 18:05:18 that's the one bit that isn't clean 18:06:02 what's this comma business? 18:06:03 you can call 2+ at compile-time, and it'll make a runtime version, essentially doing: : runtime-2+ 2+ ; 18:06:10 my comma prefix is like postpone 18:06:13 lucca: naming convention for words which write to here 18:06:23 hrmmmm 18:06:25 JasonWoof: oh 18:06:32 so you don't actually have a : ,1+ ... ; macro? 18:06:40 also what slava said, that's why I neglected to mention the postpone bit 18:06:50 no, I built that in 18:07:18 just this: : 1+ op-1+ op, ; immediate 18:07:28 ˜ºâ˜» 18:07:42 KragenSitaker: gesundheit 18:07:45 KragenSitaker: XºâX» yourself 18:08:10 JasonWoof: your client is incorrectly rendering UTF-8 bytes as inverse-video Xes :) 18:08:21 it's a ^X with the high bit set 18:08:28 but your client is ignoring the high bit 18:08:31 irssi? 18:08:34 slava: my dictionary has an extra field, for immediate words it's the compiled runtime version 18:08:41 ok 18:08:41 irssi can do utf-8 okay, if configured 18:08:47 yes, if configured 18:08:52 KragenSitaker: no, it displayed the X in reverse video... 18:08:53 and if a recent enough version 18:09:04 KragenSitaker: it's my copy-and-paste that ignored it 18:09:13 JasonWoof: yes, that's the standard way for irc clients to display control characters 18:09:20 I have no interest whatsoever in utf 18:09:38 --- quit: iano_ () 18:09:40 anyway, stop distracting me with your garbage characters 18:09:49 JasonWoof: heh, my application will need the forth to be fully utf-8 aware... normalizing and everything 18:10:01 good for you 18:10:24 I have no use for variable width characters except as a compression method 18:10:34 for which huffman encoding seems far far more appropriate 18:10:53 heh 18:11:29 the specification of UTF-8 is a bit simpler than the huffman table we'd have to all share 18:11:54 had some ideas about using token-threaded-code with tokens encoded utf-8 style, so that one could implement a peephole optimizer using regexes... 18:12:01 slava: the compiler uses the alternate CFA for immediates automatically when you call them at compile-time 18:12:13 slava: only trouble is there's no XT that refers to that alternate CFA 18:13:13 lucca: you know, if you're doing token-threading, you can have word 0xff be a "fetch next byte from instruction stream and look it up in an auxiliary table and then execute it" opcode 18:13:13 hmmm... well there are mechanisms for that 18:13:34 I don't really have a general "execute" word yet. I suppose when I write it, it'll have to handle that 18:13:45 guess that means my XT needs to include the color 18:14:39 hmmm 18:14:52 currently my "tic" mechanism just returns a reference to the dictionary entry 18:15:11 which isn't nessesarily even a word... 18:15:22 for constants and such the CFA is the value, not a code pointer 18:15:55 apon further inspection... if I write EXECUTE right, it'll handle immediates fine 18:15:55 KragenSitaker: yeah... I think I'm just going itc though, as this is mostly a c-forth (and no ;code) 18:16:10 well... maybe 18:16:12 damn 18:16:31 that makes compiling dependancies automagically tricky 18:17:13 when someone does "['] foo" (and foo is immediate) I don't know if they're going to execute it's compile-time version 18:17:36 and I can't automagically compile compile-time versions for everything, because some don't work that way 18:17:42 like control constructs 18:17:57 you could probably crash by trying to compile something like: : compile-time-then then ; 18:18:28 lucca: is itc Bill Muench's 1987 eForth-in-bForth? 18:19:07 hmmmm... perhaps definitions really need to go into dynamically allocated memory 18:19:32 It's occured to me that I might want that at some point 18:19:36 JasonWoof: you could have a separate version of ['] for getting an xt that you're going to compile into a definition than for getting an xt that you're going to execute at compile-time 18:19:43 like, spelled differently 18:20:29 it'd have to be built into my dependancy compiler 18:20:40 I don't like it 18:20:46 it imposes more complexity on the human 18:21:23 is this for a target/meta compiler? 18:21:40 because in that case the human can't avoid making that distinction 18:21:40 KragenSitaker: what do you mean by that? 18:22:06 it's possible I do need seperate syntax 18:22:20 JasonWoof: I mean, is the code you're compiling going to get executed in some context in which all or most of the compile-time environment is missing? 18:22:40 no 18:22:40 e.g. because the compile-time environment is on your mac, and it's going to get executed on an embedded AVR 18:22:43 nothing goes away 18:22:56 not even the source code 18:23:11 so the problem is only with the dependency checking then? 18:23:17 yes 18:23:30 I haven't really used XTs yet 18:23:42 my tic-like-thing returns a reference to the dictionary header 18:23:59 which I've mostly used to implement geeky forth-implementation level stuff like tables, defer, etc 18:24:20 right 18:26:47 ok, so when you do the "tic foo execute" think, you're expecting to get the same semantics from foo that you'd get if you typed it interactively (not in a definition) right? 18:27:03 trouble is, when the compiler sees "tic foo" it doesn't know if you're going to "execute" it or not 18:27:31 thus it cannot ensure that the compile-time version of foo is compiled 18:28:27 (I've been using the term "compile-time version" a lot here, probably in-correctly... I mean the non-immediate form useful for interactive use) 18:29:02 one solution is to have a form of tic which is used when you intend to EXECUTE it later 18:29:10 which would not be used on words like THEN 18:29:30 right 18:29:47 all this sounds awfully similar to the distinctions you have to make for a meta or target compiler 18:30:02 another is to make it so I have some seperate memory to compile the compile-time versions to. And have EXECUTE compile the needed definition when/if needed 18:31:21 this forth can compile itself 18:31:54 it generates a fresh image of itself without executing any of the code compiled into the new image 18:32:54 how do you handle that problem in the metacompiler? 18:33:03 what problem? 18:33:08 the '-for-execute vs. '-for-, problem 18:33:18 (sorry if i'm not contributing much --- i've only slept a couple of hours in the last 30) 18:33:45 I don't think I use EXECUTE or the like 18:34:18 that or I've not used immediates where this would be a problem 18:34:20 I'm not sure 18:35:01 I expect I will run into some problems when I start turning more low-level words into immediates 18:35:06 I haven't gotten that far 18:35:42 at some point after I get the editor to the point where my new forth (fronds) can sustain its own development, I plan to: 18:35:56 1) change words that compile to 1-4 opcodes into immediates so they inline 18:36:13 2) make the metacompiler capable of generating an image for the other endian 18:37:03 the emulator is capable of running code for either endian (though this has not been thurouly tested) 18:37:11 and I think it'll run much faster if the image is in the native endian 18:37:27 one would hope so 18:37:31 so I think it would be very cool if you could hit a command to swap endians. 18:37:55 if the simple C emulator I wrote might not be much faster with native endian, at least not on ppc 18:37:55 the MIPS was switchable-endian, right? 18:38:09 and one of the more popular Linux distributions around right now is for the MIPS 18:38:11 OpenWRT 18:38:16 since PPC has swapped memory fetches/stores 18:38:47 but, even on PPC the swapped instructions are much more limited than the native ones 18:39:11 also, I'm hoping to eventually have a jit native compiler thing built into the emulator, and I bet the endianness of the image will matter there 18:39:21 well, not quite sure, but I bet it'll speed things up 18:39:47 the other reason I think it'll be cool to have the meta-compiler swap everything, is that then I can be sure that it's not executing any of the generated code :) 18:40:01 even with simple direct or indirect threading, the interpreter might not be too huge of a bottleneck 18:40:06 heh 18:40:29 emulator, not interpreter 18:40:51 oh, sorry 18:41:01 perhaps there's not a huge difference 18:41:06 good night 〠 18:41:18 ? 18:41:38 it's midnight and my clue is approaching zero 18:41:51 I wrote a VM with it's own opcodes, and a few registers 18:42:00 the client image runs in its own address space 18:42:12 there's also a syscall mechanism 18:42:18 --- join: gnomon (n=gnomon@CPE0050eb372bdb-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 18:43:17 I'm pretty happy with the meta-compiler now 18:43:23 it creates pretty small images 18:43:37 the images contain all the source code, and not much compiled code 18:43:50 mostly just the assembler and compiler (including the dependancy compiler business) 18:44:14 when you start up the new image it compiles the editor and all that, then runs the editor 18:45:44 it has 795 unique words/numbers 18:46:01 (the image that is) 18:46:13 and contains compiled code capable of compiling the rest 18:46:21 and it's only 65KiB 18:47:39 --- quit: tathi ("leaving") 18:47:42 that's less than 84 bytes per dictionary header 18:47:56 though I do have headers for numbers, so maybe it's not fair to count those :) 18:53:18 This line of text is 84 characters long. 84 chars per word seems pretty good to me. 18:54:02 given that it includes the fancy compiler, and lots of meta-data like word types, variable values, etc 18:55:55 I wonder if you could make really good capcha images with a 3d graphics engine 18:57:00 take a really bold font, extrude it back and remove the back and front faces so you just have the edges 18:57:35 twist them around in space a bit, and fiddle around with funky coloring and/or lighting 19:01:30 maybe a disco ball 19:28:26 --- join: arke_ (n=arke@p54A7D98F.dip.t-dialin.net) joined #forth 19:45:29 --- quit: arke (Read error: 110 (Connection timed out)) 19:45:32 jason, have you considered inlining instead of immediate self-compiling words? 19:56:09 yeah, but that's tricky 19:57:02 I think it's actually far simpler. 19:57:55 I'd have to write a dissasembler 19:58:09 it's made more complex because my opcodes are not even byte-alligned 19:58:10 For code-copying? Why? 19:58:27 I have to at least find the end of the definition and stip off the exit 19:58:33 You store the length in the header. 19:58:52 And yes, you need to not copy the final exit. 19:59:29 and I don't have relative branches 19:59:45 not hard to fix 19:59:56 so control constructs would need to be fixed 20:00:14 moving an absolute branch from one spot to another isn't hard. 20:01:13 I'd need to dissassemble to do that 20:01:24 to handle IF anyway 20:01:25 Well, that makes it sound comprehensive and difficult. 20:01:32 You just need to recognize a couple of instructions. 20:01:51 The benefits are several; you are running the same code in every context. 20:01:55 they might need to be repacked 20:02:09 branches use however many bits are left in the instruction word as the branch address 20:02:23 if I change the address, it might no longer fit in that instruction word 20:02:42 A shame your VM doesn't make it easier, as it's a keen implementation method. 20:03:03 also, it would be awefully nice if the inlined defs would be packed so they fill the current opcode-word instead of always padding out to the next like a simple copy would do 20:03:23 it's fancy 20:03:31 but not terribly important I think 20:03:54 it can be done of course, but it's not made terribly easy 20:04:05 Shame. 20:04:08 I don't figure on dissassembling anything 20:04:13 doesn't make sense to me when I have the source code 20:04:21 better to just compile the source code again 20:04:23 hmm... 20:04:38 perhaps that's the easy way to inline 20:05:42 just run the compiler and most of the source of the word to be inlined 20:05:56 so I have: : foo 1 2 + . ; 20:06:09 and if I want to inline it, I just run "1 2 + ." through the compiler 20:06:44 just stripping off the first source token (the ": foo") and the last ";" would work well for most words 20:07:23 It furrows my brow, but I suppose it's better than writing a separate set of compiling words. 20:08:30 seems to me that control constructs are a general problem for inlining 20:08:53 stuff like this doesn't inline so well: : foo 1 = if 1 . exit then 2 . ; 20:09:09 it inlines like a charm, but literally. 20:09:27 But you'd likely not want it literally, so you wouldn't inline that. 20:09:34 trouble is that it acts differently depending on if it's inlined or not 20:09:41 Yes. 20:09:54 but yes, you generally don't inline such things 20:11:41 I kinda like having my complied code be as opaque as possible 20:12:10 only hack in when nessesary (like patching a forward branch) 20:13:27 Well, your VM is idiosyncratic. 20:14:16 maybe my conditional branches should be relative 20:14:38 what's that mean? 20:14:52 I mean it has a number of ideosyncracies. 20:15:02 spelling approximate, I'm tired. :) 20:15:03 such as? 20:15:37 such as, instructions are packed differently depending on where they start; branches avail themselves of the remaining bits available at the whim of the underlying memory granularity; etc. 20:16:43 dunno about that 20:16:53 opcodes are always packed into instruction words the same way 20:17:20 You said your 'opcodes are not even byte-aligned'. 20:17:28 nope, they're 6 bits 20:17:38 every word of opcodes is word-aligned 20:18:15 Ok. And your VM makes it very difficult to write position-independent code. Which is another quirk. 20:18:29 ok 20:18:41 yeah, I never figured on moving code around 20:19:31 still don't think I'd really want to 20:20:09 guess that's weird 20:20:50 I suppose you could write : 2+ ,1+ ,1+ ; immediate in your 'compiling' wordlist, or however you rig it; and then : 2+ 2+ ; as your interpreted definition... but compared to a simple : 2+ 1+ 1+ ; inline it's cumbersome, to my eyes. 20:21:08 just seemed that since I can address the entire memory space with 18 bits, there wasn't a need for relative branches, or an entire word for the address 20:21:30 Still, as you say, your baroque VM leaves you with fewer alternatives. 20:22:11 Sure; if your overriding goal is compactness of the generated code, then you're going to have to make certain sacrifices. 20:22:14 that's what colorforth does: : 2+ op-1+ op, ap-1+ op, ; immediate : 2+ 2+ ; 20:22:55 trouble with that is you have to make two definitions 20:22:59 yes 20:23:00 and you have two words with the same name 20:23:01 right 20:23:03 neither of which I like 20:23:08 Nor do I. 20:23:28 in Fronds the latter is done for you if you need it, and the CFA is stored in a special field in the dectionary 20:23:35 only one dictionary header 20:24:13 everything works splendidly so far 20:24:48 with the exception of this "' ... execute" stuff when it's not known which version will be executed until runtime 20:25:03 thus I cannot determine the dependancies when I usually do (at compile-time) 20:26:37 I had not anticipated this 20:27:38 1130? crap, gotta go. bb in a couple hours 20:27:57 k 20:40:01 showing first was a good idea 20:40:19 opon wet cogitation... I think I just need to automatically compile the run-time version 20:40:32 and figure out some hack to make: : then then ; and friends not crash 21:02:16 --- quit: gnomon (Remote closed the connection) 21:15:47 --- quit: Quartus (Read error: 110 (Connection timed out)) 21:28:32 --- join: gnomon (n=gnomon@CPE0050eb372bdb-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 21:28:35 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 21:28:35 --- mode: ChanServ set +o Quartus 21:49:33 KragenSitaker: no... working on something newish but trying to read the relevant research work before I make a fool of myself 21:49:41 lucca: a forth with unicode? 21:50:09 interesting 21:50:12 slava: to be used as an extension language in a larger app 21:50:20 primarily for adding new syntax checking systems 21:50:37 as such it will deal with a fair amount of text 21:50:55 we like the idea of forth as opposed to other languages because it is small and fast and has no gc 21:51:15 well the latter is a downside 21:51:29 there's plenty of ram generally, but it's allll used by the db caching 21:52:56 also this would provide a straightforward stack machine if we want to add more user-friendly gc'd languages later 21:54:01 but for the first go, I think itc with "int" sized cells makes sense 21:54:16 why don't you use an existing forth which is embeddable, such as ficl? 21:54:44 hmmm, checked several 21:54:58 how well does it work in a heavily multithreaded environment? 21:55:04 dunno 21:55:10 heh, a big lock won't cut it 21:55:50 hm, ficl claims to be reentrant 21:56:06 and bsd-style... maybe 22:05:35 --- quit: madwork (Read error: 110 (Connection timed out)) 22:17:43 heh, these turkeys fail at making a tarball 22:17:51 k 22:17:57 hey JasonWoof 22:18:03 hey :) 22:19:20 --- join: Quartus___ (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 22:19:25 writing docs can reveal problems in my code 22:19:35 i just noticed that my mmap wrapper wasn't checking if the mapping was already closed 22:19:37 heh 22:19:42 anything that gets you to look at what it does again :) 22:19:45 so you could close a mapped file, then read from it, and crash 22:19:50 which is a no-no in factor-land 22:20:00 crashing bad 22:20:13 well, in forth, crashing when the programmer does something silly is acceptable :) 22:20:23 right 22:20:38 it's part of the compromise 22:20:42 unix mmap implementation: 22 lines 22:20:47 windows: 85 22:20:52 we let you fiddle willy-nilly with memory, but if you mess it up it's your own stupid fault 22:20:56 yup 22:21:07 i actually let you fiddle with memory too, and crash, but these words are segregated from the rest 22:21:14 in some sense 22:21:17 and are documented as being unsafe 22:22:25 slava: oh, I wanted to ask you. you said you could make an applet version of my VM 22:22:35 slava: is there some way to pass a file to an applet? 22:22:46 from the user's disk or the server 22:22:54 server 22:22:57 sure 22:23:05 applets can make socket connections to the server they originated from 22:23:13 sweet 22:23:28 you can also get your applet signed, in which case the user can accept your certificate, and the applet can read/write files and connect to any server 22:23:40 so I can embed a link to fovium.applet?image=serverside_image.fovium 22:23:48 but i'm not sure if people will blindly click 'accept' when they see "FooApplet by JasonWoofTech.com wants to access your disk" 22:24:04 heh 22:24:09 JasonWoof: usually what people do is they bundle all the applet's data inside a .jar file 22:24:15 so you don't have to make extra connections 22:24:25 that would be better, if I could figure out how to bundle it 22:24:35 a jar file is just a zip file 22:24:36 --- quit: Quartus (Read error: 110 (Connection timed out)) 22:24:41 --- quit: Quartus___ () 22:24:43 and there's an API to read files from your app's .jar 22:24:51 cool 22:24:53 you can't 'mmap' anything from jars though 22:24:55 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 22:24:55 --- mode: ChanServ set +o Quartus 22:25:00 heh 22:25:30 fovium allocates 1MB of read/write memory for the client, and reads the image file into the begining of it 22:25:41 very small :) 22:25:43 copying is fine 22:25:49 yeah. 22:25:56 currently my image is 65K 22:25:59 heh 22:26:24 that's got the fancy dependency compiler and the source browser 22:26:38 it might not be too long before you can edit 22:27:15 ok, i documented io.launcher and io.mmap 22:27:29 I'll eventually have some kind of paging mechanism so it can deal with larger amounts of data 22:27:43 why not just file i/o? 22:27:48 dunno if "paging" is the right word 22:29:58 I may do file i/o. dunno 22:30:06 haven't thought that part out yet 22:31:12 what sort of keyboard access do I get in an applet? 22:31:21 the usual 22:31:26 well 22:31:30 heh 22:31:32 you don't have direct access to the event queue 22:31:42 so you can't interacept events 22:31:51 but i've never seen anybody use that feature 22:32:06 you can define listeners on your applet component and recent key/mouse events inside that component 22:32:20 right 22:32:35 I'm thinking I won't have good enough keyboard support to have the editor work 22:32:52 but it would be nice for demos 22:32:57 there are some key events you might not be able to receive 22:33:05 apps could be written in fronds that use the limited input capabilities of an applet 22:33:05 i'm not sure if left/right modifiers are distiguished for instance 22:33:18 I need keyups 22:33:26 eg I need to know when they release the alt key 22:33:28 you get key up/down events 22:33:29 yes 22:33:31 for modifiers too 22:33:36 cool 22:33:38 might work then 22:34:13 you confused me with this: < slava> so you can't interacept events 22:34:38 well, here is now java's awt event dispatcher works, in pseudocode 22:34:48 Event e = nextEvent(); 22:34:55 e.getTarget().handleEvent(e); 22:34:58 err, wrap that in a for(;;) 22:35:09 in a stand-alone app, you yourself can call nextEvent() on the event queue 22:35:17 and do something other than the default, which is to ask the actual component to handle it 22:35:21 for instance, you might log all events 22:35:26 or reject certain events 22:35:33 or perform pre-processing on keyboard events, for fancy input methods 22:35:33 etc 22:36:15 cool 22:36:25 is there a version of nextEvent() that has a timeout? 22:37:02 doesn't look like it -- http://java.sun.com/j2se/1.5.0/docs/api/java/awt/EventQueue.html 22:37:10 what does "compenent" mean in this context? 22:37:14 a gui widget 22:37:30 alternately, it would work to be able to ask "is there an event waiting?" 22:38:31 well for that type of stuff java people use threads 22:38:41 run your vm in its own thread 22:38:58 and when you receive a key/mouse event (inside the event dispatch thread) you somehow notify fronds 22:39:06 or add it to a queue, which the fronds vm thread checks 22:39:41 oh. that'l work 22:39:55 threads have issues 22:40:01 until a few years ago, java only had blocking file and socket i/o 22:40:10 heh 22:40:11 so if you were writing a server you had to spawn one thread for every incoming connection 22:40:28 that's pathetic 22:40:34 yeah 22:40:41 then they added java.nio 22:40:45 which adds a select()-like API 22:41:03 but only recently!? 22:41:11 java 1.4 was released in 2002 22:42:37 ok, so we have two threads, one that listens to events, and one that runs the emulator 22:42:50 roughly yes 22:42:57 the client (Fronds) says to wait up to 5 seconds for an input event 22:43:26 can the emulator thread somehow pause itself (so it's not using CPU time) in such a way that the events thread can wake it up? 22:43:36 (I've never done threading stuff before) 22:44:55 sure 22:45:21 a thread can wait on a monitor object, and it sleeps until another thread notifies all threads waiting on the monitor object 22:45:33 cool 22:45:48 1.5 has some new apis that are easier than that 22:46:00 you can ahve a thread wait for messages on a queue, and its woken up when someone else sends a message to the queue 22:46:16 nice 22:46:18 with monitors you have to do the book-keeping yourself, here you just pass objects 22:46:33 are people's browsers generally capable of running 1.5 applets? 22:46:49 i'm not sure. 1.5 vms exist for all major platforms but people can be slow at upgrading 22:46:54 i'd stay away from 1.6, its not even out for mac yet 22:47:00 heh 22:47:08 1.5 has been out for like 3 years now so its not bleeding edge 22:47:13 oh 22:47:33 do you have to download the plugin? or does it come with ie/firefox? 22:47:53 the former 22:48:04 mac os ships with java out of the box, and some pc manufacturers bundle it 22:48:17 java 7 will be gpl so eventually linux distros will have it but don't count on that happening for another couple of years 22:50:39 there seemed to be a whoopdidoo when sun announced they were going GPL, but it sounds like they're being slow about actually doing it 22:50:53 the code is available, its just so happens that its for a pre-release of 1.7 22:51:05 also some parts of swing and awt were not open sourced because they were licensed from other companies 22:51:14 some image codecs and color management stuff iirc 22:53:49 ok 22:55:26 hmm, i just found a bug in the compaction phase of my gc 22:55:29 which is rarely used 22:56:48 tricky stuff 22:57:02 seems to me a gc would be hard to debug 22:57:17 compaction moves all used blocks up and coalesces the free space at the bottom 22:57:19 well 22:57:34 i have a gc for data and one for code, and they both work well now 22:57:42 but code gc has compaction 22:57:51 its only used to reduce the image size on disk 22:58:00 since otherwise it would have to write all the free blocks in the middle, too 23:01:48 right. 23:11:21 is gcj browser plugin actually capable of running most applets? 23:12:08 no 23:12:10 not at all 23:12:18 gcj's applet plugin is also slow 23:12:21 it uses "gij" the interpreter 23:13:27 ok 23:13:27 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 23:13:40 I thought it might be largely incompatible 23:14:08 what's the relationship of the version numbers you're talking about (like 1.5) and java serviouss like sun-java6? 23:14:30 s/serviouss/versions/ 23:14:36 wow, than got seriously mangled 23:14:42 --- quit: forther (Client Quit) 23:15:03 java 5 == 1.5 23:15:06 java 6 == 1.6 23:15:15 java 2 == 1.2, 1.3, 1.4 23:15:17 fucked up eh? 23:17:18 yeah 23:17:29 bloody mess, if you ask me 23:17:34 you'd think at some point they'd start using the same version numbers for everything 23:19:51 well, the gcj plugin works for some... 23:19:54 best I can do right now 23:29:23 --- join: ygrek (i=user@gateway/tor/x-e3d6bc2b5ebd32b7) joined #forth 23:59:59 --- log: ended forth/07.11.16