00:00:00 --- log: started forth/18.07.17 00:25:49 --- join: gravicappa (~gravicapp@h178-129-96-103.dyn.bashtel.ru) joined #forth 01:26:38 --- join: MickyW (~MickyW@p4FE8C1BB.dip0.t-ipconnect.de) joined #forth 01:44:57 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 02:01:38 --- quit: MickyW (Quit: Leaving. Have a nice time.) 02:11:45 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:6eaf:6ef7:3b81:d5f6) joined #forth 02:11:45 --- quit: ncv (Changing host) 02:11:45 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 03:20:10 --- quit: nighty- (Quit: Disappears in a puff of smoke) 03:40:14 KipIngram: why not use inline asm is your C version?? 03:42:46 Well, the threaded definition part of that one is built in a malloc-ed buffer. Ultimately I wanted the primitives in that buffer too. I never got it that far along, though - the primitives were still snips of C code. You're right - that could be done, but that assembly would still be off whereever gcc put it. It was a valid path - it just wasn't the one I was planning to pursue. 03:43:06 Ultimately I decided that the thing had become overly complex and difficult to maintain, so I just started over in straight nasm. 03:43:25 I'm much happier with this one - I... "wrote better Forth" building this one. 03:43:44 All of the definition parts I wrote in Forth first, as nasm comments, and then hand translated. 03:43:57 And I worked hard to make them good defs - short, easy to understand, etc. 03:46:56 This one is quite a bit more ambitious than that one. Multi-process / multi-thread support, for one thing. 03:47:11 I haven't made that actually fly yet, but all of the foundation for it is in place. 03:47:26 It was just easier to start over than try to incorporate such a thing into the old one. 03:49:57 I did get so far, as far as asm goes on that old one, as to be able to poke machine code bytes into the malloc-ed buffer and prove that the would execute. 03:50:35 I had some glue code that "converted" from a variable-based vm to a register-based vm, and I wrote a couple of "primitives" with that glue around them. They ran and did what they were supposed to do. 03:51:00 But I didn't really have a Forth assembler - I was just poking bytes into the image. 04:05:41 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 04:56:46 --- quit: pierpal (Quit: Poof) 04:57:07 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 04:58:16 --- quit: wa5qjh (Remote host closed the connection) 04:58:29 --- quit: xek__ (Remote host closed the connection) 04:58:52 --- join: xek (xek@nat/intel/x-ozxtyncgangdbqeh) joined #forth 05:09:33 --- quit: pierpal (Quit: Poof) 05:09:52 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 05:43:03 --- quit: X-Scale (Ping timeout: 248 seconds) 06:30:43 --- quit: DocPlatypus (Quit: Ex-Chat) 06:34:19 I was looking at quines in Forth 06:34:24 man this language is great 06:43:29 Quines? 06:43:37 I'm not familiar with that. 06:43:42 Programs which print their own source 06:43:43 And yes, it's pretty damn cool, isn't it. :-) 06:43:48 Ah. Ok. 06:43:56 `SOURCE TYPE` is the shortest FORTH quine 06:44:52 What exactly does the word SOURCE do? 06:48:38 I think it gives you the address of the input buffer. 06:49:03 That's the only logical answer, I think. Else you wouldn't be able to TYPE it. 06:53:41 Ok, that makes sense. 06:54:50 I can say this: tib 11 type 06:54:56 That prints itself in mine. 06:55:04 Same length, it appears. 06:58:15 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 07:08:28 Heh. SOURCE TYPE works in GForth. I ran SEE on SOURCE. It contains the word PERFORM. 07:08:41 I ran SEE on PERFORM. It hung up my GForth. :-| 07:09:34 not sure why thathappens 07:12:27 some magicans dont want you to SEE how they PERFORM ;-Þ 07:13:43 Heh. ;-) Evidently not. 07:19:48 perform is a codeword, maybe? 07:20:08 I think perform is like execute 07:26:23 Yes, it said it was code before it hung. 07:26:50 I understand SEE can't really show me the innards of such words, but you'd think that once it noticed it was code it would avoid hanging. 07:26:56 But, bugs happen, I suppose. 07:27:09 'see perform' works here, it prints out some assembly code 07:27:29 Oh, interesting. I just installed GForth using HomeBrew - it may be an old version. 07:27:37 oh, macos 07:27:44 Yeah. 07:27:50 i could understand if that feature is broken there 07:28:01 Gforth 0.7.3. 07:28:18 on linux it attaches gdb to the gforth process, or something similarly nasty 07:28:21 I don't really do a whole lot with GForth - it's just a handy way to have a Forth around on most systems. 07:30:26 disasm-gdb is the word that implements this functionality (on linux at least) 07:31:08 (or discode) 07:39:16 how many code words does a gforth generally have? 07:40:01 No idea, but I'd expect it to be a substantial number, given how generally *large* GForth seems to be and how concerned they seem to be about performance. 07:40:23 I've read some "white papers" they've written, and they seem to have pursued some pretty involved optimizations. 07:40:25 --- quit: pierpal (Quit: Poof) 07:40:41 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 07:43:08 KipIngram: right, that is needed on x86 based chips afaict 08:23:16 --- quit: pierpal (Quit: Poof) 08:23:36 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 08:32:59 Zarutian: a quick count looks like 380 primitives 08:45:09 that is just way way too many 08:46:21 --- join: Keshl_ (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 08:46:52 --- quit: Keshl (Read error: Connection reset by peer) 08:54:23 --- quit: backer (Read error: Network is unreachable) 08:54:34 --- join: backer (~backer@accordion.employees.org) joined #forth 08:59:01 --- quit: proteus-guy (Ping timeout: 260 seconds) 09:00:53 --- join: proteus-guy (~proteus-g@cm-134-196-84-223.revip18.asianet.co.th) joined #forth 09:36:40 --- quit: ncv (Ping timeout: 256 seconds) 10:59:00 --- quit: Keshl_ (Read error: Connection reset by peer) 10:59:22 --- join: Keshl_ (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 11:17:00 --- join: X-Scale (~ARM@83.223.242.141) joined #forth 11:56:55 --- quit: pierpal (Quit: Poof) 11:57:13 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 12:22:39 --- nick: Keshl_ -> Keshl 12:23:52 PERFORM is just @ EXECUTE. It's used in, for example, vtable lookups in object-oriented forth extensions, which you want to be really fast. 12:27:48 and probably in deferred words and such. 12:30:19 --- quit: gravicappa (Ping timeout: 256 seconds) 12:32:43 on an unrelated note, which atomic operations are usually available? For example, gforth has "experimental" atomic operations mentioned in the manual like +!@. The meaning given there is basically "fetch, increment by n, store and return the old value" but atomic. But when I look at the file gforth uses to generate that primitive, it is only actually atomic if gforth is compiled while HAS_ATOMIC is defined in the C environment. How 12:32:43 widely available are atomic operations? 12:41:15 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:6eaf:6ef7:3b81:d5f6) joined #forth 12:41:15 --- quit: ncv (Changing host) 12:41:15 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 13:09:32 --- quit: X-Scale (Ping timeout: 244 seconds) 13:12:45 --- join: X-Scale (~ARM@83.223.227.30) joined #forth 13:49:35 --- join: pierpa (57043661@gateway/web/freenode/ip.87.4.54.97) joined #forth 14:00:59 --- quit: ncv (Ping timeout: 245 seconds) 14:28:52 reepca-laptop: depends. You are talking about atomic in multi-threaded/programmed systems, yes? In one forth I saw there is an ATOMIC word that takes next word after it, aquires the mutex and runs that word and then releases the mutex. Mainly used for implementing critical sections. 14:29:56 reepca-laptop: but some archs have compare'n'swap or incr and return old instruction 15:48:17 --- join: wa5qjh (~quassel@175.158.225.219) joined #forth 15:48:17 --- quit: wa5qjh (Changing host) 15:48:17 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 16:05:35 --- quit: nighty- (Quit: Disappears in a puff of smoke) 16:16:10 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 16:19:13 --- quit: MrMobius (Ping timeout: 240 seconds) 16:19:13 --- nick: [1]MrMobius -> MrMobius 16:31:27 --- quit: impomatic (Ping timeout: 240 seconds) 16:32:35 --- quit: pierpal (Ping timeout: 244 seconds) 17:14:15 --- quit: epony (Quit: upgrades) 17:28:53 --- join: erblite (~hady@200116b868220f00890deb0189071fae.dip.versatel-1u1.de) joined #forth 17:38:54 --- join: nighty- (~nighty@kyotolabs.asahinet.com) joined #forth 18:43:06 --- join: dave9 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 18:43:29 re 18:43:46 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 18:52:51 --- quit: pierpal (Ping timeout: 260 seconds) 19:15:46 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 19:18:58 --- quit: wa5qjh (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 19:37:04 --- quit: pierpa (Quit: Page closed) 20:06:48 --- quit: erblite (Ping timeout: 276 seconds) 20:50:09 --- quit: dddddd (Remote host closed the connection) 21:06:19 --- quit: dave9 (Quit: one love) 22:05:33 --- quit: pierpal (Quit: Poof) 22:05:51 --- join: pierpal (~pierpal@host97-54-dynamic.4-87-r.retail.telecomitalia.it) joined #forth 22:11:30 --- join: dzho_ (~dzho@unaffiliated/dzho) joined #forth 22:16:54 --- quit: proteusguy (*.net *.split) 22:17:03 --- quit: rodarmor (*.net *.split) 22:17:11 --- quit: dzho (*.net *.split) 22:20:19 --- quit: fiddlerwoaroof (Ping timeout: 240 seconds) 22:21:44 --- join: fiddlerwoaroof (~fiddlerwo@unaffiliated/fiddlerwoaroof) joined #forth 22:35:36 --- join: proteusguy (~proteusgu@2403:6200:88a6:d26d:bc05:72ca:c59a:6ea3) joined #forth 22:35:36 --- join: rodarmor (sid210835@gateway/web/irccloud.com/x-xfwebrleqflziklj) joined #forth 22:35:36 --- mode: hitchcock.freenode.net set +v proteusguy 22:38:03 --- join: dave9 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 22:38:14 re 22:55:09 --- quit: Labu (Quit: WeeChat 2.0.1) 23:35:26 --- quit: tadni_ (Remote host closed the connection) 23:35:26 --- quit: tadni- (Remote host closed the connection) 23:55:41 --- join: tadni (~tadni@24-182-175-184.dhcp.stls.mo.charter.com) joined #forth 23:56:04 --- join: tadni_ (~tadni@24-182-175-184.dhcp.stls.mo.charter.com) joined #forth 23:56:14 --- quit: tadni_ (Remote host closed the connection) 23:59:59 --- log: ended forth/18.07.17