00:00:00 --- log: started forth/19.05.30 00:30:45 --- quit: clog (^C) 00:30:45 --- log: stopped forth/19.05.30 00:30:56 --- log: started forth/19.05.30 00:30:56 --- join: clog (~nef@bespin.org) joined #forth 00:30:56 --- topic: 'Forth Programming | logged by clog at http://bit.ly/91toWN | If you have two (or more) stacks and speak RPN then you're welcome here! | https://github.com/mark4th' 00:30:56 --- topic: set by proteusguy!~proteus-g@cm-134-196-84-89.revip18.asianet.co.th on [Sun Mar 18 08:48:16 2018] 00:30:56 --- names: list (clog xek_ dave0 +proteusguy Keshl rdrop-exit bluekelp tabemann gravicappa john_cephalopoda dys john_metcalf Zarutian nighty ashirase alexshpilkin jimt[m] siraben bb010g pareidolia X-Scale zy]x[yz mstevens pointfree moony WilhelmVonWeiner jedb lonjil chunkypuffs Croran djinni jpsamaroo phadthai jhei dave9 rprimus the_cuckoo rain1 APic Lord_Nightmare reepca cheater rann MrMobius ghostyy dne a3f remexre diginet2 jn__ gaze___ vxe +KipIngram gabc lchvdlch CORDIC) 00:30:56 --- names: list (amuck ovf catern nonlinear ullbeking arrdem__ presiden yunfan koisoke irsol malyn jackdaniel rpcope- C-Keen dzho +crc Kumool ttmrichter) 00:36:28 --- quit: proteusguy (Ping timeout: 272 seconds) 00:48:20 --- join: proteusguy (~proteusgu@mx-ll-14.207.209-205.dynamic.3bb.co.th) joined #forth 00:48:20 --- mode: ChanServ set +v proteusguy 01:40:47 --- quit: jedb (Remote host closed the connection) 01:43:13 --- join: jedb (~jedb@103.57.72.31) joined #forth 01:43:13 --- quit: clog (Ping timeout: 246 seconds) 01:43:13 --- log: stopped forth/19.05.30 01:43:28 --- log: started forth/19.05.30 01:43:28 --- join: clog (~nef@bespin.org) joined #forth 01:43:28 --- topic: 'Forth Programming | logged by clog at http://bit.ly/91toWN | If you have two (or more) stacks and speak RPN then you're welcome here! | https://github.com/mark4th' 01:43:28 --- topic: set by proteusguy!~proteus-g@cm-134-196-84-89.revip18.asianet.co.th on [Sun Mar 18 08:48:16 2018] 01:43:28 --- names: list (clog jedb +proteusguy xek_ dave0 Keshl rdrop-exit bluekelp tabemann gravicappa john_cephalopoda dys john_metcalf Zarutian nighty ashirase alexshpilkin jimt[m] siraben bb010g pareidolia X-Scale zy]x[yz mstevens pointfree moony WilhelmVonWeiner lonjil chunkypuffs Croran djinni jpsamaroo phadthai jhei dave9 rprimus the_cuckoo rain1 APic Lord_Nightmare reepca cheater rann MrMobius ghostyy dne a3f remexre diginet2 jn__ gaze___ vxe +KipIngram gabc lchvdlch CORDIC) 01:43:28 --- names: list (amuck ovf catern nonlinear ullbeking arrdem__ presiden yunfan koisoke irsol malyn jackdaniel rpcope- C-Keen dzho +crc Kumool ttmrichter) 02:03:19 --- quit: ashirase (Ping timeout: 245 seconds) 02:07:24 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:32:57 --- quit: Croran (Ping timeout: 250 seconds) 02:35:35 --- join: Croran (~quassel@c-73-118-179-18.hsd1.wa.comcast.net) joined #forth 02:47:34 --- quit: proteusguy (Ping timeout: 272 seconds) 04:15:07 --- quit: dys (Ping timeout: 246 seconds) 04:43:52 --- join: pierpal (~pierpal@host196-36-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 05:11:25 --- join: proteusguy (~proteusgu@184.82.200.177) joined #forth 05:11:26 --- mode: ChanServ set +v proteusguy 05:19:40 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:51:43 [[https://xkcd.com/1838/][Machine Learning]]. 06:42:06 --- quit: pierpal (Quit: Poof) 06:42:23 --- join: pierpal (~pierpal@host196-36-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 07:00:31 --- quit: dave0 (Quit: dave's not here) 07:47:59 --- quit: tabemann (Ping timeout: 250 seconds) 07:49:03 lol. 07:49:08 GANs are cool though. 07:56:12 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 08:17:54 --- quit: pierpal (Quit: Poof) 08:18:13 --- join: pierpal (~pierpal@host196-36-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 08:22:56 --- quit: proteusguy (Ping timeout: 248 seconds) 08:49:36 --- join: dys (~dys@tmo-122-245.customers.d1-online.com) joined #forth 09:47:02 --- join: proteusguy (~proteusgu@cm-58-10-155-156.revip7.asianet.co.th) joined #forth 09:47:02 --- mode: ChanServ set +v proteusguy 09:47:36 --- join: `presiden (~presiden@unaffiliated/matematikaadit) joined #forth 10:25:55 --- quit: gravicappa (Ping timeout: 258 seconds) 10:40:37 --- join: gravicappa (~gravicapp@h37-122-123-170.dyn.bashtel.ru) joined #forth 11:01:57 --- quit: jedb (Ping timeout: 248 seconds) 11:03:11 --- join: jedb (~jedb@103.57.72.31) joined #forth 11:57:20 --- quit: Croran (Ping timeout: 268 seconds) 12:12:21 --- quit: gravicappa (Ping timeout: 248 seconds) 13:34:53 --- quit: xek_ (Ping timeout: 244 seconds) 14:55:49 this queue is great and all until you start needing operations 14:56:29 because I can't think of how you'd define something like "KEY BL = IF ... THEN" with a queue 14:56:43 without some kind of frame 15:03:24 at best I can see Queues as a sister data structure 15:04:00 so you can run SWITCH or whatever and now you're on the queue instead of stack 15:11:26 maybe you could have typed data, and your words only dequeue the data of the type it needs. Could be interesting, if complex. 15:17:45 --- quit: Zarutian (Read error: Connection reset by peer) 15:18:12 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 15:26:55 http://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/ <- challange for ya. Do this kind of dungeon-maze-generator in Forth 15:40:09 I'll give it a go tomorrow at work if nobody else has 15:45:14 --- part: john_metcalf left #forth 15:53:09 WilhelmVonWeiner: Yeah KEY BL = IF ... THEN is a problem if something else was produced to the queue before KEY produced a value. It wants to be written and evaluated breadth-first (aka top down). Not sure what that would look like as factored code. 15:53:57 --- join: dave0 (~dave0@069.d.003.ncl.iprimus.net.au) joined #forth 15:54:36 hi 16:12:58 --- quit: john_cephalopoda (Ping timeout: 252 seconds) 16:13:30 2 3 KEY BL + = . IF ." hello" THEN ( 5 hello) No explicit stack juggling, but the code is not easily concatenated like this. 16:27:10 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:45:51 --- join: tabemann (~tabemann@h193.235.138.40.static.ip.windstream.net) joined #forth 18:01:39 c[_] Good morning Forthers 18:07:04 --- join: deesix (~dddddd@unaffiliated/dddddd) joined #forth 18:19:15 hey guys 18:19:27 * tabemann is busy debugging an allocator 18:19:56 hopefully this will replace the use of malloc/free by hashforth 18:25:20 Hi tabemann 18:30:52 supposedly writing allocators is hard, yet this allocator is simple and straightforward (even though debugging is a pain) 18:31:17 mind you it has no need to deal with things like concurrency 18:34:59 hi rdrop-exit 18:35:06 Hi crc 18:38:31 tabemann: Does your application require ALLOC/FREE ? 18:52:21 --- quit: X-Scale (Ping timeout: 248 seconds) 18:53:15 --- join: X-Scale` (~ARM@169.1.108.93.rev.vodafone.pt) joined #forth 18:54:02 --- nick: X-Scale` -> X-Scale 19:02:05 back 19:02:38 rdrop-exit: the main application I have is that I load whole source files, which are of variable size, into memory at once and then parse them as wholes 19:03:14 but there are some things I would redesign if I had an allocator I could use (while remaining portable), such as my line editor's history 19:04:26 in general, though, I like the idea of having an allocator handy should I need it while remaining portable by not relying upon a C standard library's malloc()/free() 19:08:12 I finally got a case where I needed lambdas - embedding debugging code in allocator words that needed to be called as xts by my act-as-if-io-is-single-tasking word 19:12:20 --- join: X-Scale` (~ARM@169.1.108.93.rev.vodafone.pt) joined #forth 19:12:24 --- quit: dddddd (Remote host closed the connection) 19:13:34 I'm confused by your layering, is dynamic memory allocation an optional feature? 19:14:04 i.e. extension 19:14:18 --- quit: X-Scale (Ping timeout: 272 seconds) 19:14:18 --- nick: X-Scale` -> X-Scale 19:14:21 the only thing that currently relies upon it is file loading, so if one does not need file loading then one does not need it 19:15:01 well, that and building images 19:15:55 (but of course if one is building images one is necessarily loading file as well) 19:16:23 I will probably at some point add support for blocks, and blocks will not need it 19:17:19 --- quit: nighty (Quit: Disappeared in a puff of smoke) 19:18:02 --- join: nighty (~nighty@b157153.ppp.asahi-net.or.jp) joined #forth 19:21:33 Typically there's nothing in Forth that requires dynamic memory allocation to be present, it's more of an optional extension in OS hosted Forths for the benefit of applications running on top of the Forth. 19:23:08 On MCUs it's usually avoided altogether. 19:25:12 Personally I would not load dynamic allocation words unless it was absolutely required by the application, I would not expect that the Forth itself would require dynamic allocation. 19:28:18 I guess you could have some optional high level Forth utilities that would require it, but not the basic Forth system itself. 19:31:32 By dynamic alloction, I mean heap-based malloc/free type functionality. 19:38:34 yes 19:39:06 cool 19:43:50 in MCUs, of course, you generally don't have enough RAM to support a dynamic allocator in the first place, and usually everything is allocated and then left in place, which ALLOT is more than suitable for 19:44:37 and if you ever need to change the configuration, there's always MARKER 19:46:56 Linear allocation (i.e. LIFO disciplined) as opposed to heap-based allocation 19:47:33 ALLOT is an example of that 19:48:22 Linear allocation basically uses a stack discipline so there's no fragmentation 19:49:57 --- part: PoppaVic left #forth 19:50:24 You can't "free" something unless you "free" anything unless you "free" everything that was came after it 19:50:40 oops, let me rephrase 19:51:03 You can't "free" something unless you "free" everything that came after it 19:57:14 If you have two regions of memory that require linear allocation, you grow them in opposite directions, and make sure they never meet. 20:01:23 Just as in many Forths one of the stacks grows downward towards the dictionary. 20:02:16 --- join: X-Scale` (~ARM@214.17.158.5.rev.vodafone.pt) joined #forth 20:02:26 --- quit: tabemann (Ping timeout: 272 seconds) 20:03:24 --- quit: X-Scale (Ping timeout: 244 seconds) 20:03:25 --- nick: X-Scale` -> X-Scale 20:03:47 Gotta walk the dogs, catch you all later 20:04:01 --- quit: rdrop-exit (Quit: Lost terminal) 20:37:54 --- join: tabemann (~tabemann@2600:1700:7990:24e0:b944:a349:56b9:12fb) joined #forth 20:38:06 --- quit: dys (Ping timeout: 258 seconds) 20:44:59 --- join: gravicappa (~gravicapp@h37-122-123-170.dyn.bashtel.ru) joined #forth 20:51:49 --- quit: bluekelp (Read error: Connection reset by peer) 21:01:04 --- join: X-Scale` (~ARM@177.60.43.5.rev.vodafone.pt) joined #forth 21:03:05 --- quit: X-Scale (Ping timeout: 268 seconds) 21:03:05 --- nick: X-Scale` -> X-Scale 22:46:57 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 23:06:37 pointfree: it kinda makes words and such impossible without knowing some number of units of information about the queue which are used in that word 23:07:13 without an empty queue you don't have that cleanliness Forth gives you 23:07:30 since, stacks, you leave em clear when you're done 23:25:07 --- quit: CORDIC (Quit: ERC Version 5.3 (IRC client for Emacs)) 23:34:21 --- join: xek_ (~xek@apn-37-248-138-80.dynamic.gprs.plus.pl) joined #forth 23:46:14 --- quit: gravicappa (Ping timeout: 245 seconds) 23:47:00 --- join: gravicappa (~gravicapp@h109-187-8-54.dyn.bashtel.ru) joined #forth 23:59:59 --- log: ended forth/19.05.30