00:08:17 -!- B|u35un has joined. 00:08:46 TUSHO 00:11:00 -!- Corun has quit ("This computer has gone to sleep"). 00:27:45 -!- jix has quit ("CommandQ"). 00:39:22 -!- B|u35un has left (?). 00:41:35 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | err yeah. 00:46:00 -!- LinuS has quit ("Puzzi. S, parlo proprio con te. Puzzi."). 00:46:25 -!- KingOfKarlsruhe has quit ("Verlassend"). 00:48:17 ERR YEAH!! 00:55:20 -!- sebbu has quit ("xchat update"). 00:57:27 -!- sebbu has joined. 01:22:08 -!- Slereah_ has quit (Read error: 110 (Connection timed out)). 02:12:47 hey oklopol 02:27:43 -!- psygnisf_ has joined. 02:27:43 -!- psygnisfive has quit (Read error: 104 (Connection reset by peer)). 04:41:26 -!- pikhq has quit (zelazny.freenode.net irc.freenode.net). 04:41:26 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 04:41:26 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net). 04:41:29 -!- Quendus has quit (zelazny.freenode.net irc.freenode.net). 04:41:29 -!- fungot has quit (zelazny.freenode.net irc.freenode.net). 04:41:39 -!- fizzie has joined. 04:42:11 -!- fungot has joined. 04:42:11 -!- pikhq has joined. 04:42:11 -!- cmeme has joined. 04:42:11 -!- Quendus has joined. 06:05:30 -!- Sgeo has quit (Remote closed the connection). 06:20:09 -!- GreaseMonkey has joined. 06:41:35 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | check the msg board. 06:48:36 -!- GreaseMonkey has quit (Remote closed the connection). 06:49:26 -!- asiekierka has joined. 06:50:30 -!- GreaseMonkey has joined. 06:52:22 Hey 07:54:09 -!- Slereah_ has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:07:14 -!- olsner has joined. 08:07:49 -!- poiuy_qwert has quit. 08:11:43 -!- Judofyr has joined. 08:12:45 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 08:13:03 -!- Judofyr has joined. 08:19:38 Postfix wiki "Statistics" page: "There are 1,413 total pages in the database. This includes "talk" pages, pages about postfix, minimal "stub" pages, redirects, and others that probably don't qualify as content pages. Excluding those, there are 4 pages that are probably legitimate content pages." 08:20:20 I'm not sure which one is funnier: the fact that there are only 4 (out of 1413) pages of content, or that "pages about postfix" don't count as legitimate content on the Postfix wiki. 08:44:32 fizzie, hahaha 08:45:10 well blame mediawiki 09:19:34 -!- asiekierka has quit. 09:26:48 -!- Slereah has joined. 09:26:48 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 09:33:54 -!- olsner has quit ("Leaving"). 09:40:50 -!- KingOfKarlsruhe has joined. 09:58:10 -!- pikhq has quit (Remote closed the connection). 09:58:25 -!- pikhq has joined. 11:00:19 -!- AnMaster has quit ("ERC Version 5.3 (IRC client for Emacs)"). 11:06:20 -!- MikeRiley has joined. 11:06:30 you about deewiant??? 11:09:18 -!- GreaseMonkey has quit ("Jesus loves you"). 11:14:39 -!- MikeRiley has quit (" "). 11:15:56 -!- tusho has joined. 11:30:56 -!- LinuS has joined. 11:44:22 -!- MikeRiley has joined. 11:44:58 you about Deewiant??? 11:47:26 MikeRiley: he's marked as away 11:47:28 so no 11:47:38 ok, thanks 12:14:15 -!- MikeRiley has quit (" "). 12:20:47 heh, I missed him by 5 minutes both time 12:20:58 +s 12:21:25 Them fates, they are against your union. 12:21:26 next time, tell him to just state his business :-P 12:21:42 IRC is asynchronous, that's the beauty of it 12:25:38 -!- jix has joined. 12:41:36 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | better yet. 12:43:46 o 12:44:41 optbot: int a = 1; 12:44:41 KingOfKarlsruhe: in Python you'd just use nested lists... 12:45:02 optbot: a = True 12:45:02 KingOfKarlsruhe: Frankenstein is the doctor. 12:45:36 optbot: a is Frankenstein ? 12:45:36 KingOfKarlsruhe: say, HRTI 12:45:58 optbot is False 12:45:58 KingOfKarlsruhe: heh 12:46:05 optbot is None 12:46:05 KingOfKarlsruhe:
  • 12:46:51 tusho: maybe, for that conversator, you could do something different than a markov chain, just use entire sentences like that, but try to keep context by remembering what words have been used in the sentences 12:47:17 and use sentences with those words more probably than others 12:47:19 oklopol: no 12:47:21 it is perfect as it is 12:47:30 remember, it has operating hours 12:47:31 optbot:
    • optbot is False

      optbot!

      optbot is True

    12:47:32 KingOfKarlsruhe: I can't be agnostic because I actively disbelieve in divinity and the supernatural. 12:47:40 operating hours? 12:48:11 optbot: return False 12:48:11 KingOfKarlsruhe: "works fine" means "without issues" to me :-) 12:50:33 oklopol: it is only coherent in its operating hours 12:54:03 what are operating hours. 12:54:59 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 12:55:10 -!- Slereah_ has joined. 12:55:21 optbot! 12:55:21 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Name That Language!. 12:56:44 optbot; Are you the perfect bot? 12:56:44 fizzie: MILLIONS OF WAYS TO MODIFY IT! 12:57:41 optbot: We are perfect and you not ! 12:57:41 KingOfKarlsruhe: Assuming you're outputting to a file and simply playing that file raw? 12:58:35 optbot: sv_cheats 1 12:58:35 KingOfKarlsruhe: Swell. 12:59:30 optbot: exec(sys.exit()) 12:59:30 KingOfKarlsruhe: hehe 12:59:46 optbot: eval(sys.exit()) 12:59:47 KingOfKarlsruhe: that's right 13:00:05 optbot: "import sys; sys.exit()" 13:00:06 KingOfKarlsruhe: and put it on the web so we can compare 13:00:11 optbot: no, that's wrong 13:00:12 Deewiant: no 13:00:14 optbot: no 13:00:15 Deewiant: very good 13:00:18 optbot: yes 13:00:18 Deewiant: do you think i should skip tomorrow's lecture? :) 13:00:20 optbot: yes 13:00:21 Deewiant: or something 13:00:23 optbot: yes 13:00:23 Deewiant: yes 13:01:23 !optbot 13:01:24 KingOfKarlsruhe: Haskell is OO in senses 1, 2, 4, 5, 6, 7. But its form of 7 blows 13:01:38 !optbot?!?!?!?! 13:01:38 KingOfKarlsruhe: free legal music by independant artists :D] 13:02:39 optbot: why the fuck are you yessing and noing now, when just a few days ago you wouldn't give me a boolean no matter how many times i asked 13:02:40 oklopol: That was a red herring? 13:03:05 optbot: err sure 13:03:05 oklopol: hihi 13:03:15 optbot: fuck you 13:03:16 oklopol: The concept behind it, eh? 13:03:22 optbot: exactly 13:03:23 oklopol: that's 10 years internet time :) 13:03:39 optbot: exec(raise StandardError) 13:03:39 KingOfKarlsruhe: oklopol is female? or are we talking manboobs? 13:03:45 -!- sebbu2 has joined. 13:04:11 [12:54:04] what are operating hours. 13:04:18 the hours in which it is coherent 13:04:20 they are secret, sorry. 13:04:32 i see, i see. 13:05:06 optvot; Pssst, what are your secret operating hours? 13:05:12 optbot^ 13:05:12 fizzie: :) 13:05:34 optbot; Are you mocking my typing skills! 13:05:35 fizzie: (and to note; i have been away from 4th till today 18:45 when i arrived on this channel today) 13:05:52 Apparently now is not part of the operating hours. 13:06:01 optbot: what are your public operating hours 13:06:02 Deewiant: :p 13:06:09 Yes, evidently not. 13:08:30 ^bf 13:08:30 +++++++++++++++++++++++++++++++++++++++[->+>++>+++<<<]>>>------.+.++++.------------------.+++++++++++++.+++++.----------------------------------------------------------.--------------------------.++++++++++++++++++++++++++++++++++++++++++++++.-----.------.++++++++.-------------------------------------------.<+++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+ 13:08:30 +++.-----------.-------.+++++++++++++.+++++. 13:11:02 ^code 0a->:# 0# \# 0# \# p# 1# -# _ ;(just preparing space for the ^str functionality, hope I don't break fungot with this); 13:11:03 P~.v~vA 13:11:12 Well, that wasn't supposed to happen. 13:11:42 I think I forgot a : before the if, and the corresponding $ after it. 13:11:54 -!- fungot has quit (Read error: 131 (Connection reset by peer)). 13:12:02 Well, might as well get it initialized properly. 13:12:31 optbot: say "hello" 13:12:31 KingOfKarlsruhe: Fugue source works a lot better in MIDI because that makes it a lot easier for a computer to figure out the intervals 13:12:51 optbot: help 13:12:51 KingOfKarlsruhe: that's definitely subjective 13:13:03 optbot: confirm 13:13:03 KingOfKarlsruhe: Interesting. 13:16:11 optbot: CPU: AMD Athlon 64 X2 Dual Core 4200+ at 2850 MHz 13:16:11 KingOfKarlsruhe: final bad id C in SOCK...for some reason on my system it is not connecting... 13:18:19 -!- sebbu has quit (Read error: 110 (Connection timed out)). 13:19:11 optbot: [ 5, 5, 5, 5, 5, 5, 5 ] 13:19:11 KingOfKarlsruhe: that'd be a challenge. 13:34:26 -!- fungot has joined. 13:34:32 ^str 0 set foo 13:34:32 Set: foo 13:34:37 ^str 0 add bar 13:34:38 Added. 13:34:40 ^str 0 get 13:34:41 foobar 13:34:45 ^str 0 something else 13:34:46 Usage: ^str 0-9 get/set/add [text] 13:35:30 There are ten strings there for program input. Next I need to make ^def to accept "str:0" type arguments referring to those strings, then you can again insert longer programs. 13:38:33 Actually I should probably also check 13:38:38 ^str 9 get 13:38:44 Hmm. 13:39:13 :orwell.freenode.net 412 fungot :No text to send 13:39:37 I guess it tried to send an empty line without even the PRIVMSG prefix. That wasn't supposed to happen. 13:40:09 -!- fungot has quit (Remote closed the connection). 13:41:59 Or does an empty message also generate that error? Maybe it does. 13:43:06 -!- AnMaster has joined. 13:44:16 -!- Defe has joined. 13:45:52 -!- fungot has joined. 13:45:58 ^str 9 get 13:45:58 Empty. 13:46:34 Well, you can't now distinguish between "" and "Empty.", but maybe that isn't an issue. 13:46:43 ^help 13:46:43 ^ ; ^def ; ^show [command]; lang=bf 13:50:40 ^reload 13:50:41 Reloaded. 13:50:44 ^help 13:50:45 ^ ; ^def ; ^show [command]; lang=bf; ^str 0-9 get/set/add [text] 13:51:27 ^str 0 set ++++++++++ 13:51:28 Set: ++++++++++ 13:51:32 ^str 0 add ++++++++++ 13:51:32 Added. 13:51:35 ^str 0 add ++++++++++ 13:51:35 Added. 13:51:37 ^str 0 add ++++++++++ 13:51:37 Added. 13:51:37 ^str 0 add ++++++++++ 13:51:38 ^str 0 add ++++++++++ 13:51:38 Added. 13:51:38 ^str 0 add ++++++++++ 13:51:38 Added. 13:51:38 ^str 0 add ++++++++++ 13:51:38 Added. 13:51:38 ^str 0 add ++++++++++ 13:51:39 Added. 13:51:39 Added. 13:51:40 ^str 0 add ++++++++++ 13:51:40 Added. 13:51:54 ^def arjiu bf str:0 13:51:54 Defined. 13:52:01 hmph. 13:52:06 ^str 0 add . 13:52:07 Added. 13:52:09 ^def arjiu bf str:0 13:52:09 Defined. 13:52:13 ^arjiu ds 13:52:59 ^show arjiu 13:53:08 It doesn't have that thing yet. 13:53:23 ^def arjiu bf str:0... 13:53:24 Defined. 13:53:25 ^show arjiu 13:53:26 ... 13:53:34 It just picks those bf characters in there. 13:53:46 But it's next on the to-implement list. 13:54:16 ^bf +++[->++.<] 13:54:16 ... 13:54:41 And <32 characters are still filtered to dots. 13:54:49 ^bf +++++++++++++++++++++++++++++++++++++++++++++++[->++.<] 13:54:49 ............... "$&(*,.02468:<>@BDFHJLNPRTVXZ\^ 13:55:20 -!- Slereah has joined. 13:55:47 ^bf +[+[.]] 13:55:47 ............................................................................................................................................................................................................... ... 13:56:06 ^bf +[++++++++++++++++++++++++++++++++++++++++++++++++[.]] 13:56:06 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 ... 13:56:47 ^bf +[++++++++++++++++++++++++++++++++++++++++++++++++[.+]] 13:56:47 123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 13:58:26 ^bf ++++++++++++++++++++++++++++++++++++++++++++++++[.] 13:58:26 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 13:58:32 ^bf ++++++++++++++++++++++++++++++++++++++++++++++++[+.] 13:58:32 123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 13:59:41 It is on #esoteric-blah too if you feel like printing more of those character sets. 13:59:41 ^bf +[+>++>+++>++++>++++++>+++++++<.<.<.<.<.] 13:59:42 .........................$....*....0 ...6$...<(...B,!..H0$..N4'..T8*..Z<-..`@0 .fD3".lH6$.rL9&.xP<(.~T?*.XB,.\E..`H0.dK2.hN4.lQ6.pT8.tW:.xZ<.|]> `@!ƄcB"̈fD#ҌiF$ؐlH%ޔoJ&rL'uN(xP){R* 14:00:01 ^str 9 get <-- huh? 14:00:10 what language is str? 14:00:25 ^bf [[ 14:00:26 Mismatched []. 14:00:32 ^bf < 14:00:35 ^bf . 14:00:36 . 14:00:38 ^bf <. 14:00:39 . 14:00:41 hm 14:00:48 It's not a language, it's just a command. There are 10 strings that can be manipulated with ^str X get/set/add. 14:00:53 fizzie, does it wrap the tape? 14:01:04 Yes, it's a 1000-cell tape that wraps. 14:01:06 also why just 10 tapes? 14:01:08 err 14:01:12 10 strings 14:01:50 10 should be enough for everyone. :p 14:02:16 I don't want to use the whole of negative fungespace for strings of potentially unlimited length. Now it takes only rows from -10 to -1. 14:02:38 It's really just for inputting longer-than-500-chars programs. 14:02:53 Well, will be, as soon as I get ^def ... str:X working. 14:02:56 Deewiant, there? 14:03:14 Deewiant, did you see what Mike said about that SUBR should *not* be relative the storage offset 14:03:21 ^str 0 get 14:03:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 14:04:10 fizzie, where is the source for the bot now again? 14:05:51 ^bf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 14:05:52 d 14:06:14 ^show 14:06:14 arjiu 14:06:17 err? 14:06:20 what does that mean 14:06:20 AnMaster; http://zem.fi/~fis/fungot.b98.txt although it's not runnable as-is, it needs a loader. 14:06:28 fizzie, link to loader then? 14:06:38 I don't know what 'arjiu' means, oklopol defined it. 14:06:52 ^ 14:06:58 ^^bf . 14:07:01 ^bf . 14:07:02 . 14:07:06 hm didn't break it 14:07:51 fizzie, befunge is like basic with goto only, only the original author can really maintain any non-trivial programs written in those languages 14:07:55 http://zem.fi/~fis/fungot-load-freenode.b98.txt is what I use to load the freenode instance. 14:08:08 that is beyond hello world 14:08:12 Well, there are comments in fungot. 14:08:34 Maybe they won't help much, though. :p 14:09:35 Still, the basic structure is pretty simple. There are all those ^commands chained on the downward-going route at column 4, and after those columns 5 and 6 are used to call the brainfuck bytecode compiler and interpreter, and columns 79/80 are used for returning from there. 14:09:55 fizzie, so it depends on i 14:10:09 you should check if that is available using y in the loader :) 14:10:20 -!- Slereah_ has quit (Read error: 110 (Connection timed out)). 14:10:31 -!- Slereah has quit (Read error: 113 (No route to host)). 14:10:49 fizzie, because for example cfunge got a "safe mode" that disables io= and some fingerprints 14:10:54 If it's not available, it probably fails with the (misleading) "missing source" error message since i presumably reflects then. I don't think that's too bad. 14:11:06 indeed it will reflect 14:11:18 but portable funge is important! ;) 14:12:11 just kidding 14:13:30 -!- Slereah_ has joined. 14:32:13 ^reload 14:32:14 Reloaded. 14:32:22 ^str 0 set ,[.,] 14:32:22 Set: ,[.,] 14:32:29 ^def echo bf str:0 14:32:29 Defined. 14:32:32 ^show echo 14:32:32 ,[.,] 14:32:36 ^echo Yay. 14:32:36 Yay. 14:32:54 I guess I need to add something to the help about it. 14:36:29 ^reload 14:36:30 Reloaded. 14:36:30 ^help 14:36:31 ^ ; ^def ; ^show [command]; lang=bf, code=text/str:N; ^str 0-9 get/set/add [text] 14:37:37 ^str 0 set >,[>,]<[<]>[.>] 14:37:38 Set: >,[>,]<[<]>[.>] 14:38:11 ^str 0 add <[<]++++++++++++++++++++++++++++++++>[.>] 14:38:12 Added. 14:38:15 ^str 0 get 14:38:16 >,[>,]<[<]>[.>]<[<]++++++++++++++++++++++++++++++++>[.>] 14:38:21 ^def echo bf str:0 14:38:22 Defined. 14:38:25 ^show echo 14:38:26 >1,[>1,]>999[>999]>1[.>1]>999[>999]+32>1[.>1] 14:38:32 ^echo Did I mess it up this time? 14:38:33 Did I mess it up this time?Did I mess it up this time? 14:39:41 At least I forgot the . after +32 so that there would be the space. 14:44:50 -!- kar8nga has joined. 14:54:12 ^def echo bf str:0 14:54:13 huh? 14:54:24 str:0 isn't brainfuck 14:54:48 Yes, a str:0 code URL means it uses the string 0. 14:54:51 ^str 0 get 14:54:51 >,[>,]<[<]>[.>]<[<]++++++++++++++++++++++++++++++++>[.>] 14:55:18 Much like a http:// will in the far future mean it fetches a document via HTTP. 14:55:38 ^help 14:55:38 ^ ; ^def ; ^show [command]; lang=bf, code=text/str:N; ^str 0-9 get/set/add [text] 14:56:02 See; the part can be either plaintext, or a str:N URL. 14:58:32 ^bf http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.2.tar.bz2 14:58:33 .. 14:58:34 XD 14:58:47 fizzie, you want to be careful with that 14:58:56 or someone could make you download an entire ISO 14:59:12 say live dvd for Knoppix 14:59:33 I don't think I'll add URL-handling to plain ^bf, only to ^def. It's (currently) a bit easier in there. Although I guess it could be in the program-preparation call path, too, so that it would work in both. 14:59:39 Well, I can move it there later. 14:59:50 Yes, some sort of length limitation could be a good idea there too. 15:00:18 I don't want a funge-space 4 billion cells wide, anyway. 15:00:34 fizzie, and you don't want to try to check lostkingdom for matching [] :P 15:00:56 fizzie, err depends on implementation 15:01:22 ^bf [ 15:01:23 Mismatched []. 15:01:32 fizzie, cfunge uses n-bit cells and n-bit vectors, where n is defined at compile time to either 32 or 64 15:02:59 I don't have enough memory for cells, no matter what the implementation. 15:03:26 well it would be something like 4 GB 15:03:36 oh and I only have 1.5 GB RAM myself 15:03:42 4.7 billion bytes for a plain single-layer disc, but they come in larger sizes too. 15:03:48 anyway at least cfunge would have some overhead there 15:03:54 as it uses a hash table 15:04:07 lets see what overhead would be 15:04:55 ^def x http://ftp.uni-kl.de/pub/linux/knoppix/KNOPPIX_V5.1.0CD-2006-12-30-DE.iso 15:04:56 Usage: ^def 15:04:58 assume 32-bit cells for now, then... 4 bytes for cell value, 8 bytes for the x/y of said cell, in other words 12 bytes / cell, now I don't know the details of the hash library but that adds some more overehad 15:04:59 head* 15:05:01 ^def x bf http://ftp.uni-kl.de/pub/linux/knoppix/KNOPPIX_V5.1.0CD-2006-12-30-DE.iso 15:05:02 Defined. 15:05:06 ^def x bf s:http://ftp.uni-kl.de/pub/linux/knoppix/KNOPPIX_V5.1.0CD-2006-12-30-DE.iso 15:05:07 Defined. 15:05:17 tusho it doesn't work yet 15:05:22 :( 15:05:59 -!- Slereah has joined. 15:06:07 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 15:06:12 Don't get too excited by the coming reload, it won't be HTTP urls yet. 15:06:14 ^reload 15:06:14 Reloaded. 15:06:27 It just fixed some error handling in there. 15:06:38 ^def x bf str:? 15:06:39 Bad str: URL. 15:08:00 optbot: Do you want to write me a HTTP client in Funge-98? 15:08:01 fungot: Woo. 15:08:29 optbot: ...uh, was that a yes or a no? 15:08:29 fungot: the regexp + # thing 15:13:00 that would be REXP? 15:13:05 or whatever that fingerprint is called 15:13:13 optbot, say no 15:13:13 AnMaster: whats everyone think about Visual Studio? 15:13:34 optbot, oh is this Jeopardy? 15:13:34 AnMaster: that's exactly what i can't figure out, is there an implementation :P 15:13:40 lol 15:16:35 optbot, Implementation of what? 15:16:35 AnMaster: mmm. Python looks cool. Maybe I'll use that for my next esolang 15:18:25 -!- Slereah has quit (Read error: 113 (No route to host)). 15:19:25 optbot; A Python implementation? A Jeopardy implementation? 15:19:25 fizzie: maybe deliberate 15:19:41 optbot; Have you seen many accidental implementations, then? 15:19:42 fizzie: ==2559== malloc/free: 1 allocs, 1 frees, 65,536 bytes allocated. 15:20:08 optbot; Sounds like valgrind. 15:20:08 fizzie: s/ke/key 15:20:32 optbot; Huh? "Sounds likey valgrind"? 15:20:32 fizzie: but yes, open to them 15:20:49 NURR so confused NURR. 15:22:30 -!- kar8nga has left (?). 15:32:41 -!- olsner has joined. 15:33:46 Uh... I guess I will need SCKE for the http:// URLs, since SOCK doesn't have hostname lookup services. 15:35:58 quite 15:48:35 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 15:49:19 -!- puzzlet has joined. 16:07:58 -!- MikeRiley has joined. 16:08:45 you about Deewiant??? 16:10:08 -!- Hiato has joined. 16:12:37 MikeRiley: "you about Deewiant" means absolutely nothing 16:12:50 but do state your businesses 16:13:12 need to talk with him about a few things... 16:14:12 MikeRiley: the nice thing about IRC is that even if I'm not about, you can say what you like and I can see it later :-) 16:14:27 true,,,,but wanted dialog..... 16:14:29 especially here, where everything is publically logged 16:14:37 starting with SUBR.... 16:14:58 yeah, so I gather you and AnMaster agree that it should be absolute 16:15:09 since the vectors used by the jumps are not accesses to funge-space, they should not have the storage offset applied to them... 16:15:25 for SUBR they should be absolute,,,since no funge-space access... 16:15:35 INDV on the other hand,, should be relative all the way through... 16:15:48 but they are vectors pointing to funge-space 16:16:00 no,,,they are vectors that change the position/delta of the ip.... 16:16:14 they are moving the ip...not access funge-space' 16:16:16 exactly, position 16:16:26 which means that the vector points to a location in funge-space 16:16:46 plus...if you have subroutines you are trying to use....they are not going to move if you use { and now the vectors will not work for them anymore... 16:16:57 but not ACCESSING funge-space... 16:17:11 the thing about { is that it makes for maintainable code 16:17:26 consider 12J 16:17:32 but SUBR addresses become meaningless with { if they are relative... 16:18:04 J might make sense,,,,but the call and return do not... 16:18:14 I think the relative solution is more robust: if you need to call an external subroutine from within a {, write a helper subroutine which uses u to un-apply the storage offset 16:18:33 with absolute, there's just no way to handle all cases easily 16:18:53 in such a way that moving the code around in the file doesn't affect it's functionality 16:18:57 s/it's/its/ 16:19:11 in that case, might be better to modify the fingerprint and add a new function to select relative or absolute addressing... 16:19:25 hmm 16:19:39 my use of SUBR requires absolute,,,at least for C and R,,,,do not use J much... 16:20:03 yeah, something that flips a per-IP flag would work 16:20:05 -!- Hiato has quit (Read error: 104 (Connection reset by peer)). 16:20:09 although that makes it feral 16:20:13 not that it matters 16:20:27 not really....matters i mean.... 16:20:32 still easy to implement,,, 16:20:47 I think the whole feral/tame distinction is a bit pointless anyway :-P 16:20:53 i agree.... 16:21:08 but yeah, I'd be happy with a flag 16:21:30 ok,,,then will modify the fingerprint to allow for both,,,, 16:21:45 alright 16:21:49 next..... 16:22:02 i have these working again: 16:22:03 GOOD: 5kz takes 3 ticks 16:22:04 GOOD: "a b" takes 5 ticks 16:22:13 what was the problem in your case 16:22:15 same as CCBI? 16:22:16 and in doing so have discovered that one of the mycology tests is fault... 16:22:27 in my case the ;block;s were taking a tick... 16:22:40 which means this one: 16:22:41 GOOD: jumping over code with ; takes 0 ticks 16:22:46 :-/ 16:22:54 which has always been good....should have been bad before i fixed the ;blocks;... 16:23:33 was hard to find the problem,,,,if that test would have shown bad,,,would have been able to find it much quicker... 16:23:39 hmm, the code there looks a bit strange 16:23:46 lessee 16:24:23 once i started single stepping through the test with debugger,,,that is when i discovered the problem with the ; blocks... 16:24:32 once i fixed that,,,the other 2 tests showed good again... 16:25:57 yeah, there seems indeed to be a bug there, wonder why 16:26:51 i was going to step through that test...but ended with an interuption and could not get back to it... 16:26:51 oh well, easy to fix 16:27:15 must have messed with something else that caused a de-synch 16:27:23 anyway, just replaced some space with a v 16:27:42 ok,,,, 16:27:46 two new SUBR commands: 16:27:53 A ( -- ) Set absolute addressing mode 16:27:58 O ( -- ) Set offset (relative) mode 16:28:01 specifically the one at (131,154) if you're interested 16:28:05 default mode when SUBR loads is absolute... 16:28:18 ok,,,,thanks.. 16:30:33 MikeRiley: remember to document that the mode is per-IP :-) 16:30:41 oh, btw, question 16:31:18 MikeRiley: how does FRTH interact with invert mode? 16:31:33 and maybe queue mode as well, I forget exactly what they do 16:32:12 but anyway, should they always push on top of the stack (since that's the wording in the FORTH ANSI standard) or should they pop and push according to the modes 16:32:13 will do that... 16:32:36 FRTH should work ok in invert mode....i think...in my implementation it uses the standard Pop and Push routines.... 16:32:55 should push and pop according to the modes... 16:33:15 okay thanks, and I'd like you to document that as well :-) 16:34:20 doing so now.... 16:34:58 any other documentation changes you would like?? 16:35:12 probably yes, but can't think of any off the top of my head :-) 16:35:22 eheheheheheheheh 16:36:05 [16:20:48] I think the whole feral/tame distinction is a bit pointless anyway :-P 16:36:10 lets anmaster only implement the easy stuff. 16:36:32 tusho: hm, I'm sure he's implemented something feral 16:36:37 A and O are now added to my SUBR,,,now how about fixing Mycology???? 16:36:51 MikeRiley: just add an O somewhere early :-P 16:36:59 ok,,, 16:37:52 well have you decided on SUBR 16:37:59 should it be relative or absolute 16:38:00 yes we have... 16:38:02 both.... 16:38:07 two new commands in SUBR.... 16:38:12 err 16:38:19 A sets absolute mode,,,which is the default mode when it is loaded... 16:38:23 O sets relative mode... 16:38:24 to change a fingerprint after it has been published is bad 16:39:01 and thus I will not implement this, because once a fingerprint is published it is set in stone 16:39:19 i know,,,,but by having the default absolute mode, then software using SUBR should not break... 16:39:23 AnMaster: where does it say that 16:39:31 Deewiant, in common sense 16:39:32 since SUBR never intended the storage offset to be used with it... 16:39:46 in that case anmaster,,,which mode are you using??? 16:39:56 original mode was absolute,,,not relative... 16:40:04 MikeRiley, absolute or relative is fine, that is just defining a undef 16:40:13 but adding new commands, well I'm against that 16:40:21 hmmmmmmmmm 16:40:26 AnMaster: common sense says that since there is approximately 1 program that uses it, it doesn't matter 16:40:56 Deewiant, well why was SCKE made, why not only change SOCK? 16:40:59 i use SUBR a lot in my stuff...and it assumes absolute... 16:41:00 if that is what you suggest 16:41:13 because he was not the originator of SOCK.... 16:41:26 AnMaster: he did change SOCK as well :-P 16:41:30 you need versioned fingerprints then 16:41:32 had he come to me instead of making SCKE,,,,i probably would have added his changes to SOCK... 16:41:40 say: V = Get fingerprint version 16:41:48 so the program can adapt after that 16:41:49 :P 16:42:10 fingerprint versioning is certainly an interesting idea.... 16:42:17 which you pretty much have covered in 108.... 16:42:20 MikeRiley, well with URIs in 108 that is easy 16:42:27 agreed... 16:42:33 AnMaster: we do have versioned fingerprints, starting at version 2008-08-20 SUBR has two new instructions :-P 16:42:47 and if you wanted you could have a base uri that always load the last version *implemented in the interpreter* 16:42:48 eheheheheeheheh 16:43:00 may not be the last defined version though 16:43:15 Deewiant, then I shall implement the old one 16:43:22 and of course mycology needs to support that then 16:43:36 AnMaster: sorry, Mycology tests the newest only 16:43:50 Deewiant, then it need to gracefully say that, not fail 16:44:02 I can add it to the readme :-P 16:44:18 AnMaster: but you do realize that was a joke anyway :-P 16:44:26 they aren't versioned if you can't tell the difference between two versions 16:44:34 well I could make a SCK6 or something, then I could change it and well mycology wouldn't be right until you updated it would it? ;P 16:44:41 Deewiant, and indeed 16:45:30 just my opinion here,,,i too agree that fingerprints should not be changed too much without good reason.,...are to clarify something that was not well understood.... 16:45:54 s/are/or/ 16:46:18 yes, I agree as well, but I think it's just practical to improve on them while you only have 1 or 2 users... 16:46:30 i will agree to that.... 16:46:40 doubt we ever will have more than 1 or 2 users ever tho!!!! eheheheheheehheeheheheheheh 16:46:50 probably ;-) 16:47:59 when I wrote Rc/Funge-98,,,never actually expected anybody to do anything with it besides me!!! !eheheheeheheh 16:48:54 -!- Sgeo has joined. 16:49:10 hm 16:49:24 was really surprised when others based there mini-funge off of my concept....and even more surprised when others implemented some of my fingerprints.... 16:49:34 well maybe I'll add this then, however in what specific format is the return vector pushed in relative addressing? 16:49:42 shouldn't return vector still be absolute 16:49:46 in case the offset changes 16:49:59 return vector i think should be absolute.... 16:50:05 hmm 16:50:21 since it should return the IP to where the C was done from... 16:50:27 okay, so the flag only toggles what J and C pop? 16:50:32 yes.... 16:50:36 yeah 16:50:38 yeah, that'd work 16:50:40 makes sense 16:50:49 will add that to the docs.... 16:51:28 also it is rather painful to add new instructions to a fingerprint in cfunge compared with the initial creation of one 16:51:33 so that is another reason I dislike this 16:51:46 so change your system :-P 16:52:15 easy to modify fingerprints in my code... 16:54:53 took me all of 5 minutes to add those two new instrutions to SUBR... 16:54:55 I have a feeling it was I who "specified" SCKE, and it was pretty much for a single program I was writing at the time, and by no means meant to be a "real specification". 16:55:18 i like the enhancemens that SCKE added.... 16:55:40 well where are the docs 16:55:51 i have seen the docs somewhere for that.... 16:56:02 for new SUBR I mean........ 16:56:42 also the flag is global right? 16:56:50 if it is per-ip I'm just going to drop SUBR 16:56:59 MikeRiley, Deewiant ^ 16:57:04 then drop it 16:57:08 oh....for SUBR,,,right here on my hard drive!!! eheheheheheheeheh 16:57:12 hold on...will post them... 16:57:16 thanks I will drop it then 16:57:17 global makes it somewhat pointless 16:57:29 Deewiant, per-ip makes it feral 16:57:33 it is per-ip..... 16:57:40 AnMaster: what the hell does feral vs. tame matter 16:58:04 Deewiant, that I have to add another field to the ip struct in core for just a single fingerprint 16:58:20 AnMaster: and, what the hell does that matter 16:58:26 and code to copy it around 16:58:30 documenation is now posted 16:58:34 fingerprints should be self contained if you see what I mean 16:58:50 err? code to copy it around? 16:58:59 Deewiant, for t and such 16:59:05 and to set initial value 16:59:07 then you should not have implemented MODE right???? since that is ferel.... 16:59:08 surely you don't copy field by field... 16:59:09 and so on and so on 16:59:11 MikeRiley: he didn't 16:59:15 MikeRiley, I don't have MODE 16:59:15 oh...ok,,,, 16:59:46 AnMaster: you should be using memcpy anyway so that's that, and as for initial value is adding "mode = 0" so hard? 16:59:52 SCKE is documented in the GLfunge distribution, doc/ext_SOCK.txt, but GLfunge pretty much died when I got bored and started to do other stuff. The sources are also pretty horrible; it was written eight years ago. 16:59:54 seriously, it's a two line change 17:00:10 I understand that tameness is nice 17:00:14 Deewiant, memcpy doesn't make much sense as you shouldn't copy all values 17:00:18 but I honestly think it's a pointless concept 17:00:19 for Rc/Funge-98,,,,the changes were really simple.... 17:00:42 AnMaster: memcpying 20 values is probably faster than setting 5 manually 17:00:42 yeah,,,i think that is where i saw the docs on SCKE.... 17:00:58 i just copy one ip structure to another and change what is needed on the copied ip.... 17:01:10 Deewiant, and? I'm not speed crazy 17:01:22 AnMaster: and, it makes more sense to do a copy anyway 17:01:32 since it /is/ a copy 17:01:50 "t causes the current IP to be duplicated" is what the spec says IIRC 17:02:15 Deewiant, well then CCBI breaks by not also copying loaded fingerprints 17:02:31 AnMaster: that's a bug that was fixed long agy 17:02:33 er 17:02:34 ago 17:02:56 wasn't it an UNDEF? 17:03:18 copying of fingerprints i think is undef.....Rc/Funge-98 copies them tho... 17:03:22 it's not explicitly said so I guess it belongs in mycology_opinionated :-P 17:03:26 cfunge copies them 17:03:46 and there falls your "just memcpy" 17:03:47 i figured,,,makes a copy of the ip covered everything about an ip... 17:03:55 because they are pointers to stack structs 17:04:06 with pointers to the array of function pointers in them 17:04:08 AnMaster: so you do a memcpy followed by a deep copy. 17:04:18 of the fields which required it 17:05:29 anyway I will not update fingerprints to add or change commands in the future unless it was a misinterpretation of the original version I read of the docs for said fingerprint 17:05:37 -!- kar8nga has joined. 17:06:02 or the fingerprint is very very new so there are docs bugs 17:06:06 but SUBR is hardly new 17:06:09 trouble is,,,when it comes to my fingerprints,,,and the poor documentation,,,misinterpretation is probable!!!! eheheheheheehheeh 17:06:36 and I will seriously consider simply dropping those fingerprints instead 17:06:48 which is certainly an option... 17:06:56 this time I won't drop SUBR, but really, changes should not be made to existing fingerprints 17:07:12 i usually try to avoid changing them,,,,,but this one made sense... 17:07:19 just like adding D to FILE made sense.... 17:07:28 yeah, D was an obvious omission 17:07:34 yes it was... 17:07:39 I was really surprised that it wasn't there when I read the docs :-P 17:07:47 sure right, a lot of changes make sense, I agree with that. the issue is, you will end up with different versions of the fingerprints 17:07:51 yeah,,,,,oversight on my part... 17:07:54 and programs depending on old behaviour 17:08:01 AnMaster: when I finish my 0 fingerprint I'll make sure it has 26 instructions which are well documented :-) 17:08:06 say something that depended on D from something else when loading FILE after 17:08:11 now such a program would be broken 17:08:13 programs depending on old behaviour would not be affected by the changes to SUBR.... 17:08:20 ok,,,see your point.... 17:08:52 AnMaster: in practice since Mycology is approximately the only one that uses these, it doesn't really matter for now :-) 17:08:56 but how many such programs really exist???? 17:09:03 That is why you shouldn't update fingerprints, any change is likely to break existing programs, and that is why changing very very new ones, like FING to clarify some points is ok, because the only thing likely to have been written so far is a test program for it 17:09:17 Deewiant, how do you know that? 17:09:26 well...what about misintrpretations of old fingerprints???? 17:09:34 I wrote a test program for FILE too 17:09:43 to check some stuff with multiple files open at once 17:09:44 AnMaster: do you really think somebody is writing closed-source Befunge somewhere and is all pissed that we're messing with fingerprints? :-P 17:10:09 Deewiant, not likely indeed, but that is not the question here 17:10:19 the issue is breaking open source app as well 17:10:23 AnMaster: I understand the principle 17:10:27 and fixing befunge programs is *painful* 17:10:28 but the fact is, there is no such app 17:10:33 if there is no space 17:10:35 painful to say the least!!!! 17:10:48 I'm getting quite used to it, it's not so bad :-P 17:10:52 only TRDS was/is a pain 17:10:57 i have done plenty of it as well.... 17:11:00 will be? 17:11:08 time travel remember :P 17:11:10 if so, maybe I'll drop it as well ;-P 17:11:31 duh... it was a joke about time travel, though I think it may be a pain anyway 17:11:41 was not a joke really.... 17:12:10 Whether a TRDS bug travels from the past to the future or just normally appears in the future it's still a pain 17:12:12 i actually saw somewhere sombody eluding to time-travelling IPs and i thought it was an interesting concept.... 17:12:15 so i tried it.... 17:12:39 yes, I think I saw such a mention when browsing old esolang mailing list archives 17:12:44 but admitately,,,TRDS does produce an awful lot of undef behaviour.... 17:13:19 my original TRDS code worked with my tests....but not mycology's.... 17:13:26 what about a backtracking extension, Prolog for befunge if you see what I mean 17:13:35 not that I would implement it I admit 17:13:38 hmm 17:14:01 MikeRiley, are those test public? 17:14:06 and does CCBI work on them? 17:14:21 the TRDS test ain't 17:14:27 no,,,they were not....did not expect anybody else to be insane enough to try and implement TRDS!!!! eheheheheheeheh 17:14:32 * AnMaster prepares a nice week for debugging for Deewiant and MikeRiley 17:14:43 due to you changing SUBR :P 17:14:51 AnMaster: since he hasn't fixed his to work with Mycology why should I fix mine to work with his tests ;-) 17:15:20 well maybe having a common interpretation of TRDS would be nice? 17:15:41 if only anybody knew what it should be 17:16:12 acutally i have been working on changing TRDS to pass mycology tests.... 17:16:36 but i also have a document better describing what TRDS should be capable of doing.... 17:16:49 I have a page-long comment in my TRDS impl which documents a workaround for something of which I'm not at all sure whether it always works or not 17:17:37 MikeRiley, feel free to change it! I don't implement it, and I will love Deewiant having to change it 17:17:40 :P 17:17:52 eheheheheheeh 17:18:07 at least I can rip off RC/Funge-98's code now 17:18:13 that was impossible before since it didn't work at all :-P 17:18:34 well,,,it did work,,,,but worked with my intentions...and yours were different.... 17:18:35 -!- tusho has quit. 17:18:43 but my original work on it was primitive.... 17:18:45 MikeRiley: it failed my very first test 17:19:02 which was, when traveling back in time, are the contents of funge-space what they were at that time 17:19:17 i had a series of test programs i used to write it originally,,,and they all worked,,,you and I just had different assumptions.... 17:19:29 that was a bug actually!!!! 17:19:33 and has been fixed.... 17:19:33 :-D 17:19:41 i had not changed funge-space when i was doing my tests... 17:19:42 "actually" :-D 17:19:54 so never caught that one... 17:19:56 but yes, that was a bit of a letdown :-P 17:20:08 it was the very first thing that I thought of when thinking how the hell I should test TRDS 17:20:09 i was only interested that the IP went backwards and other IPs worked correctly... 17:20:28 very sensible actually...i just did not think of testing that.... 17:20:58 -!- tusho has joined. 17:21:14 Deewiant, is mycology updated for new SUBR yet? 17:21:21 no, not yet. 17:21:31 when will it be then? 17:21:42 when it will be. 17:21:56 MikeRiley, btw do you have a test suite for your regex fingerprint? 17:22:03 http://www.imaginaryrobots.net/projects/funge/ who maintains this page 17:22:05 yes,,,on my site i think... 17:22:09 it has a link to the new rc/funge site... 17:22:17 tusho: jesse van herk 17:22:22 who 17:22:22 I mailed him about it last night 17:22:23 :D 17:22:24 does it have the right one??? 17:22:33 I told him to link to rcfunge98.com 17:22:40 that is the correct one... 17:22:44 and told him to update his JSTR spec 17:22:52 -!- Slereah_ has joined. 17:22:56 and he did, surprisingly quickly too :-P 17:23:03 MikeRiley, google returns the elf-emulation one when you google rc/funge 17:23:16 AnMaster: google isn't always right 17:23:29 that is because it was there before i registered the rcfunge98.com 17:23:30 AnMaster: can you find zlib's home page using google? 17:23:46 Deewiant: wow you're right you can't 17:23:47 anmaster,,,just checked,,,the REXP test is on my site.... 17:23:47 why not? 17:23:53 tusho: I don't know 17:24:13 Deewiant, yes was on second page here 17:24:19 I agree it wasn't at the top 17:24:29 how many results per page? 17:24:35 10 17:24:46 it's not in the first 3 pages for me, and I have 30 results per page 17:25:06 Deewiant, well blame localised google? 17:25:08 googling just "zlib" that is 17:25:13 AnMaster: do you use localized google? 17:25:31 I'll try google.se 17:25:35 Deewiant, nop but google.com still maps to servers in Sweden 17:25:55 geodns I guess 17:25:55 google.se doesn't find it either 17:26:06 Deewiant, well I don't use the .se version... 17:26:09 as I said above 17:26:10 AnMaster: do you use a google account when you search? 17:26:20 Deewiant, well I may be logged in on gmail still 17:26:22 AnMaster: neither do I, I use google.com/ncr 17:26:29 AnMaster: that might matter then 17:26:43 Deewiant, I do use customisegoogle plugin to remove sponsored links as well 17:26:45 and such 17:26:48 as do I 17:28:19 even googling for "Welcome to the zlib home page" I don't get the actual home page 17:28:25 odd 17:28:35 only 9 results, and none of them are www.zlib.net 17:28:50 also I got a few other things on that google account, like the "webmasters tool" thingy and a few other things 17:31:50 -!- puzzlet has quit (Remote closed the connection). 17:31:54 -!- puzzlet has joined. 17:33:59 Deewiant, cfunge is updated for new SUBR 17:34:11 just waiting for updated mycology to test both absolute and relative addressing 17:35:16 also is INDV relative or absolute? 17:35:22 relative 17:35:29 who make INDV btw? 17:35:33 me 17:36:51 manual states (just above the fingerprint specifications) that unless noted, all vectors accessing funge-space utilize the storage offset... 17:37:25 how comes mycology doesn't fail then, my INDV use absolute addressing 17:37:27 Deewiant, ^ 17:37:42 or at least used until I started changing it a few minutes ago 17:37:43 does he test relative addressing in INDV??? 17:37:50 well I assume he does 17:37:58 INDV passes in Rc/Funge 17:37:58 he said he was using { for all tests now iirc 17:38:02 no, I do not 17:38:07 for many, not all 17:38:09 i think..... 17:38:19 testing INDV with { is something I intend to do though 17:38:34 good test to add... 17:39:12 how should W write then? 17:39:27 is the vector it write just "whatever was on stack, with no changes"? 17:39:36 I assume it is 17:40:07 historical note on INDV...when i originally created it, i called in PNTR,,,Chris did not think it was descriptive enough for what the fingerprint did and suggested changing it to INDV.... 17:40:27 well INDV change was easy for me, I had a function called GetSecondVector(), I just need it to return a adjusted absolute vector instead 17:40:33 should use relative now I think 17:40:38 vector on the stack is not modified,,,only when funge-space is accessed is the storage offset applied... 17:41:48 this includes accessing funge-space to get the pointer vector.... 17:44:26 the second vector, should it be adjusted in V? 17:45:11 the pointer vector is adjusted,,,the final retrieved vector is not.... 17:45:36 http://rafb.net/p/rnGt1I29.html 17:45:39 is that correct? 17:45:46 let me look 17:46:37 MikeRiley, look at G for example 17:46:44 it may need another level of redirection 17:46:45 not sure 17:47:00 not sure of your functions....but G should work like this: 17:47:32 get vector off of stack,,,,apply storage offset,,,,retrieve vector from funge-space,,,,apply storage offset,,,,retrieve vector from funge-space to stack,,,,,do not modify this last read vector... 17:47:56 I see, so storage offset for the second vector too 17:48:24 yes.... 17:49:03 MikeRiley, so it should really look like http://rafb.net/p/37Xfxa33.html then? 17:50:14 looking 17:50:46 that looks right.... 17:51:13 I'm still not sure about V though 17:51:19 fungeVector v = GetSecondVector(ip); 17:51:19 StackPushVector(ip->stack, 17:51:19 VectorCreateRef( 17:51:19 FungeSpaceGet(&v), 17:51:19 FungeSpaceGet(VectorCreateRef(v.x+1, v.y)) 17:51:19 ) 17:51:21 ); 17:51:34 what do you not understand about v??? 17:51:58 should the last one have storage offset applied hm... 17:52:16 the final one retrieved from funge-space to the stack is not modified... 17:52:31 the pointer one is.... 17:53:27 in all funcitons of INDV,,,,a vector is popped off the stack and the storage offset is applied,,,,that points to a vector in memory which is retrieved and the storage offset applied,,,,whatever data that points to is read as is.... 17:53:30 or written as is... 17:53:31 well, we will see if it is correct once Deewiant updates mycology 17:53:40 err 17:53:45 MikeRiley, can't be for W really 17:53:51 assuming he interprets INDV the same way that i do... 17:53:57 one of the vectors is written to the funge space 17:54:06 the written vector is NOT modified... 17:54:08 that written vector should not have storage offset applied 17:54:16 just like the final read vector is not modified... 17:54:34 the final data read or written is not modified by the storage offset... 17:54:49 only the 2 pointer vectors are... 17:59:35 i take it you do not have unefunge or trefunge modes??? at least your functions appear to not support those modes.... 18:05:03 newsize += newsize % ALLOCCHUNKSIZE; 18:05:18 that would round the value newsize upwards to whole ALLOCCHUNKSIZE blocks right? 18:05:25 this code of mine is confusing me 18:05:29 heh 18:05:51 MikeRiley, and indeed I only do befunge 18:06:04 you want confusing code....look at mine!!!! eheheheheheheeh 18:06:16 well my StackPreallocSpace() is confusing enough 18:06:24 and it was buggy 18:06:49 my stack prealloc code was pretty straightforward....probably cannot read it now tho!!!! eheheheheheeheheh 18:06:59 MikeRiley, I use it to pre-allocate space when pushing strings on stack, mostly because of huge environment variables 18:07:13 AnMaster: if newsize is 10 and ALLOCCHUNKSIZE is 8, you get 10 + 10%8 so 12. 18:07:14 i had to do that with mycology!!!!! 18:07:20 it actually helped make the HRTI test complete within reasonable time 18:07:23 it didn't before 18:07:25 with it pushing 240,000 cells!!!!! yikes!!!! 18:07:27 Deewiant, hum 18:07:33 Deewiant, should be 16 18:07:48 so you mean: newsize += ALLOCCHUNKSIZE - (newsize % ALLOCCHUNKSIZE); 18:07:49 -!- Hiato has joined. 18:07:50 or? 18:08:14 AnMaster: better, at least. :-P 18:08:25 Deewiant, but not correct? 18:08:53 not sure 18:08:55 seems to work 18:09:03 can't be bothered to think it through :-P 18:09:10 also ALLOCCHUNKSIZE is 4096 btw 18:09:31 newsize = (newsize + ALLOCCHUNKSIZE - 1) % ALLOCCHUNKSIZE; would be more idiomatic, perhaps. 18:09:44 MikeRiley, tip: set almost clean environment before, you want something like: env -i TERM="$TERM" PATH="$PATH" ../rcfunge mycology.b98 18:09:57 fizzie: no, that wouldn't work. 18:10:07 you need PATH for PERL test I think 18:10:22 and TERM for the NCRS and TERM fingerprints 18:10:25 wait that is a separate test 18:10:30 fizzie: That way the newsize would always be in the range [0,ALLOCCHUNKSIZE) which is of course not a good thing. :-) 18:10:38 Yes, I noticed few seconds too late. :p 18:10:43 i have a growing stack now....so not really a problem with the environment... 18:10:56 my old code was even worse 18:10:57 newsize += (minfree % ALLOCCHUNKSIZE + 1) * ALLOCCHUNKSIZE; 18:11:06 no way that rounds anything upwards 18:12:07 MikeRiley, well I need to pre-allocate in y, what I do is cache the size of the environment on the first time I run y 18:12:15 then in the future I pre-allocate that much 18:12:20 helps a lot 18:12:37 i just built code into my Push routine, when it runs out of stack space it allocates more.... 18:12:42 of course this may be wrong if the environment is changed with EVAR but it still helps somewhat 18:12:54 MikeRiley, so does mine, however HRTI test was too slow that way 18:13:07 too slow??? 18:13:09 "too slow"? :-P 18:13:10 so I do some pre-allocation to avoid a lot of realloc() calls 18:13:14 define "too slow" 18:13:25 as in I had to wait minutes for it to finish when I ran cfunge under valgrind 18:13:34 here is my result from HRTI: 18:13:36 it was fine outside valgrind, but I need to be able to debug with valgrind 18:13:37 UNDEF: T after M pushed 23 and a second T, after ff*kyn, pushed 38963 18:13:37 :P 18:14:05 MikeRiley, well I got a very large enviroment 18:14:07 debuggin on the other hand,,,,i can see where that makes sense... 18:14:12 $ env | wc -c 18:14:12 5728 18:14:13 mine is not exactly small either... 18:14:14 so that isn't fair 18:14:21 MikeRiley, your is that large? 18:14:27 3668 here... 18:14:34 a bit smaller.... 18:15:06 env -i TERM="xterm" ./cfunge -S mycology/mycology.b98 18:15:07 UNDEF: T after M pushed 71 and a second T, after ff*kyn, pushed 361 18:15:08 still think there is a better way for HRTI than pushing all that stuff to the stack.... 18:15:13 for fair comparsion 18:15:20 or at least .... clear it out after each y!!!1 ehehehehehehe 18:15:25 MikeRiley, um? 18:15:29 what? 18:15:57 my stack is an array, that I realloc() when I need to grow it 18:16:00 I realloc in chunks 18:16:19 now HRTI test was rather slow as you can imagine 18:16:24 i also realloc in chunks... 18:16:47 so what I did was store how much space the environment variables used first time y was executed 18:17:15 then I make sure to preallocate such a large chunk should the environment variables need to be pushed again 18:17:35 this really helps in HRTI test 18:17:41 i see... 18:17:42 for large environments like mine 18:18:03 MikeRiley, otherwise I would have to temp disable HRTI to test some other fingerprint under valgrind 18:18:21 oh btw I don't implement EVAR :P 18:18:44 I do plan to 18:18:49 just haven't got around to it yet 18:19:18 EVAR has its uses.... 18:19:24 sure I can see that 18:19:26 i implemented that one early on... 18:20:20 in fact,,,that may be pretty close to one of the first ones i impllemented....beyond the basic cat's eye ones... 18:20:46 then after that I went crazy and started defining fingerprints left and right!!! eheheheeheheheheheheheheheheh 18:21:41 ended up wanting the most advance funge/98 interpreter out there,,,,nevermind at the time Rc/Funge-98 was written,,,there were no other ones!!! eheheehheheheheheeh 18:23:37 -!- Hiato has quit (Read error: 104 (Connection reset by peer)). 18:23:59 hm 18:24:28 MikeRiley, care to implement REXP in mini-funge? ;P 18:24:42 I think it is possible, though rather painful 18:30:05 MikeRiley, what is MVRS? 18:30:15 there is a test for it but no docs... 18:30:47 AnMaster: so feral that you don't want to know :-) 18:30:54 hint: it's short for "multiverse" 18:31:00 hm interesting 18:31:09 sounds like something I like to know more about but not implement 18:31:15 Deewiant, so what does it do? 18:31:24 -!- Hiato has joined. 18:31:25 separate funge spaces under same interpreter? 18:31:50 I gather that it's like concurrency but you can run in different files/environments which are independent of each other and can communicate only via the MVRS instructions 18:32:02 interesting 18:32:02 you could even have Befunge in one and Trefunge in another 18:32:08 wow 18:32:13 feral yeah 18:32:23 Deewiant, you said "feral" was a useless term iirc? 18:32:28 I disagree 18:32:28 and that is what caused me to start doing a semi-full rewrite of CCBI :-) 18:32:39 AnMaster: I think making the distinction between feral and tame is pointless 18:32:45 * AnMaster points to TRDS and now this MVRS 18:32:49 SUBR for instance is trivial to implement even though it is feral 18:33:01 Deewiant, well yeah but there is a point to it 18:33:03 I wouldn't put SUBR in the same class as TRDS and MVRS 18:33:11 I understand the intent behind it 18:33:15 you can't do ferral in mini-funge 18:33:19 you were not around when i said what MVRS is all about??? 18:33:20 but I think it's pointless compared to just saying "X is hard to implement" 18:33:26 Deewiant, ^ 18:33:29 MikeRiley: that or he didn't read the logs 18:33:41 could be... 18:33:46 AnMaster: SUBR you probably could do in mini-funge since the ghost IP can store the mode? 18:33:56 (I forget the exact limitations of mini-funge9 18:33:59 s/9/)/ 18:34:06 anmaster: basicly MVRS supports a new capability in Rc/Funge-98 V2 to support multiple universes (or VMs)... 18:34:11 Deewiant, could a third party just create a C/C++/D/whatever file using the existing API of the interpreter and drop it in (+ maybe something to tell it that this new file exist) 18:34:14 then it is probably tame 18:34:22 AnMaster: yes, I understand that 18:34:28 or the interpreter already supports the needed things 18:34:45 MikeRiley, oh, vitalisation in funge?! 18:34:50 this sounds enterprisy! 18:34:56 AnMaster: no, not virtualisation :-P 18:35:04 argh typo 18:35:06 yeah 18:35:18 yep....each vm is distinct,,,one can be running befunge another can be running unefunge or trefunge... 18:35:19 I meant virtualisation 18:35:29 one can be running funge/98 while another runges funge/93 or funge/108.... 18:35:29 but aspell didn't know it, so I just corrected it 18:35:33 and thought that was right 18:35:52 data can be copied between universes using MVRS and IPs can travel to other universes using MVRS.... 18:36:05 MikeRiley, wow 18:36:13 however your docs are missing for it 18:36:19 that is all working now in Rc/Funge V2... 18:36:22 I gather it's a WIP still? 18:36:25 MikeRiley, also how can befunge-93 support it? 18:36:29 that is because the docs for V2 have not been posted yet... 18:36:35 MikeRiley, 93 have no fingerprints 18:36:43 AnMaster: so the 93 can't communicate with the outside world 18:36:46 it cannot....but a funge/98 can access the universe of a funge/93.... 18:36:50 AnMaster: but that doesn't mean something else can't modify the 93 18:36:53 Deewiant, it could using STDIO 18:36:55 correct... 18:36:58 ah ok 18:37:18 the universes are done,,,,i am also replacing the mini-funge as well... 18:37:34 MikeRiley, what about redirecting the STDIO of one VM for use with some pipe reading thingy in the other VMs? 18:37:35 XD 18:37:35 the new dynamic fingerprint model will allow the full power of the Rc/Funge VM to be used for fingerprints... 18:37:44 MikeRiley, and starting a VM in safe mode 18:37:46 like cfunge can do 18:37:50 which means trefunge could be used in dynamic fingerprints, fingerprint overloads, etc.... 18:38:03 ie, block FILE, i, o, =, DIRF, and some other stuff 18:38:05 interesing idea for the pipes....may do something with that... 18:38:13 MikeRiley, and the protected/safe mode? 18:38:21 i like that idea as well... 18:38:47 AnMaster, MikeRiley: new Mycology up, has new SUBR and fixes a concurrency bug 18:38:50 MikeRiley, actually cfunge also reduces the environment variables displayed in y to a "safe subset" in safe mode 18:38:53 if a universe is created through MVRS then there is a flags cell used to create the universe,,,otherwise the universes are created when staring Rc/Funge... 18:39:07 Deewiant, what concurrency bug? 18:39:11 ok deewiant,,,will go and get it... 18:39:23 AnMaster: what MikeRiley was running into: ;; results were off by one 18:39:36 Deewiant, so now cfunge will be wrong again? I hope not 18:39:40 MikeRiley: BTW I have an issue with your flags cell 18:39:43 because I verified all that is correct in cfunge 18:40:00 AnMaster: probably not, it's off by one in that it thinks it took one less than it really did 18:40:01 ok,,,issue is??? 18:40:10 MikeRiley: it's very RC/Funge-98 specific 18:40:10 Deewiant, -1 ticks XD 18:40:16 why??? 18:40:22 AnMaster: of course 0,0,1 instead of 0,1,2 :-) 18:40:24 -!- sebbu has joined. 18:40:31 MikeRiley: for instance that "official Y" bit 18:40:46 MikeRiley: and possibly other stuff as well, I can't remember what exactly was there 18:40:53 but that was most glaring 18:41:11 -!- asiekierka has joined. 18:41:28 well no BAD 18:41:32 but then Rc/Funge-98 has an altered y function,,,as well as the spec.... 18:41:34 so that got to be ok 18:41:35 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | ok*. 18:41:38 new mycology runs good.... 18:41:43 hi 18:41:45 perfect here 18:41:56 MikeRiley: yes, exactly, but putting something like that in a fingerprint is a bad idea... 18:42:02 why??? 18:42:09 MikeRiley: or should I add flags for the various CCBI capabilities?? what about cfunge?? 18:42:27 what is it about? 18:42:31 ok,,,,let me put it this way,,,,is anybody besides me going to implement MVRS??? 18:42:40 MikeRiley: I probably will 18:42:42 MikeRiley, maybe, it sounds like a cool thing 18:42:47 i could label that bit as being Rc/Funge-98 specific.... 18:42:51 AnMaster: a feral one from you? O_o 18:42:54 I don't think cfunge will have it 18:43:04 but I have been thinking of writing another funge interpreter 18:43:07 in another language 18:43:17 erlang? :-) 18:43:28 probably erlang or some object orientated language, like objc or smalltalk 18:43:50 MikeRiley: what you /could/ do is say that bits above that are implementation-defined, but I still don't think that's that great an idea 18:43:57 and that the y functionaly is not a requiement to implement,,,and in my implementation, not specifying it will provide the spec y instead of mine....how about that??? 18:43:59 what bits exactly? 18:44:09 Did anyone try to implement a befunge-93 interpreter in BF? 18:44:17 MikeRiley: also, dimensions: you have 3 bits, what about 4-dimensional or higher? should just pop a cell which gives the dimensionality 18:44:34 agreed 18:44:50 MikeRiley: it just seems so out of place, that kind of flag 18:44:53 Deewiant, also I have been thinking about a "dimensions on demand" system 18:44:55 not sure how 18:45:01 seems reasonable....the spec for it is still in flux....so can make changes like that at this point...afterall...it is not published yet... 18:45:03 MikeRiley: how about, "sub-universes inherit any implementation-specific settings from the parent"?? 18:45:16 MikeRiley: so you get to keep your Y setting as it was given on the command line 18:45:21 that is how mine works now actually... 18:45:26 Deewiant, that is x,y,z,... 18:45:28 it inherits.... 18:45:30 or 18:45:39 a command to change number of dimensions 18:45:45 not sure which would be best 18:45:55 MikeRiley: so why not just keep it at that (and remember to document it!) 18:45:59 either way it wouldn't be compatible with real funge I think 18:46:01 i can do that.... 18:46:03 it would be a fungoid 18:46:26 about "implementation-specific settings" 18:46:36 that would prevent having safe modes for some VMs? 18:46:37 or? 18:46:47 but still need to be able to override what is created in the new universe....since a universe can be created with a different language version or dimensionality... 18:47:05 AnMaster: well, how would you transfer such settings when creating a new universe 18:47:15 MikeRiley: I'd say pop two cells, one for version and one for dimensions 18:47:20 MikeRiley, for dimension: pop a cell n off the stack, then set the number of dimensions to n 18:47:22 ok,,,,, 18:47:26 for version another cell 18:47:29 a good idea for the implementation-specific settings would be nice 18:47:30 i can live with that.... 18:47:35 but I can't think of anything that would work well 18:47:38 Deewiant, well cfunge couldn't do it 18:47:45 you would need to make it a non-global setting 18:47:48 or at least not without making all MVRS programs non-portable 18:48:14 AnMaster: so why did you ask since you can't do it anyway? ;-P 18:48:14 Deewiant, I think for multiverse an object orientated language like C++ would be best 18:48:19 or objc 18:48:25 would be easiest that way anyway 18:48:33 probably so,,,,,Rc/Funge is implementing them in structures.... 18:48:43 but i seriously thought about using c++.... 18:48:51 don't know about that but C is probably a bit of a pain to work with in cases like this, yes :-) 18:48:58 MikeRiley, about these VMs is there any relation between number of ticks executed in each? 18:49:04 or could you run them on different processors? 18:49:08 AnMaster: yes, there is 18:49:11 so no, you can't 18:49:14 argh 18:49:18 then I won't implement it 18:49:19 no relation,,,,they are to be considered time independent... 18:49:22 ever 18:49:26 hmm?? 18:49:32 MikeRiley: last time you said they aren't :-P 18:49:42 well an implementation could make them have a relation if it wants then 18:49:49 and not have it if it doesn't want it 18:49:54 they are not synced together,,,,but one universe runs after another one does... 18:49:58 that sounds fine to me 18:50:02 i.e. if universe B is created at tick 10 in A then 10 ticks later universe A is at tick 20, universe B is at tick 10 18:50:07 MikeRiley: or what 18:50:08 -!- Hiato has quit ("Leaving."). 18:50:09 MikeRiley, so you couldn't execute one on another CPU? 18:50:09 unless you have something like TRDS to change the time on one of them,,,,the ticks will probably all be the same... 18:50:10 or so? 18:50:23 in theory you could run one on another cpu....but did not intend it that way... 18:50:24 MikeRiley, think about all these dual core systems 18:50:27 MikeRiley: is what I said above guaranteed, barring TRDS 18:50:54 a universes tick count starts from its creation.... 18:51:05 MikeRiley: so answer the question :-P 18:51:12 if created sometime after the initial start,,,then whatever universe created it will have a different tick count... 18:51:24 question is: could you use multiple OS threads to implement it? 18:51:27 yes... still doesn't answer my question 18:51:28 or do you need to keep them in sync 18:51:40 no reason i can think of to keep them in sync.... 18:51:52 MikeRiley, all communication happen using messages or? 18:52:07 communications happen by copying funge-space from one to another... 18:52:08 MikeRiley: well, inter-universe communication will be a bit of a pain if they aren't in sync 18:52:09 if it is shared memory this is going to be painful 18:52:14 ok that is bad 18:52:18 I would prefer message passing 18:52:21 make stuff a lot easier 18:52:25 or you could use the IPC fingerrprints.... 18:52:28 or the file system.... 18:52:29 AnMaster: heh, you learned about this only a week ago or? :-P 18:52:32 anything you like really.... 18:52:43 Deewiant, no I knew about message passing concurrency before 18:52:47 I didn't know erlang though 18:52:52 for message passing,,,use the MSGQ fingerprint... 18:53:02 MikeRiley: thing is, if they aren't in sync, it's quite possible that universe B runs its program to the end before A even gets the next instruction :-P 18:53:15 that is theoretically possible.... 18:53:18 and allowed.... 18:53:25 that's a bit crap then 18:53:29 MikeRiley, point is, if you copy or read remote funge space the remote funge space may have changed by the time you get the response back 18:53:33 if you see what I mean 18:53:40 if syncing is required....then that has to be build into the programs running in the universes... 18:53:41 I could just implement MVRS in such a way that it runs the child universe immediately always 18:54:30 then do not use copy functions for communication use MSGQ, SMPH and SMEM.... 18:54:30 -!- sebbu2 has quit (No route to host). 18:54:42 ok I think MVRS looks as badly defined as TRDS :P 18:54:43 all of which are non-portable... 18:54:56 it is!!!!! that is why it is not posted yet!!!! 18:54:57 hey 18:55:00 you could do it anyway 18:55:07 use a >< mutex at the start 18:55:08 why not portable??? any posix system should have those??? 18:55:18 MikeRiley: POSIX-only != portable 18:55:26 AnMaster: busy-waiting? no thanks 18:55:28 then make the other VM change funge space remotely, overwriting that mutex 18:55:29 ok,,,,can accept that actually... 18:55:48 would you prefer the universes be cycle-locked??? 18:55:59 I would, yes 18:56:01 Deewiant, well no way I will implement it if it can't be OS level threads 18:56:03 or maybe definable 18:56:07 because that is the only reason it would be useful 18:56:10 OS level threads 18:56:10 -!- Tritonio_ has quit (Remote closed the connection). 18:56:16 for dual core CPUs 18:56:17 and such 18:56:25 MikeRiley: how about a flag cell that can set this? 18:56:33 yeargh 18:56:36 that is reasonable.... 18:56:41 0 - not synced 18:56:58 MikeRiley, where is the draft for this fingerprint 18:57:01 any positive value n - synced, child universe runs at n* speed of parent 18:57:03 I still haven't seen it's instructions 18:57:06 and then message passing,,,want to build it into MVRS and then let the interpreter designer come up with a message system instead of MSGQ??? 18:57:14 any negative value - synced, parent universe runs at n* speed of child 18:57:23 er, (-n) of course 18:57:36 hm... 18:57:47 MikeRiley, yes 18:57:50 MikeRiley: most certainly not build it into MVRS 18:57:55 or maybe not 18:57:55 well 18:58:04 MSGQ wouldn't work for this 18:58:09 why not??? 18:58:10 making it another fingerprint would be fine, though 18:58:12 what if you to implement it in java 18:58:13 or such 18:58:22 and use different threads in java talking to each other 18:58:22 because MVRS isn't about communication, it's about multiple universes 18:58:29 I don't think MSGQ will allow that? 18:58:38 because it is all same process 18:58:54 if java can support MSGQ then i do not see why not,,,,but i doubt java has that ability actually... 18:59:04 you can use MSGQ in the same process.... 18:59:08 MikeRiley, yep, but it could talk between it's threads just fine 18:59:17 but not POSIX style messages I think 18:59:36 so clearly MSGQ is not a good solution to this 18:59:38 ok,,,then another fingerprint for portable messages is needed then??? so back to building a message handler inside the interpreter??? 19:00:20 sounds like we need a MSGS :-) 19:00:22 MikeRiley, well if I implemented this in erlang (non-synced multiverses would be easy there) using message passing I could use erlang's built in, excellent message passing concurrency 19:00:23 :) 19:00:34 which would essentially provide what MSGQ does,,,but without the sysV IPC requirement... 19:00:48 basically needs to allow: 19:00:59 send {command, parameters} 19:01:11 wait for answer (or not) 19:01:23 send, recv, probe 19:01:27 probe? 19:01:31 Deewiant, what would probe do? 19:01:33 non-blocking recv 19:01:37 ah well 19:01:41 or not really 19:01:44 you want a recv with a 0 timeout instead 19:01:48 rather, non-blocking check whether something is there 19:01:49 that would be a better way to define it 19:01:57 you might not want to recv it 19:02:06 Deewiant, that would be impossible in erlang, you can push messages back once you got it 19:02:14 so non-blocking recv would work 19:02:18 poll wouldn't 19:02:22 alright, then it's just send/recv 19:02:31 and maybe something like broadcast 19:02:33 Deewiant, non-blocking recv is fine though 19:02:34 (send to all) 19:02:38 also fine 19:02:45 hmm, what else 19:02:57 Deewiant, what about waiting for answer 19:03:03 AnMaster: that's recv 19:03:12 ie, block until a reply to the thing you just send arrives 19:03:15 Deewiant, there is a difference 19:03:21 recv could pick up some other message 19:03:23 send/recv/non-blocking recv/broadcast 19:03:25 instead of the reply 19:03:35 AnMaster: of course recv should take a parameter "message type" 19:03:47 and leave any other messages in the mailbox 19:03:54 or whatever you would call it 19:03:54 queue 19:03:58 if you wish 19:04:31 Deewiant, not only message type, but also sender? 19:04:36 yep 19:04:47 Deewiant, sounds good to me 19:04:52 what is the format for sender 19:05:03 IP ID 19:05:20 err between subverses? 19:05:23 for MVRS, not quite sufficient 19:05:24 or whatever you call them 19:05:25 hm 19:05:28 started definition on MSGS,,,,will send you guys a copy once i have a preliminary version written... 19:05:30 <0.30.0> 19:05:34 what about a string like that XD 19:05:42 -!- KingOfKarlsruhe has quit (Remote closed the connection). 19:05:43 (just kidding, that is internal erlang PIDs) 19:07:21 AnMaster: i just emailed you the current working copy of the MVRS specs.... 19:07:32 thanks 19:07:36 most welcome... 19:08:09 note: this is before modifying it for some of the stuff we have been discussing here... 19:08:26 (fire@phoenix.lan)3> rpc:call('ice@tux.lan', erlang, spawn, [net_adm, ping, ['fire@phoenix.lan']]). 19:08:26 <5768.51.0> 19:08:34 just as an example of distributed erlang ;P 19:08:56 the second line was a remote PID 19:09:26 G (0gnirts Vp Vd) - Go to another universe 19:09:30 what exactly does that do 19:09:38 move the IP? how? 19:09:47 and J? 19:09:51 AnMaster: one way to do message sender would be to have the number of communicating processes preset 19:10:01 Deewiant, oh why? 19:10:02 they all have to report in to some "init" call 19:10:08 and then they just all get a unique number 19:10:12 Deewiant, how do you mean 19:10:14 err? 19:10:28 Deewiant, assigning unique IDs wouldn't be an issue really 19:10:42 AnMaster: why not 19:10:51 AnMaster: remember, this isn't for MVRS 19:10:54 AnMaster: this is supposed to be generic 19:10:58 Deewiant, you have the resolver server to track them 19:11:13 AnMaster: so how would that work in funge 19:11:18 so each time a new IP/universe/whatever wants to register itself it registers with that db 19:11:25 Deewiant, wouldn't that be implementation level? 19:11:37 or what do you mean? 19:11:43 AnMaster: I'm just trying to see how/whether this can work at all :-) 19:11:48 Deewiant, shouldn't it be per-ip? 19:11:56 AnMaster: the sender ID? certainly yes 19:12:01 but okay 19:12:03 err 19:12:04 what? 19:12:04 so they register to the DB 19:12:15 Deewiant, well that is up to the implementation to handle 19:12:17 AnMaster: I guess we're talking about two different things :-P 19:12:23 Deewiant, I think so too 19:12:31 AnMaster: what did you mean by "that be implementation level" 19:12:31 Deewiant, so what are you talking about? 19:12:35 heh 19:12:55 Deewiant, registering new IPs/multiverses/whatever with the resolver of the implementation 19:13:08 can do it similar to sysV and use keys for the message queues,,,,the 2 ips that want to communicate use their own key... 19:13:18 to be able to resolve it to a real thread 19:13:19 or whatever 19:13:30 so it knows what OS level thread to send the message to 19:13:32 right? 19:13:52 Deewiant, or what do you mean? 19:13:54 AnMaster: so what I'd like to know is when you have two IPs A and B, what sender ID should B push to receive a message from A, and what recipient id should A push 19:14:12 MikeRiley, nah key doesn't work well for what I plan 19:14:22 Deewiant, I guess IP id 19:14:32 AnMaster: and that doesn't work for MVRS :-P 19:14:35 Deewiant, for MVRS it gets more complex 19:14:49 AnMaster: I stated one possibility which would work even with MVRS 19:14:51 Deewiant, so it would use something else, ie, negative values? 19:15:24 AnMaster: what if you want to differentiate between time-travelling and non-travelling IPs in TRDS 19:15:28 Deewiant, ok, so positive values are the local mappings, local IPs 19:15:29 AnMaster: point being, there are too many possibilities 19:15:36 negative values are global mappings 19:15:41 which MVRS would return somehow 19:15:46 yeah, "somehow" 19:15:51 AnMaster: this shouldn't be tied to MVRS 19:16:03 Deewiant, well MVRS could extend the existing fingerprint 19:16:12 ie, hook into it's framework 19:16:13 AnMaster: why not just make it work for all cases by default 19:16:15 if you see what I mean 19:16:34 Deewiant, I'm against limited set of threads to communicate 19:16:35 AnMaster: okay, hmm, that got me an idea actually 19:16:38 it would make it much harder 19:17:02 AnMaster: an instruction that pushes a guaranteed but implementation-dependent unique ID for this IP 19:17:08 AnMaster: it can be shared via funge-space initially 19:17:17 that is possible if each vm has its own unique id as well.... 19:17:29 then the id for an IP is a combination of its local id and the universe id.... 19:17:30 Deewiant, so reserve some value, maybe -1 or whatever as "external communication", then have extra arguments after that tells what sort of extensions (ie MVRS) and data for that 19:17:35 could that work? 19:17:46 -!- Defe has quit (zelazny.freenode.net irc.freenode.net). 19:17:56 Deewiant, and that could work too 19:17:59 -!- Defe has joined. 19:18:06 AnMaster: I think that's again just a workaround for a system that isn't generic in itself :-P 19:18:16 Deewiant, well I prefer your way then 19:18:19 AnMaster: an instruction that pushes a guaranteed but implementation-dependent unique ID for this IP 19:18:19 AnMaster: it can be shared via funge-space initially 19:18:21 got to run for a bit,,,,back in a while.... 19:18:28 should work pretty well 19:18:40 obviously MVRS will need to expose some function to get this ID in another way 19:18:53 -!- MikeRiley has quit ("Leaving"). 19:19:01 AnMaster: but it's invisible from within the funges, all you know is that the instruction gives a unique ID 19:19:06 which is why it's good 19:19:13 Deewiant, hm ok that could work too 19:19:32 I would probably implement MSGS if it is heading where I think it is 19:19:43 AnMaster: this would even be tame since the list is of course global :-) 19:19:58 Deewiant, well it would need to have the message queue locally 19:20:06 but apart from that yeah 19:20:10 true, the fingerprint as a whole isn't tame 19:20:13 not fully tame though 19:20:48 what really excites me is the possibility of "true" concurrency in funge 19:21:11 of course that bit won't happen in cfunge, but may happen in some future funge I write 19:21:18 so hmm, recv/send/irecv/bcast/get_id 19:21:27 irecv? 19:21:39 ah, sorry, MPI function names :-P 19:21:44 immediate recv i.e. non-blocking 19:21:53 ah 19:22:44 parameters for *recv would need to be: , if either is 0 then it means "all" 19:22:47 otherwise filter 19:22:51 or something like that 19:22:58 yes, something like that 19:23:09 I was thinking of some way of defining groups 19:23:16 yep would make sense too 19:23:36 for send you want 19:23:39 but I can't think of a working way 19:23:43 none of the first two can be 0 19:23:53 Deewiant, let a process register itself to a named group if it wants 19:24:03 something like join(stringname) 19:24:11 and leave(string name) 19:24:12 hmm 19:24:16 err add the space in the first 19:24:19 does that work, I wonder 19:24:33 I guess it does 19:24:36 Deewiant, well sure if you add some way to make the id a string 19:24:45 means another reserved ID though 19:24:49 say, -1 or something 19:25:09 preferably positive values, they're easier to push (1 vs 01-) 19:25:12 if -1 is the id in *recv or send then read a 0"gnirts" with group name 19:25:39 but yeah, I suppose 19:25:40 Deewiant, well that is hard, first ip for me is 0 or 1 iirc, and starting at 2 just feels so illogical 19:25:49 starting at 1 would make sense to me 19:25:53 AnMaster: these IDs aren't supposed to be IP IDs 19:25:57 ah true 19:26:00 they're supposed to be unique and implementation defined 19:26:10 Deewiant, but they could be if the implementation doesn't do multiverse 19:26:17 doesn't matter what they are, you can start at INT_MAX if you want :-P 19:26:20 that would be the easy way to do it 19:26:22 AnMaster: so push(id + 2) 19:26:29 Deewiant, ok sure 19:26:32 that should definitely not be a problem :-P 19:26:38 true 19:26:40 easy for users > easy for implementers 19:26:45 -!- funktio has joined. 19:26:48 yeah 19:26:56 Deewiant, brb food 19:26:58 funktio: did you implement concurrency, btw? 19:27:05 Deewiant: yup 19:27:20 funktio: there were some bugs in that in Mycology, you might want to get the latest version 19:27:42 since if you got all GOOD before I think there's a bug in your interpreter :-) 19:28:21 Oh, btw, how does this FING work exactly? Am I supposed to do this remapping like [load FING] [load FOO] [FING commands related to FOO] [load BAR] [fing commands related to BAR] ... [unload FING]? 19:29:09 very possible, I looked at Mycology's output more than the spec :) 19:29:10 you mean http://www.rcfunge98.com/rcfunge_manual.html#FING ? yes, that sounds like a reasonable sequence 19:30:36 you don't have to unload FING of course 19:32:42 I just need to remap S and C in STRN (currently to Z and Q) so that I can still access them when I load SOCK on it; and drop A and L in SOCK because I don't use them but I use the corresponding STRN instructions. I'm hoping something like this will work (with suitable error handling added): "GNIF"4( "NRTS"4($$ 'S'ZX 'C'QX "KCOS"4($$ 'AY 'LY ) 19:33:19 that won't work 19:33:37 the ) will unload your new Z and Q 19:33:40 err 19:33:41 just your Z 19:33:46 since FING contains XYZ 19:33:50 Deewiant: no BADs 19:34:05 Ah, right. Do I want to push it with FING's Z, then? 19:34:10 funktio: there must be a really odd bug then ;-) 19:34:44 fizzie: yeah, I guess you could duplicate it with 'Z:Z before hitting the ) 19:35:08 hmm, just now realized that I've been talking to two different people :-P 19:36:29 who is funktio? 19:36:36 what funge interpreter did he do??? 19:36:50 something in Haskell, don't know if he's published it 19:37:01 fizzie, as for fing, well Mike sucks at writing docs 19:37:06 but I implemented it 19:37:13 so I can probably answer your questions 19:37:17 I think FING is really simple actually :-P 19:37:18 -!- Defe has quit (zelazny.freenode.net irc.freenode.net). 19:37:29 Deewiant, well it is if you know the UNDEFs ;P 19:37:35 you know Mike's docs 19:37:56 I did peek at the RC-Funge 98 implementation to figure out what the Z actually does. 19:38:22 funktio, hm got a link that that interpreter of yours? 19:39:02 -!- Defe has joined. 19:39:04 fizzie, it copies the semantic loaded at one place to the top of another 19:39:21 what else would it do? :-) 19:39:42 if the source semantic stack is empty then a reflect semantic is pushed on the target stack 19:39:45 that is a twist 19:40:04 it seems documented now though 19:40:15 "Z pull push"? :-P 19:40:22 Deewiant, hm? 19:40:29 AnMaster: that's what it says 19:40:30 I guess it should be "will". 19:40:37 Yes, I guess. :-) 19:40:39 oh yes 19:40:55 Deewiant, tell that to Mike if I leave before he gets back will you? 19:41:08 if I remember 19:41:11 hah ok 19:41:44 of course I don't do SOCK yet 19:41:51 and probably won't before next release 19:42:02 I want to get things kind of stable again after all recent changes 19:42:22 and SOCK is one that could be a bit hard to implement 19:43:35 not really 19:44:33 Deewiant, depends, FILE and PERL were both kind of hard IMO 19:44:40 I suspect the same is true for SOCK 19:44:53 yeah, it's similar to FILE 19:45:51 Deewiant, well FILE is a lot easier in D I think I saw your code, 1) throw/catch 2) high level abstraction for file handling 19:46:03 s/think/think,/ 19:47:08 Hee, "supported" sounds funny when it's reversed. 19:47:10 ^rev supported 19:47:10 detroppus 19:47:16 2) actually I used the C API as specified 19:47:20 Detroppus. Heh. 19:47:25 Deewiant, hm ok 19:47:37 Deewiant, but you can do "append to end of string" much easier 19:47:42 I need to do buffer handling 19:47:49 sure I got a string buffer library now 19:47:53 but I didn't back then 19:50:31 hm the fastest way to shutdown a large cluster of erlang nodes is 19:50:33 rpc:eval_everywhere(init, stop, []). 19:50:34 I think 19:53:13 -!- tusho has changed nick to tusho|away. 19:58:31 Oh, RC/Funge-98 needs a Makefile "-DSCKE" addition, otherwise it won't have SCKE. 19:58:47 interesting 19:59:06 fizzie, what does it do with those defines? 19:59:10 I mean how does it work 20:00:19 hm if what I see is correct (my rc/funge copy is a bit dated) then the cfunge way is much more elegant :) 20:00:33 In ext.c there's a huge "... else if (FingePrint==0x1234abcd) Load_ABCD(FingerPrint,cip); ..." chain, the rows of which are #ifdef ABCD ... #endif -paired. 20:00:38 It's not very elegant. 20:00:45 yeah 20:00:55 Especially since the Makefile does not test for those defines, so it anyway compiles in the scke.c code. 20:01:00 fizzie, cfunge's way is more complex 20:01:16 it uses something called .spec files to generate a header with an array containing fingeprint info 20:01:43 BASE.spec looks like this : http://rafb.net/p/mYyMio54.html 20:01:46 I think GLfunge used dlopen()ed libs which had an init function of sorts that could map instructions. Don't remember the details. It wasn't especially clean. 20:02:12 to generate a template file with all the loading code and empty functions for BASE I would run this: tools/gen_fingerprint.sh BASE 20:02:21 to update the header I would run: 20:02:24 tools/gen_fprint_list.sh 20:02:41 the header got an array with entries like this in it: 20:02:42 // BASE - I/O for numbers in other bases 20:02:43 { .fprint = 0x42415345, .uri = NULL, .loader = &FingerBASEload, .opcodes = "BHINO", 20:02:43 .url = "http://www.elf-emulation.com/funge/rcfunge_manual.html", .safe = true }, 20:03:17 -!- Tritonio_ has joined. 20:03:24 fizzie, what do you think of my way? :) 20:03:34 I'd say it is pretty elegant 20:03:37 though complex 20:05:20 -!- tusho|away has changed nick to tusho. 20:07:17 fizzie, what is even better, I can do directed fuzz testing of a fingerprint with another script that extracts info about what instructions a fingerprint implements then generates some random data containing that (+ some core instructions). It automatically runs each generated program under first plain cfunge, then under valgrind, if any of them fail in some way (that is, anything but exit code zero o 20:07:18 r due to SIGALARM, for time limit) it will break and let the user debug what went wrong 20:07:24 helped me find quite a few bugs :) 20:07:34 crash bugs that is 20:07:55 or bad memory stuff 20:08:46 AnMaster: don't you have something better to do 20:08:55 tusho, huh? 20:09:23 tusho, if you don't like me talking to fizzie just use /ignore then... 20:09:33 i was referring to the fuzz testing stuff 20:09:34 :P 20:09:35 * AnMaster shrugs 20:09:42 oh hah 20:09:42 why not, if it works 20:09:48 indeed Deewiant 20:10:42 it isn't perfect (it needs recompiling cfunge with a special -D option, that sets an alarm() and always make exit code from q 0 no matter what, it is only for fuzz testing, it is of course not fully standard conforming) 20:12:10 the way CCBI does fingerprints seem pretty clean too 20:12:28 not sure though 20:12:39 as I don't understand that mixin stuff or whatever it was 20:13:27 just generate the identifier at compile-time 20:13:39 Deewiant, hm? 20:13:46 the mixin 20:13:53 yeah 20:13:58 what does that mean though :P 20:14:27 and how do you find the fingerprints that are available, I still don't get that 20:14:30 -!- fungot has quit ("changed instruction remapping, needs a real restart"). 20:14:32 some sort of reflection? 20:14:35 so I can say "BLAA" and it'll generate 0x424c4141 20:14:43 ah 20:14:45 rather, "cell BLAA = 0x424c4141;" 20:14:49 well for me the bash script does that 20:14:52 -!- fungot has joined. 20:15:01 Deewiant, where do you keep the list of available fingerprints? 20:15:12 in the makefile-equivalent, ccbi.rf 20:15:17 ah 20:15:23 it has a list of what to compile in 20:15:26 You should be the happy now: fungot uses FING and no longer FNGR. 20:15:34 fizzie, nice! 20:15:55 Deewiant, ok sure I see that list 20:16:02 Whoops, and there's also a completely half-implemented http:// url support which will crash it when used. :p 20:16:04 but how do you know how to search them 20:16:10 what do you mean 20:16:18 ^def test bf http://example.com/example.bf 20:16:19 Host not found. 20:16:21 Deewiant, I mean where do you put them into some array that you can look up in when loading the fingerprint 20:16:40 AnMaster: in the static constructors in the fingerprint files, they modify the fingerprints hashmap 20:16:42 Hmm, maybe it actually does not crash. But it does not work correctly either. I forgot I had that part in there. 20:16:52 Deewiant, aha 20:16:59 ok that is kind of neat 20:17:07 yes, it's quite clean :-) 20:17:25 but it uses global state and all so it's not as great as it could be :-/ 20:17:30 Deewiant, still that would have caused issues with PNTR alias no? 20:17:38 or maybe not 20:17:43 AnMaster: no, I just did fingerprints[PNTR] = fingerprints[INDV]; 20:18:05 Deewiant, anyway that static constructor... is it run when you run ccbi? 20:18:12 before the main function 20:18:13 or somehow pre-run at compile time? 20:18:14 ah 20:18:33 which is a bit of startup time overhead :-) 20:18:34 Deewiant, cfunge does the "put in array" at, no before, compile time :) 20:18:36 but such is life 20:18:41 yeah 20:27:16 Deewiant, um your FILE test doesn't properly close some file I think 20:27:35 I get a leak there that I shouldn't 20:27:37 * AnMaster debugs more 20:27:39 AnMaster: possible, I wasn't careful about that when I added D 20:27:55 if it's before that then it's an old bug :-) 20:27:59 hm... 20:28:00 maybe not 20:28:20 Deewiant, I just see a leak list at the end 20:28:42 actually... 20:28:54 AnMaster 20:28:56 -!- MikeRiley has joined. 20:29:00 not sure 20:29:02 ah wait 20:29:05 tusho, yes? 20:29:08 no 20:29:16 MikeRiley: to quote the FING spec: "Z pull push" 20:29:16 tusho, what was it? 20:29:23 MikeRiley: might want to fix that ;-) 20:29:23 ??? 20:29:26 AnMaster: nuthin 20:29:28 looking 20:29:33 tusho, say it in /msg then? 20:29:43 its irrelevant 20:29:45 I misinterpreted 20:30:16 see error.....will fix.... 20:30:31 ==30562== still reachable: 96 bytes in 2 blocks. <-- well 80 of those bytes are from REFC, which I *can't* fix, the remaining 16 bytes are from FILE which I think may be a mycolgy issue 20:30:34 but not sure yet 20:30:44 tusho, hm ok 20:31:04 anything else i should fix?? 20:31:05 AnMaster: you can deallocate REFC when the program is terminated, no? 20:31:06 other than that all memory is freed at exit 20:31:20 Deewiant, sure, but then it is kind of pointless isn't it 20:31:21 ? 20:31:37 I mean the OS will free it anyway 20:31:53 Deewiant, oh and it seems like the same sort of issue for FILE in fact 20:32:01 yeah, it doesn't matter, but if you want the errors to go away then that's that 20:32:12 AnMaster: hmm? FILE shouldn't leave anything alive or? 20:32:37 Deewiant, I already free some other such stuff in an atexit() if it is a debug build (funge space, ip list) 20:32:47 (oh and argc/argv copies) 20:32:53 Deewiant, the handle list 20:32:57 static FungeFileHandle** handles = NULL; 20:33:03 AnMaster: you can remove a handle once it's closed 20:33:09 Deewiant, well I do 20:33:15 but the list is still there 20:33:24 you can remove the list as well? 20:33:26 if I used a static list and limited number of valid files, sure 20:33:30 but I don't do that 20:33:51 Deewiant, again same issue as REFC really 20:34:02 AnMaster: no 20:34:16 AnMaster: in REFC, you may want to keep them alive if the fingerprint is loaded again 20:34:18 Deewiant, well 16 bytes of memory that may be reused anyway? 20:34:22 on 64-bit 20:34:24 AnMaster: in FILE, if closed you can delete it safely 20:34:28 would be only 8 bytes on 32-bit 20:34:49 allocated in chunks of 2 handles at a time 20:35:09 REFC does not specify that the list is cleared when unloaded...i keep the list until interpreter exit... 20:35:18 -!- kar8nga has quit ("Leaving."). 20:35:28 Deewiant, also there is no sane way to do a hook for "fingerprint unloaded" IMO 20:35:37 AnMaster: I have such hooks... 20:35:52 added I command to MVRS,,,,pushes unique ID onto the stack.... 20:35:54 Deewiant, well sure, I'll just unload without loading then and mess you up 20:35:58 Deewiant, or load twice and unload once 20:36:10 AnMaster: it's smarter than that :-) 20:36:26 MikeRiley, no no, it would be in MSGS according to Deewiant 20:36:27 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)). 20:36:37 Deewiant, how? 20:36:38 but MSGS would not know about universes... 20:36:43 so perfer it in MVRS 20:36:51 MikeRiley: it doesn't have to, it can work in MVRS without knowing about them 20:36:59 Deewiant, I could use some fingerprint to remap and still have it loaded even if number of loads/unloads matched 20:37:02 please don't add it to MVRS :-P 20:37:18 why not??? 20:37:26 because it doesn't belong there 20:37:41 MikeRiley, MSGS pushes a "unique implementation defined ID" in one of it's instructions 20:37:51 for the current IP 20:37:53 well,,,y allows an ip a way to get its id....why not a way to get the id when using MVRS??? 20:38:10 0 and 1 are reserved anyway 20:38:10 MikeRiley: because it's in MSGS, where it is needed 20:38:16 hmmmmmmmm 20:38:19 not in MVRS, where it only may be needed 20:38:40 AnMaster: and yeah, that's going to be fixed in the next version :-) 20:38:46 2.0 rather 20:38:53 MikeRiley, so if a interpreter doesn't have MVRS it would just push IP + 2, if it does have MVRS it would assign the IDs in some other way 20:38:56 along with my major cleanup 20:39:02 Deewiant, eh? 20:39:09 why IP+2??? 20:39:12 IP ID + 2 20:39:21 MikeRiley, because 0 and 1 are reserved 20:39:23 AnMaster: that if loads/unload match calling the destructor may be an error 20:39:25 0 = any ip 20:39:35 Deewiant, hey no need for bcast instruction 20:39:36 AnMaster, MikeRiley: might reserve more (or less) as well 20:39:40 Deewiant, you would do send to 0 20:39:48 so, does not necesarily correspond with the id coming from y??? 20:39:56 MikeRiley, and 1 is for IP groups 20:39:59 AnMaster: hmm, maybe yes 20:40:03 ie you can register yourself to a named group 20:40:13 MikeRiley: yes, it's a completely opaque value 20:40:14 then 10"gnirts" 20:40:20 MikeRiley: merely guaranteed to be unique for any given IP 20:40:23 globally 20:40:25 1 means "followed by group name" 20:40:30 ok 20:40:34 MikeRiley, this allow broadcast to a group 20:40:37 very nifty idea 20:41:46 so,,,,no I in MVRS,,,,anything you do want in MVRS??? 20:42:15 well what you discussed with Deewiant before? 20:42:27 Deewiant, care to spec up MSGS? 20:42:31 I would prefer you do it 20:42:36 you are better at docs 20:42:45 and you haven't made your own fingerprint so far as far as I know 20:42:51 AnMaster: it won't be a very high priority for me but yes I can do it 20:43:18 Deewiant, I would like to check the final draft though 20:43:24 and such 20:43:37 yeah yeah of course 20:45:00 just emailed both of you the latest working copy of the MVRS spec 20:45:09 I'm off to bed now, nights -> 20:45:53 good night 20:49:24 I'm also leaving for night soonish 20:50:12 so are you going to implement MVRS then?? 20:50:32 MikeRiley, not in cfunge, but probably in my planned future Funge coded in erlang 20:50:41 I already wrote the Befunge-93 part of it 20:50:50 -!- KingOfKarlsruhe has joined. 20:50:55 as a test project to see how feasible it would be 20:51:01 i see... 20:51:13 and it showed great promise 20:51:14 :) 20:51:21 MikeRiley, erlang is a functional programming language 20:51:31 never tried it 20:51:39 well it is rather nice IMO 20:51:54 i guess i should check it out sometime... 20:53:37 -!- puzzlet_ has joined. 20:53:40 MikeRiley, oh my erlang befunge-93 is turing complete btw 20:53:44 it uses BIGNUMs 20:53:55 http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic 20:54:56 mvrs test scripts run with the changed B command.... 20:55:00 will upload them shortly.... 20:57:33 MikeRiley, I need to finish other parts of that erlang funge first so this may take quite a while 20:57:51 it is rather low priority 20:58:00 i know all about priorities.... 20:58:06 and the next few months I will be busy with other stuff 20:58:14 my holiday ends last August 20:58:53 so if you are unlucky: next year, or even never 20:59:04 however, I hope I will have time to do it :) 20:59:16 it would certainly be a fun project 20:59:44 MikeRiley, one thing though, about get/set of remote funge space... do you still have that? 20:59:47 i know about how long some projects can take....Rc/Funge-98 was started 10 years ago now!!!! 20:59:51 and i am still working on it... 20:59:53 fine if you do, but one thing 20:59:57 yes i do... 21:00:04 does that need to be sync in any way= 21:00:20 no....it will grab it as it appears at the time the command is executed... 21:00:29 I would probably implement it as sending a request to read funge space to the other interpreter process, then waiting for a reply 21:00:43 MikeRiley, because erlang got *no shared state* between processes 21:00:50 all concurrency is done using message passing 21:00:55 so that would be the only way 21:01:02 there is no shared memory 21:01:04 you can implement it any way you like,,,,do not specify how to implement it,,,just what the function is... 21:01:14 right 21:01:26 as long as it performs the function,,,underlying implementation is not important... 21:01:34 MikeRiley, anyway erlang is very cool for concurrency, which would be the case here 21:01:47 spawning processes in erlang is very cheap 21:01:51 just like the fingerprint stacks in Rc/Funge-98,,,they end up doing what is required,,,in a very different way.... 21:01:52 they all run under a VM 21:02:02 MikeRiley, which means I can't call native OS functions either 21:02:02 i will have to take a look at that... 21:02:06 i see.... 21:02:15 there is file IO and such sure 21:02:25 using file and io modules 21:02:38 so FILE could still be implemented then??? just a different underlying method.... 21:02:45 MikeRiley, but I can't just call a libc routine without serious mess 21:02:50 MikeRiley, yep 21:02:59 socket IO exists too 21:03:31 the model for socket IO is rather different than what C uses though 21:03:42 MikeRiley, so SOCK would be pretty hard I think 21:03:42 hopefully easier to deal with??? 21:03:46 sockets in C suck!!! :( 21:03:58 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 21:04:03 MikeRiley, well it is easier to use sure... it just use the message passing API of erlang in an interesting way 21:04:14 but it is not compatible with the SOCK fingerprint in any way 21:04:26 would need some huge work to work with SOCK 21:04:30 so...will need a different form of SOCK then.... 21:04:43 MikeRiley, or a marshalling layer 21:04:53 which could be added as well... 21:05:04 well I will see what I will do 21:05:07 I'm not sure 21:05:15 MikeRiley, currently it does Befunge-93 21:05:32 there is quite a long way to go before it can do Befunge-98 even without fingerprints :P 21:05:45 then I need to make a fingerprint mechanism 21:05:55 oh and handle "normal" concurrent funge, that is t 21:06:03 yeah....funge/98 is much more complicated than 93 was... 21:06:07 -!- Tritonio_ has quit (zelazny.freenode.net irc.freenode.net). 21:06:07 -!- Defe has quit (zelazny.freenode.net irc.freenode.net). 21:06:37 -!- Tritonio_ has joined. 21:06:37 -!- Defe has joined. 21:06:45 MikeRiley, I managed to code the 93 one in about 5 hours, even though I started learning the language just a few days before 21:06:47 i had a working funge/93 interpreter up and running within an hour two when i first saw that spec....98 took me much much longer... 21:07:13 that is pretty good!!! learning a language at the same time.... 21:07:28 MikeRiley, well yeah, stack is *really* easy in erlang really 21:07:29 lists 21:07:49 http://bzr.kuonet.org/efunge/trunk/files 21:07:49 and 21:07:55 http://bzr.kuonet.org/efunge/trunk/annotate/12?file_id=fstack.erl-20080811122027-ouvcwe7ofgedh29n-3 21:08:19 looking 21:08:22 o 21:08:33 MikeRiley, the latter one is all that is needed for a Befunge-93 stack 21:09:07 MikeRiley, it can't modify existing stack as it is functional, instead it returns a new changed stack 21:09:18 no mutable state either 21:09:27 i see.... 21:09:40 MikeRiley, you know any Haskell or such? 21:09:46 do not 21:09:59 same style of language, though Haskell is purely functional, while erlang isn't 21:10:01 i had downloaded haskell at one time,,,but never dove into it... 21:11:10 MikeRiley, anyway the befunge-93 interpreter got one or two bugs, input shows a [] prompt that I can't get rid of it seems :/ 21:11:19 have yet to figure that out 21:11:34 oh and when the programs end it always print out the returned value of the function 21:11:40 as everything got a value in erlang 21:11:56 sure you can return void, but then you returned the value void 21:12:03 reminds me of another language i once played with,,,,which was also a functional language,,,so again,,,everything had return values 21:12:37 ah so you know some basic stuff about functional languages then :) 21:12:44 a little bit... 21:13:20 MikeRiley, anyway my stack code in erlang is 57 lines with comments 21:13:45 my stack.c for cfunge is 544 lines 21:13:50 yikes!!!! 21:14:01 MikeRiley, well it includes stack-stack handling too 21:14:02 my stack code is not too large....let me go see... 21:14:06 and realloc and such 21:14:22 StackStackDuplicate() for concurrent funge 21:14:30 MikeRiley, oh btw I write code with a lot of newlines 21:14:43 let me check using a code line counter 21:14:46 mine stack code is about 80 lines... 21:15:18 that includes the stack stack stuff and the stack duplicator for t 21:15:23 for fstack.erl 21:15:24 Language Files Code Comment Comment % Blank Total 21:15:25 -------------- ----- --------- --------- --------- --------- --------- 21:15:25 erlang 1 32 17 34.7% 8 57 21:15:25 -------------- ----- --------- --------- --------- --------- --------- 21:15:25 Total 1 32 17 34.7% 8 57 21:15:45 for stack.c in cfunge: 21:15:46 Language Files Code Comment Comment % Blank Total 21:15:47 -------------- ----- --------- --------- --------- --------- --------- 21:15:47 c 1 403 61 13.1% 79 543 21:15:47 -------------- ----- --------- --------- --------- --------- --------- 21:15:47 Total 1 403 61 13.1% 79 543 21:16:14 MikeRiley, you write rather compact code iirc 21:16:20 I add a lot more newlines 21:16:33 -!- Corun has joined. 21:16:35 you tend to write: 21:16:36 if (foo) bar(); 21:16:38 I prefer 21:16:40 if (foo) 21:16:43 bar(); 21:16:52 MikeRiley, I guess that explain some of it 21:17:05 yes,,,i do tend to write compactly.... 21:17:14 all of Rc/Funge-98 is in 10,443 lines... 21:17:17 MikeRiley, also I got special functions for pushing strings, poping strings, pushing and popping vectors and so on 21:17:36 i have special functions for strings,,,,not for vectors tho...should add some for vectors... 21:18:16 ~/src/cfunge/trunk/src $ ~/src/ohcount-1.0.1/bin/ohcount *.[ch] */*.[ch] */*/*.[ch] 21:18:19 Total 80 6616 2781 29.6% 1175 10572 21:18:29 Language Files Code Comment Comment % Blank Total 21:18:32 that is 21:18:58 MikeRiley, also got a stack peek, not just pop 21:19:02 ;you comment more than i do... 21:19:08 probably 21:19:12 i do not have a peek,,,just the pop... 21:19:21 MikeRiley, I do use doxygen comments in my headers 21:19:23 my commenting tends to be very sparse... 21:19:25 :P 21:19:47 i tend not to write the best code for others to understand.... 21:19:48 http://rafb.net/p/ctJfly43.html 21:20:00 just an example 21:20:15 FUNGEDATATYPE should be renamed btw 21:20:21 looking 21:20:25 it is a typedef, not a define nowdays 21:20:35 so should be FungeCell or something 21:20:46 need to tell ais though 21:20:51 -!- tusho has changed nick to tusho|away. 21:22:15 MikeRiley, my stack push for one cell: http://rafb.net/p/Kw9t0W75.html 21:23:08 cf_realloc is a #define for either normal realloc() or a Boehm-GC one 21:23:10 mine is more complicated that yours,,,,because of MODe 21:23:22 MikeRiley, well MODE I won't implement :P 21:23:31 do not blame you,,,it was a pain... 21:23:43 but since it was a cat's eye fingerprint,,,just felt that i had to... 21:24:17 that is not a reason for me 21:24:46 "do I see any use for it", "is it sane", "is it well defined", "is it cool" are reasons for me 21:24:46 i was crazy enough to implement anything that existed at the time... 21:25:06 in all reality,,i have never used anything in MODE... 21:26:59 never used some of even my fingerprints either actually... 21:27:20 -!- Tritonio_ has quit (Read error: 60 (Operation timed out)). 21:27:25 MikeRiley, well... if you were crazy enough to implement TRDS then you would have implemented anything else too 21:27:32 I mean there is no worse than TRDS 21:27:38 MVRS get close, but even so... 21:27:48 but MVRS actually seems useful 21:27:51 true,,,,TRDS was major pain in the neck!!!!! almost sorry i ever dreamed that one up!!! 21:28:12 MVRS is nowhere near as convoluted,,,i was able to get my implementation of MVRS running in about a day... 21:28:34 yes,,,MVRS i can see having uses...TRDS was nothing more than a curio.... 21:28:45 still it is pretty feral, cfunge can't support multiple funge spaces without some *major* changes 21:29:18 funge space is a hidden static variable in funge-space.c 21:29:28 it is not passed around 21:29:42 so even mini-funge would need some major redesign 21:30:08 and that is not something I plan to do in cfunge 21:30:30 Rc/Funge-98 required massive changes to allow MVRS... 21:30:50 cfunge will become a good Befunge-98/108 interpreter, it will not do the most feral extensions 21:31:04 but the same changes that allow MVRS also allow me to implement a much more powerful dynamic fingerprint system... 21:31:14 while efunge will most likely do MVRS at some point 21:31:22 though *never* TRDS or MODE :P 21:31:31 i have no problem with ferel extensions,,,,if they are within reason.... 21:31:42 oh and FRTH would be painful in efunge too 21:31:54 how come??? would not think that would be that hard... 21:32:22 reason: stack is a list, you can access head of list and tail (ie, everything except first element), so you just add/remove at the end 21:32:26 but access by index... 21:32:27 hard 21:32:55 you work recursively on the list, getting next element 21:33:06 the list *acts* like a single linked list most of the time 21:33:16 treating it in other ways is pretty painful 21:33:30 MikeRiley, see what I mean? 21:35:14 yep...see what you mean... 21:36:23 MikeRiley, also the way I currently do funge space is a bit slow, I mean slow as in Befunge-93 part of mycology feels slow 21:36:31 so I got another idea 21:36:49 it is using the single global state thing that actually exists in erlang 21:37:12 called ETS 21:37:39 it is used as backend for the rather fast database engine in erlang that is called mnesia 21:38:18 -!- Tritonio_ has joined. 21:38:29 i see..... 21:52:32 -!- tusho|away has changed nick to tusho. 21:55:40 so 21:55:44 say I wrote an inasnely feral extension 21:55:49 like, crazily 21:55:50 and then 21:55:55 wrote like 50 amazing befunge programs with it 21:55:56 truly amazing 21:56:01 would AnMaster implement it? 21:56:20 tusho, I already said I would, in efunge 21:56:26 it is not a top priority either 21:56:31 no not in cfunge 21:56:36 but likely in the future efunge 21:56:44 AnMaster: so cfunge would be not that useful as I'll have written like 21:56:46 however should I follow your model tusho, that will never happen 21:56:47 the most befunge programs of anyone 21:57:03 [21:56:46] however should I follow your model tusho, that will never happen 21:57:04 that makes no sense 21:57:09 tusho, botte 21:57:13 we are still waiting 21:57:23 ah. 21:57:26 are you dying? 21:57:28 no 21:57:30 i'm sure it's paining you greatly 21:57:31 :D 22:13:48 -!- MikeRiley has quit ("Leaving"). 22:17:55 -!- fungot has quit ("restarting in a chroot/setuid/setgid jail"). 22:19:15 -!- fungot has joined. 22:32:34 -!- tritonio__ has joined. 22:32:56 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)). 22:54:01 -!- KingOfKarlsruhe has quit (Remote closed the connection). 23:08:44 -!- tritonio_ has joined. 23:11:12 -!- tritonio__ has quit (Read error: 110 (Connection timed out)). 23:34:00 -!- Slereah_ has quit (Read error: 110 (Connection timed out)). 23:43:05 -!- tusho has quit ("Leaving..."). 23:46:19 -!- Corun has quit (zelazny.freenode.net irc.freenode.net). 23:46:19 -!- Defe has quit (zelazny.freenode.net irc.freenode.net). 23:52:02 -!- Defe has joined. 23:52:06 -!- Corun has joined. 23:54:39 -!- olsner has quit ("Leaving").