00:00:00 --- log: started forth/19.05.21 00:32:14 I don't implement VALUE, never liked it, don't need it. 00:48:18 --- quit: chunkypuffs (Remote host closed the connection) 01:36:53 --- join: xek (~xek@user-5-173-137-10.play-internet.pl) joined #forth 01:39:04 --- quit: xek (Remote host closed the connection) 01:49:03 --- join: xek (~xek@user-5-173-137-10.play-internet.pl) joined #forth 02:04:13 --- quit: ashirase (Ping timeout: 250 seconds) 02:52:58 I've been working on a parser generator, here's a working one 02:53:00 http://ix.io/1JDN 02:53:03 working output* 02:53:27 It reads in expressions like a+(b*(c+d)-e*f)-20 and outputs the postfix notation 02:53:31 so the output is a b c d + * e f * - + 20 - 02:53:49 it works in gforth, and all you need to do is type run-demo 02:54:02 I'll upload the parser generator at a later time when I get it to self-host 02:54:20 cool man 02:59:54 --- nick: jedb_ -> jedb 03:03:32 surprised you store the input 03:03:45 I could imagine something like this could use the stack to store the tree 03:04:23 I'll make it read from a file and output to a file next 03:04:30 once I figure out how gforth does this 03:04:47 could use stdin/stdout 03:05:14 I think I tried to use gforth file words comfortably one time and that's why I use pipes now 04:34:00 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 04:40:47 --- quit: rdrop-exit (Quit: Lost terminal) 05:12:04 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:16:41 --- quit: dave0 (Quit: dave's not here) 05:21:09 --- join: chunkypuffs (~chunkypuf@2a01:4f9:2b:16d5::1) joined #forth 06:57:51 --- join: jedb_ (~jedb@185.128.24.51) joined #forth 06:58:53 --- join: reepca` (~user@208.89.170.37) joined #forth 07:00:55 --- join: djinni_ (~djinni@68.ip-149-56-14.net) joined #forth 07:01:48 --- join: WilhelmV1nWeiner (dch@ny1.hashbang.sh) joined #forth 07:03:20 --- join: nighty- (~nighty@b157153.ppp.asahi-net.or.jp) joined #forth 07:05:14 --- join: Lord_Nightmare2 (Lord_Night@unaffiliated/lordnlptp) joined #forth 07:06:35 --- quit: john_metcalf (*.net *.split) 07:06:37 --- quit: Lord_Nightmare (*.net *.split) 07:06:47 --- quit: rain1 (*.net *.split) 07:06:48 --- quit: APic (*.net *.split) 07:06:53 --- quit: WilhelmVonWeiner (*.net *.split) 07:07:02 --- nick: Lord_Nightmare2 -> Lord_Nightmare 07:07:08 --- quit: jedb (*.net *.split) 07:07:12 --- quit: djinni (*.net *.split) 07:07:14 --- quit: nighty (*.net *.split) 07:07:24 --- quit: reepca (*.net *.split) 07:12:35 --- join: APic (apic@apic.name) joined #forth 07:14:30 --- join: rain1 (~My_user_n@unaffiliated/rain1) joined #forth 07:34:57 --- quit: tabemann (Ping timeout: 248 seconds) 07:54:33 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 07:58:33 o/ this is a less traditional topic, but as it's stack based I thought I'd ask here. Anyone know any good resources on compiling stack based languages? 08:04:01 another stack-based-language 08:04:29 moony_: Forth compilation is typically a part of the language rather than a separate toolchain although you can produce turnkey executables. 08:04:30 a lot of people like http://www.bradrodriguez.com/papers/moving1.htm 08:05:21 Yeah, I know, I'm studying Factor's design. But I was wondering if there were other examples. pointfree, I'm not doing a forth, I just thought this was the best place to ask. 08:05:52 ah 08:06:46 moony_: well, I am trying to recall the name of a paper that talked about how to transform stack-based-language into Single Static Assignment form 08:07:37 Thanks. What I'm working on is a JITed language, and bytecode is probably gonna be stack based initially for sanity. (I can add a SSA bytecode later, once the project is selfhosting.) 08:07:58 moony_: https://github.com/anse1/firmforth 08:08:24 I have to make an interpreter first to bootstrap the thing, and stack based bytecode is really easy to interpret. Thanks. 08:09:38 The fun part will be making a JIT VM that executes itself, and JITs itself, which is the point of this project. I'm starting to question if this is sane :p 08:11:26 Zarutian, poke me if you can find that paper. Thanks for the help <3 08:13:00 moony_: I think you could do that if you wrote an emulator (arm, x86, gameboy) in your stack based language. Then you could metacompile the JIT VM. 08:14:50 What my plan is is to compile a bootstrap version of the VM to a executable. Some bootstrap ASM will set up the environment, and then it'll execute the VM, which, after setup, will have all the data on itself it needs to recompile itself 08:15:59 From there it can just optimize parts of itself over time, replacing the bootstrap code entirely. 08:16:58 Kinda like a snake eating it's tail. (But that logo is stolen by pypy, I have to come up with something different :p) 08:18:26 pointfree: which reminds me. From what I understand about Forth, it is easier to make specialized primtives based on profiling and static analysis of the programs run. 08:19:14 pointfree: my question to you, have you seen any such that use FPGA or CLPD or other reconfigurable data-logic for those kind of purposes? 08:26:51 Zarutian: JIT optimization was the plan for the PSoC/gelforth. There was also testra's cpld forth hdl which is unavailable but described in Forth Dimensions. 08:26:51 Something like this https://hub.darcs.net/pointfree/forth-eda-cm-portable could be used for profiling/timing characterization. 08:31:21 I think configuration compiled to the fpga/cpld could be profiled/characterized live on the hardware and modified with feedback. 08:52:47 Zarutian: You could characterize a device by detecting many overlapping race conditions against an fpga, and then using feedback to adjust the search window by reconfiguring the fpga. 09:31:07 --- quit: WilhelmV1nWeiner (Quit: leaving) 09:31:25 --- join: WilhelmVonWeiner (dch@ny1.hashbang.sh) joined #forth 10:27:50 --- join: dys (~dys@2003:5b:203b:102:226:5eff:fee9:68d2) joined #forth 10:35:04 --- quit: dys (Read error: Connection reset by peer) 11:17:51 --- join: dys (~dys@tmo-103-172.customers.d1-online.com) joined #forth 11:22:14 --- join: xek_ (~xek@user-5-173-137-10.play-internet.pl) joined #forth 11:24:47 --- quit: xek (Ping timeout: 246 seconds) 11:31:21 --- join: xek__ (~xek@public-gprs408426.centertel.pl) joined #forth 11:34:05 --- quit: xek_ (Ping timeout: 258 seconds) 11:50:07 --- join: xek (~xek@user-5-173-137-10.play-internet.pl) joined #forth 11:50:08 --- quit: gravicappa (Ping timeout: 258 seconds) 11:51:15 --- quit: xek__ (Ping timeout: 245 seconds) 13:49:57 --- quit: xek (Remote host closed the connection) 13:53:55 --- quit: Zarutian (Read error: Connection reset by peer) 13:54:01 --- join: Zarutian_2 (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 14:17:38 --- quit: pierpal (Ping timeout: 252 seconds) 14:36:25 --- join: john_metcalf (~digital_w@host86-139-60-58.range86-139.btcentralplus.com) joined #forth 15:02:45 --- quit: moony_ (Ping timeout: 252 seconds) 15:23:53 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 15:29:09 --- quit: moony_ (Ping timeout: 248 seconds) 15:34:15 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 15:50:28 --- quit: moony_ (Ping timeout: 272 seconds) 15:51:52 --- quit: PoppaVic (Ping timeout: 252 seconds) 15:52:16 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 16:04:06 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 16:16:15 --- quit: moony_ (Ping timeout: 245 seconds) 16:26:14 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 16:28:44 --- join: pierpal (~pierpal@host103-244-dynamic.55-79-r.retail.telecomitalia.it) joined #forth 16:32:07 --- join: tabemann (~tabemann@rrcs-162-155-170-75.central.biz.rr.com) joined #forth 16:33:09 --- quit: pierpal (Ping timeout: 248 seconds) 16:36:14 --- quit: john_cephalopoda (Ping timeout: 252 seconds) 16:49:45 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 16:54:10 --- quit: moony_ (Remote host closed the connection) 17:00:43 --- join: pierpal (~pierpal@host103-244-dynamic.55-79-r.retail.telecomitalia.it) joined #forth 17:13:28 --- join: dave0 (~dave0@069.d.003.ncl.iprimus.net.au) joined #forth 17:14:09 hi 17:15:14 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 17:20:16 hey 17:21:49 hi tabemann 17:35:14 * tabemann is playing around with his Life implementation 17:49:49 is that what kids are calling it these days 17:53:58 --- quit: moony_ (Ping timeout: 258 seconds) 18:09:48 --- quit: tabemann (Ping timeout: 272 seconds) 18:21:27 zy]x[yz: what else would it be called? 18:26:20 i'll tell you when you're older 18:41:07 --- quit: john_cephalopoda (Ping timeout: 258 seconds) 18:56:22 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 18:59:12 --- quit: pierpal (Ping timeout: 272 seconds) 19:16:34 --- join: tabemann (~tabemann@2600:1700:7990:24e0:b944:a349:56b9:12fb) joined #forth 19:17:40 --- quit: tabemann (Client Quit) 19:21:48 --- join: tabemann (~tabemann@2600:1700:7990:24e0:b944:a349:56b9:12fb) joined #forth 19:33:29 --- join: rdrop-exit (~markwilli@112.201.166.63) joined #forth 19:33:41 c[_] Good morning Forthers 19:35:41 hey rdrop-exit 19:35:47 Hi tabemann 19:36:20 * tabemann is using his homemade IRC client written in Haskell again now that freenode is no longer requiring SASL logins (which it hasn't for a while as I gather) 19:37:07 Cool, I use irssi, it was the most bare-bones one I could find. 19:37:09 been also playing around in Life 19:37:31 I had been using hexchat because it supports SASL 19:38:09 Cool, have you read the cellular automata book that uses Forth? 19:38:20 no I haven't 19:38:35 Just a sec I'll dig up the title 19:38:42 but yeah, I'm using sixels to display Life 19:38:48 one pixel per cell 19:39:00 Cool 19:39:20 unfortunately my implementation only supports a world where every cell is visible at once 19:39:38 I could make some changes to it to support scrolling and zooming and like 19:40:02 one pixel per cell makes it hard to make out everything 19:40:40 I'm wondering how I could speed it up; hashlife perhaps? 19:43:13 https://www.amazon.com/gp/product/0262200600/ 19:45:54 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 19:47:16 it seemed overpriced new so I got it used 19:47:47 hey 19:49:49 I haven't read it yet, was only reminded about it a couple years ago 19:50:45 CAMs are not a priority 19:51:41 Currently reading "Progress in Applications of Boolean Functions" by Tsutomu Sasao 19:52:53 https://www.amazon.com/gp/product/160845181X/ 20:02:12 Can you remind me which terminal emulators have decent sixel support? 20:02:28 probably your best bet is mlterm 20:02:43 mlterm at the present supports up to 1024 colors 20:03:10 compared with, say, xterm -ti vt340, which only supports 16 colors 20:04:06 thanks 20:05:00 yeah, mlterm's what I've been using to render sixels on 20:05:20 even though for Life I don't really need it, since Life is monochrome 20:05:29 --- quit: moony_ (Remote host closed the connection) 20:06:11 Have you compared the speed of xterm vs mlterm running your Life? 20:06:23 no I haven't 20:07:28 --- join: moony_ (~mooonyphn@hellomouse/dev/moony) joined #forth 20:09:24 okay, just ran Life with xterm - it seems about the same 20:09:49 Oh well 20:12:37 I wonder if xterm supports any alternative to sixels for raster graphics 20:15:04 Using ReGIS would take care of your zooming and panning needs I suppose 20:17:00 since ReGIS is vector 20:28:15 back 20:28:28 just ported my Life implementation to gforth 20:28:41 That was fast :) 20:28:59 it's noticeably faster, but not extremely fast 20:29:34 I've seen faster life implementations than my life implementation running under gforth 20:30:32 which probably use algorithms like hashlife 20:31:01 Don't know it 20:32:23 about ReGIS 20:32:24 --- join: gravicappa (~gravicapp@h109-187-203-93.dyn.bashtel.ru) joined #forth 20:32:50 I suspect it wouldn't be suitable specifically because it is vector 20:33:10 and Life is inherently suited to raster graphics 20:34:53 You'd think so, but according to the Wikipedia page some terminals implemented Sixels on top of ReGIS 20:37:05 In such a case I assume you could output the Life grid using Sixels then use the underlying ReGIS commands for your panning and zooming needs. 20:37:47 interesting 20:38:33 --- join: pierpal (~pierpal@host201-184-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 20:57:50 --- quit: dave0 (Quit: dave's not here) 21:10:07 --- quit: dddddd (Remote host closed the connection) 21:10:23 --- quit: the_cuckoo (Ping timeout: 245 seconds) 21:19:42 Finally got the parser generators to self host 21:19:44 https://github.com/siraben/meta-yacc 21:20:26 still need to refactor the Forth routines (heavily uses locals) but otherwise it works 21:22:42 --- join: the_cuckoo (~charlie@d51a50ae9.access.telenet.be) joined #forth 22:07:07 Why does your Forth need a parser generator? 23:29:41 --- quit: gravicappa (Ping timeout: 248 seconds) 23:54:58 --- quit: dys (Ping timeout: 272 seconds) 23:59:59 --- log: ended forth/19.05.21