00:00:00 --- log: started forth/18.11.06 00:00:53 What would you use instead of C? 00:02:30 question is: for what? for portable assembly? 00:02:49 C is a fine-ish language, especially newer revisions of the standard 00:03:48 for compilation target a reasonable thing would be LLVM (JVM or CLR are also an option), webassembly gains traction lately too 00:03:57 Yes, it's been established that C isn't a very good portable assembly language anymore for newer architectures, is there anything better in your opinions? 00:03:58 for not portable assembler you have, well, assembler :-) 00:04:42 and as of using C for compilation target, it is not that it is very bad option, it is just not good 00:05:50 Is there anything better to fill the former role of C as a portable assembly language of sorts? 00:06:44 it never were a portable assembly… LLVM IR and JVM bytecode are the closest things I can think of 00:10:21 I haven't looked into the LLVM IR, I did take a deep dive into the JVM a few years ago, didn't care for it. 00:13:09 I ended just making a bytecode VM in C plus POSIX calls. 00:31:14 One thing I like about working in a shop that makes high tension testing and monitoring equipment is the occasional explosion. 00:31:21 Oops. Wrong channel. :-/ 00:40:41 boom :) 00:56:59 Yeah, really. 00:58:05 This one was bad because it was behind me so I just heard the loud snap and the chair of the guy that it snapped on pushing back REALLY fast. :D 01:12:37 siraben: implemented constants, and variables with ! @ ? 01:27:37 yikes! 01:48:29 --- quit: rdrop-exit (Quit: Lost terminal) 01:49:38 --- quit: nighty- (Quit: Disappears in a puff of smoke) 02:04:45 --- quit: ashirase (Ping timeout: 252 seconds) 02:07:04 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:16:33 --- join: tabemann_ (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) joined #forth 02:17:04 --- quit: tabemann (Ping timeout: 264 seconds) 02:21:02 --- quit: proteusguy (Ping timeout: 260 seconds) 02:33:46 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 03:09:55 --- quit: nighty- (Quit: Disappears in a puff of smoke) 03:12:38 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 04:53:54 --- join: DKordic (~user@178-221-182-186.dynamic.isp.telekom.rs) joined #forth 05:07:18 --- join: MickyW (~MickyW@p4FE8DEF7.dip0.t-ipconnect.de) joined #forth 05:09:45 --- quit: MickyW (Read error: Connection reset by peer) 05:10:34 --- quit: pierpal (Quit: Poof) 05:10:49 --- join: pierpal (~pierpal@host210-193-dynamic.245-95-r.retail.telecomitalia.it) joined #forth 05:12:34 --- join: proteusguy (~proteus-g@cm-134-196-84-236.revip18.asianet.co.th) joined #forth 05:12:35 --- mode: ChanServ set +v proteusguy 05:25:12 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 05:28:26 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:1ec6:932f:1b02:d27e) joined #forth 05:28:26 --- quit: ncv (Changing host) 05:28:26 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 05:33:14 Hi 05:33:58 izabera: Hey, you asked if anybody wants to try out your Forth yesterday but didn't leave a link while I was still online. Did you post a link after I quit or isn't it published yet? 05:36:55 https://github.com/izabera/forth 05:50:25 --- quit: nighty- (Ping timeout: 245 seconds) 05:55:16 --- quit: proteusguy (Ping timeout: 246 seconds) 06:00:30 Morning, gents. 06:02:51 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 06:03:24 izabera: Thanks 06:03:27 Hi KipIngram 06:03:46 izabera: Oh, you did this in BASH. Cool. 06:04:14 izabera: Hah, that's interesting. 06:04:43 That's a pretty nifty way to introduce someone to Forth. 06:08:08 --- join: proteusguy (~proteus-g@cm-134-196-84-236.revip18.asianet.co.th) joined #forth 06:08:09 --- mode: ChanServ set +v proteusguy 06:08:20 my variables are kinda fake 06:11:18 Well, I imagine you had to be clever in a number of ways to get it to behave right at all. 06:14:01 any good forth tutorial btw? 06:14:31 We sort of like Starting Forth for learning the words and so on. 06:15:09 I also like Thinking Forth for learning the "philosophy" of Forth programming. I think others here like it too, but I tend to push it a bit harder than most of the others. 06:15:17 I just felt it really improved me as a Forth programmer. 06:15:42 The best book I've ever seen on the "under the hood mechanics" of a typical Forth system (indirect threaded) is Forth Fundamentals. 06:16:07 i just need some rudimentary knowledge 06:16:07 With those three on your shelf you pretty much have all possible bases covered. 06:16:17 Starting Forth would be the one to start with. 06:16:57 Thinking Forth is avaialble online as a free pdf. Forth Fundamentals, I don't know where to find that. 06:17:08 I own a copy, but I think it's out of print and hard to get hold of. 06:25:33 --- quit: djinni (Quit: Leaving) 06:25:34 But there are web pages floating around that describe all the mechanics pretty well anyway, and not restricted just to indirect threading. 06:34:22 --- join: djinni (~djinni@68.ip-149-56-14.net) joined #forth 06:52:05 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 07:04:00 is there a forth that can be rewound? 07:04:13 ie you have a forth program running, and then you press a button, and it starts running backwards 07:07:32 you could write one - I thought of adding that functionality to attoforth 07:07:35 there are debuggers that let you time travel.. they need to store all the state, I think? 07:07:45 for debugging purposes 07:07:53 not allowing actually running backwards 07:08:04 but to provide a trace of all the events up until a failure 07:08:57 i know about debuggers, i'm asking about a language in itself 07:09:08 tabemann_: what is the distinction? 07:10:08 the difference is that I wouldn't be saving each piece of state overwritten, but rather would just be providing a record of words called and stack state, just because this still has to be reasonably performant as well 07:12:57 to actually run backwards you'd need a full log of every state change that occurred 07:13:58 okay, I should go 07:14:01 only use pure functional data structures :P 07:14:08 :D 07:14:19 (I'm actually a Haskell fan) 07:14:39 now, off to work 07:19:16 --- quit: tabemann_ (Ping timeout: 252 seconds) 07:22:00 --- join: TheCephalopod (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 07:33:40 ecraven (IRC): Reminds me of the Okasaki paper 07:33:54 Which has been a pretty fun, albeit challenging read. 07:39:28 Yeah, some sort of state logging would be required. 07:39:37 Some operations are "information reducing." 07:39:44 Pretty much all binary operations. 07:39:55 + gives 6 - was that 3 and 3 or 4 and 2? 07:39:56 Etc. 07:40:39 There's some theorem in the "physics of computing" that says the energy requirements of computation (theoretical meinimum) can be reduced asymtotically to zero as you slow down, IF no information is destroyed. 07:40:58 Feynman had a book on that. 07:41:31 So ultimately it's information destruction that requires energy. 07:41:41 "irreversibility." 07:42:21 Same stuff shows up in quantum computing somehow too, though I can't describe it. 07:42:37 When your system is evolving via Schrodinger's equation, that's all unitary and reversible. 07:42:45 Then when the wave function collapses, that's not reversible. 07:43:34 All that has something to do with the entropy of information. 07:56:01 --- quit: pierpal (Quit: Poof) 07:56:19 --- join: pierpal (~pierpal@host210-193-dynamic.245-95-r.retail.telecomitalia.it) joined #forth 08:13:51 Hehe, I set up my server and a Mandelbrot set script, so it now creates a Farbfeld file with a Mandelbrot set in it. When it works. 08:31:49 --- quit: TheCephalopod (Quit: Trees can see into your soul. They lurk everywhere.) 08:37:40 --- quit: nonlinear (Ping timeout: 252 seconds) 08:48:55 --- quit: dave0 (Quit: dave's not here) 08:50:14 --- quit: pierpal (Quit: Poof) 08:50:32 --- join: pierpal (~pierpal@host210-193-dynamic.245-95-r.retail.telecomitalia.it) joined #forth 09:02:12 https://thecutecuttlefish.org/tmp/example.jpg 09:13:59 Rendered with FORTH. 09:14:55 john_cephalopoda: nice! 09:15:33 john_cephalopoda: have you seen this? https://twitter.com/sigfpe/status/1059665625453289472 09:15:33 97 lines into a hi-res (more iterations) version. 09:18:33 125 now... 09:19:07 With those tricks I could probably decrease the run time considerably. 09:27:24 --- quit: ncv (Remote host closed the connection) 09:30:14 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:1ec6:932f:1b02:d27e) joined #forth 09:30:14 --- quit: ncv (Changing host) 09:30:14 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:32:03 --- quit: ncv (Remote host closed the connection) 09:32:25 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:6eaf:6ef7:3b81:d5f6) joined #forth 09:32:25 --- quit: ncv (Changing host) 09:32:25 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 10:25:19 izabera: Starting Forth, and Sam Falvo's youtube video "Text Preprocessing in Forth" 10:25:48 TheCephalopod: Based farbfeld 10:29:04 WilhelmVonWeiner: Hmm? 10:29:18 WilhelmVonWeiner: Here's the first image: https://thecutecuttlefish.org/tmp/example.jpg 10:30:32 izabera: also with your Forth some people (me included) use brace comments exclusively 10:30:40 just because we can 10:34:49 :-) There's a rebellious streak in WilhelmVonWeiner. I like it. 10:34:57 * KipIngram approves of rebellious behavior. 10:35:17 Without that authority figures get too full of themselves. :-) 10:39:03 --- quit: ncv (Remote host closed the connection) 10:39:37 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:1ec6:932f:1b02:d27e) joined #forth 10:39:37 --- quit: ncv (Changing host) 10:39:37 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 10:42:33 --- quit: ncv (Remote host closed the connection) 10:55:40 --- join: ncv (~neceve@90.194.11.55) joined #forth 10:55:40 --- quit: ncv (Changing host) 10:55:40 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 11:11:03 WilhelmVonWeiner: you mean ( this ) ? 11:11:10 why is it better? 11:11:44 I mean ( this), and for no reason other than "why not" 11:11:54 What if your source doesn't have newlines 11:15:10 right 11:15:21 terrible terrible excuse, I know 11:15:24 my forth also doesn't require you to be in compile mode to use do and if 11:15:35 GOOD 11:15:48 you also doesn't actually need to declare variables first 11:16:09 s/doesn't/don't/ 11:17:32 is that bad? :P 11:18:03 it's not really "forth" i would suppose 11:18:10 but if it works... 11:18:34 i mean you can declare them 11:18:53 would you rather get an error if you don't declare them, or something sensible to happen? 11:20:10 the primary goal was to make normal-looking code work 11:24:51 it would be an undefined word 11:32:16 --- join: dys (~dys@tmo-081-116.customers.d1-online.com) joined #forth 11:36:30 it kinda is 11:36:35 it's just pushed on the stack 11:38:48 i mean because it's just a forth-alike in Bash 11:39:01 probably doesn't matter 12:02:54 --- join: Mat4 (~eh@ip5b409c40.dynamic.kabel-deutschland.de) joined #forth 12:03:18 G'Day 13:10:28 Hi Mat4. 13:10:32 WilhelmVonWeiner, izabera which specific version of Forth allows comments in parentheses like ( this )? 13:15:04 cheater: That's a pretty common feature; it was a standard word in FIG, I think. 13:15:42 It's also very easy to write - if I recall correctly it's just : ( 41 WORD ; 13:16:48 Ok, in my Forth I had to say : ( 41 word 32 word ; 13:17:02 Apparently the ) was used to terminate 41 word but wasn't INCLUDED in that. 13:17:09 So the 32 word moves to the next blank or eol. 13:26:37 --- quit: dys (Ping timeout: 252 seconds) 13:30:41 --- join: dys (~dys@tmo-106-1.customers.d1-online.com) joined #forth 13:31:59 --- quit: Mat4 (Read error: Connection reset by peer) 13:37:08 --- quit: dys (Ping timeout: 240 seconds) 13:44:24 --- join: dys (~dys@tmo-111-171.customers.d1-online.com) joined #forth 14:04:39 --- join: wa5qjh (~quassel@175.158.225.212) joined #forth 14:04:40 --- quit: wa5qjh (Changing host) 14:04:40 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 14:13:38 ANS Forth docs say that everything after ( until ) is parsed. 14:15:57 Right, for the function of (. 14:16:04 But what does the definition of WORD say? 14:16:12 you give word a character to stop at - in this case the ). 14:16:30 I think WORD consumes everything up to but not including the terminal character. 14:16:37 Well, that's what mine does. 14:16:42 Let me check GForth. 14:17:18 Ok, GForth WORD also consumes the terminal char. 14:17:20 ( texthere) is basically a comment 14:17:31 Right. 14:17:52 So I should tweak my WORD a little, so that it consumes the terminating character. 14:18:14 ( “ccc” -- ) 14:18:32 Since it really only gets used by the system with BL as its terminal char, and since it really doesn't matter whether you leave that terminal space in the input stream or not, I hadn't noticed that it was "off spec" a little. 14:18:46 ^ says ANS. So "read the string until ), consume it and leave nothing". 14:19:05 Yep, and that's what GForth seems to do. 14:19:38 I don't have any doubt about what ( is supposed to do - it's what WORD is supposed to do I was wondering about. 14:19:51 In GForth the definition : ( 41 WORD ; works just fine. 14:20:09 In my system, currently, that leaves the ) in the input stream and it throws an unknown word error. 14:20:18 So I had to do : ( 41 WORD 32 WORD ; 14:20:25 But I'll fix my WORD. 15:03:37 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 15:06:15 --- quit: MrMobius (Ping timeout: 245 seconds) 15:06:15 --- nick: [1]MrMobius -> MrMobius 15:16:06 --- join: rdrop-exit (~markwilli@112.201.162.180) joined #forth 15:22:29 --- join: dave0 (~dave@47.44-27-211.dynamic.dsl.syd.iprimus.net.au) joined #forth 15:24:28 Okay, big improvement to my Mandelbrot viewer: Now you can view any area and directly print it to a farbfeld image! 15:27:14 https://thecutecuttlefish.org/tmp/example1.jpg 15:28:02 hi 15:28:37 Hey dave0 15:28:52 hi john_cephalopoda 15:28:57 I uploaded the latest source with Farbfeld printing (press p) here: https://thecutecuttlefish.org/mandelbrot1.html 15:30:07 Works in gforth right now. 15:40:27 --- quit: nighty- (Quit: Disappears in a puff of smoke) 15:44:46 KipIngram: gotcha 15:47:00 https://thecutecuttlefish.org/tmp/example2.jpg 15:51:48 nice! 15:51:51 well done john_cephalopoda 15:53:08 Thanks! 15:53:13 Night! 15:53:57 --- quit: john_cephalopoda (Quit: Trees can see into your soul.) 16:03:43 john_cephalopoda: is that image a bit stretched? 16:05:01 Huh, first time I heard of the Farbfeld image format. 16:05:04 I used PGM in mine 17:13:40 --- join: reepca (~user@208.89.170.250) joined #forth 17:53:14 --- join: tabemann (~tabemann@h193.235.138.40.static.ip.windstream.net) joined #forth 17:56:40 --- quit: wa5qjh (Remote host closed the connection) 18:14:38 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 18:54:48 opinion question 18:55:05 should D** take ( d n -- d ) or ( d d -- d ) 18:56:01 I chose ( d n -- d ), as there is no way a value of d would result in an in-domain result for n other than <= 0 unless d was 0 or 1 18:59:12 d n 18:59:38 (I mean, a value that had to be in d rather than in n) 19:00:33 I'm surprised that in many ways my double-cell vocabulary is more complete than Forth 2012's 19:00:52 it's not completely complete, though 19:03:48 (I'm so glad gcc supports __int128 and unsigned __128 types, though, which made implementing this way easier, and probably way faster) 19:14:40 --- quit: wa5qjh (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 19:29:17 Good morning Forthwrights :) 19:44:14 hey 19:44:53 now I need to reimplement my double-cell number parsing and formatting routines in forth 19:45:19 d n. if you need a double-cell for exponent you need a bignum library 19:45:30 yes 19:46:24 of course that needs to be done with care, lest one generate numbers literally gigabytes in size 19:47:22 I can't wait for today to be over 19:47:44 (as is typical for election day) 19:47:55 voted ~2 hrs ago 19:48:08 I voted last week 19:49:24 election news is useless until the polls close and a decisive fraction of votes has been counted but the temption to check anyway is overwhelming :/ 19:49:38 they've already called baldwin here in wisconsin 19:49:51 I'm waiting for them to call the gubernatorial race 19:49:52 ok 19:49:59 but the senate race wasn't even close 19:50:00 polls are still open here for another 71 min 19:53:50 we had the incumbent governor suspend his campaign after absentee ballots had already started being returned. will be interesting. 19:54:25 --- join: wa5qjh (~quassel@175.158.225.212) joined #forth 19:54:25 --- quit: wa5qjh (Changing host) 19:54:25 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 19:54:49 is projected to be close. i hope the split is bigger how many votes he got 19:54:54 *bigger than 19:55:18 what happens when a candidate that is officially not campaigning gets elected 19:55:24 do they force them to take office? 19:55:45 (of course the first thing they can do is resign) 19:55:50 not sure. presumably he resigns instantly? 19:56:35 nobody can force you to take the oath of office or else it woudln't be an oath 19:56:41 not sure of contingency for that though 19:56:57 seems like something i should know 19:57:28 in this case he is still on the ballot because he dropped out too late 20:05:22 --- quit: tabemann (Ping timeout: 268 seconds) 20:14:04 if you don't take the oath of office then you don't have the position. it remains open to be filled according to the rules of that particular position. 20:14:39 ok 20:15:04 so no different than e.g. someone elected posthumously i guess 20:16:10 which also happened here. we have had so many bizarre elections :| 20:17:23 alaska fwiw 20:18:59 thought it was for the us house so the not ascending to office bit was under federal rules 20:21:18 but presumably that is pretty uniform 20:21:42 --- quit: proteusguy (Remote host closed the connection) 20:39:08 --- join: tabemann (~tabemann@2602:30a:c0d3:1890:1870:3255:3792:ba89) joined #forth 20:40:21 --- quit: pierpal (Quit: Poof) 20:40:37 --- join: pierpal (~pierpal@host210-193-dynamic.245-95-r.retail.telecomitalia.it) joined #forth 20:47:27 --- quit: ncv (Remote host closed the connection) 21:11:44 So does anyone here have well-reasoned opinions on the words SKIP and SCAN? 21:12:06 It seems clear to me that SKIP should not skip over the character it uses to "end its skipping." 21:12:23 In the common case of skipping blanks between words, that would mean skipping the first character of the next word, and we don't want that. 21:12:29 SCAN is more tricky, though. 21:12:42 You scan until you come to a character that matches the one you passed as the terminator. 21:13:07 I think that that character should not be included in the "content" scanned over - we don't want trailing blanks appended to all of our words. 21:13:24 But if SCAN works that way, it will not move the input pointer past the ) when it's being used to implement (. 21:14:01 It seems like SCAN should 1) not include the terminal match character in the "content scanned out," but SHOULD move the input pointer past that character. 21:14:04 --- quit: jedb (Ping timeout: 264 seconds) 21:14:12 but I'm just feeling bothered by that "hybrid" approach. 21:17:25 --- quit: dddddd (Remote host closed the connection) 21:24:52 --- quit: wa5qjh (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 21:30:47 --- join: jedb (~jedb@199.66.90.113) joined #forth 22:11:02 I don't recall what a standard-compliant SKIP does, I have a SKIP ( c -- ) that skips over input stream characters up to and including . 22:13:31 But my Forths are very non-standard when it comes to input. 22:16:06 --- join: proteusguy (~proteus-g@184.82.237.122) joined #forth 22:16:06 --- mode: ChanServ set +v proteusguy 22:19:03 --- join: wa5qjh (~quassel@175.158.225.210) joined #forth 22:19:04 --- quit: wa5qjh (Changing host) 22:19:04 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 22:52:28 --- quit: jedb (Ping timeout: 240 seconds) 23:09:14 --- join: jedb (~jedb@199.66.90.113) joined #forth 23:21:28 --- quit: Keshl (Read error: Connection reset by peer) 23:21:50 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 23:59:59 --- log: ended forth/18.11.06