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