00:02:26 Weird. I've been refactoring umlbox code a little (in preparation for some tweaks), and one thing I changed was to start using "con1=fd:N,fd:M", where N is /dev/null (opened RDWR) and M is the inherited stdout (for capturing the command output). 00:02:53 Previously it was "con1=null,fd:M", which uses UML's 'null' console type instead, which makes reads block forever. 00:03:08 Locally this seemed to make commands like "cat" reliably return quickly, instead of waiting for the timeout. But on the bot machine, it's... flaky. Now it's again returning quickly, but earlier I wasn't, even though I changed nothing. 00:03:12 `cat 00:03:14 No output. 00:03:21 Odd. 00:10:35 -!- Sgeo has joined. 00:16:50 I'm at a bookstore and I picked a book semi-randomly and opened it at a page semi-randomly and it talks about ais523. 00:17:04 *blink* 00:17:06 wow 00:17:21 I mean, it's a book about computability or something, so not that random. 00:18:13 -!- FreeFull has quit. 01:32:25 -!- oerjan has joined. 01:40:49 ^wiki 01:40:49 https://esolangs.org/wiki/ 01:46:15 b_jonas: oh right, ed doesn't strictly need a terminal. 01:46:49 oerjan: That one I restored from the logs. 01:46:49 in fact probably doesn't care 01:46:59 fizzie: ah 01:47:22 i saw your message about restoring and wondered how much you'd wiped out 01:47:23 ^show 01:47:24 echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr ha rainbow rainbow2 welcome me tell eval elikoski list ping def a thanks tmp2 8ball rreree rerere botsnack bf 01:50:23 ^a 01:50:23 ............................................................................................................................................................................................................... ... 01:50:28 ^show a 01:50:28 +13[.] 01:50:31 There's a wonky thing umlbox does which is to append a ' | cat' to the command line if the stdout of the call isn't a terminal. I assume that's because from the UML command's perspective /dev/tty1 is always a TTY, even when UML has connected it to a pipe/file. 01:51:09 mhm 01:53:44 Hm, I've broken something. :/ 01:55:21 NOOOOOOOOOOOOO 01:55:45 `` echo foo; echo bar; echo baz 01:55:46 foo \ bar \ baz 01:55:47 `` echo foo >&2; echo bar >&2; echo baz >&2 01:55:48 foo 01:55:52 That's not right. 01:58:52 o_O 01:59:05 Oh, that's right, that's one reason why stdout and stderr ordering was pretty wonky even before: the '| cat' thing only deals with stdout, stderr goes directly to /dev/tty1. 01:59:33 That said, I'm not sure what I managed to break there. 02:02:49 -!- joast has quit (Quit: Leaving.). 02:03:35 `` (echo foo; echo bar; echo baz) >&2 02:03:36 foo 02:03:44 something EOL handling? 02:04:00 `` (echo foo; echo bar; echo baz) >&2; echo fizz 02:04:01 No output. 02:04:09 Mmmaybe. I don't see how though. 02:04:14 huh 02:04:24 I also got two different outputs for the same command before, so there's a race condition somewhere as well. 02:04:26 `` echo buzz; (echo foo; echo bar; echo baz) >&2; echo fizz 02:04:27 foo 02:05:13 I assume it could be the newline translation, it's just odd how that could be affected. 02:07:41 What the hackbot side does is, `p = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True); p.stdin.close(); ret = p.stdout.read(1024)`. No matter how the UML process outputs things, they should all still end up in the same pipe. 02:09:33 int-e: Hmm, is something like "non-chronological backjumping" actually mandatory when doing clause learning? 02:09:53 I thought it would be optional but you want to have a reason for every assignment, and if you do regular backtracking, do you even have a reason? 02:09:56 b 02:10:24 Also maybe you're tired of random SAT questions, hmm. 02:11:57 . o O ( do you like random SAT questions? ) 02:12:53 -!- joast has joined. 02:15:06 Yeah, IDGI. Running the umlbox command line for 'echo foo; echo bar; echo baz' and 'echo foo >&2; echo bar >&2; echo baz >&2' manually on the same system, with 1>/tmp/out.1 2>/tmp/out.2, there's no difference: both write exactly the same content into.... ohhh, I get it. 02:16:03 The bot does a .read() on the stdout pipe. When you're writing to stderr, it probably gets split to multiple writes, which means it only receives the first line. 02:16:32 But when you write to stdout, it's a fully buffered stream (through the | cat), so it gets the full chunk in one .read(). 02:17:12 fiendish 02:20:11 I think I can just wrap it in a io.BufferedReader to fix it. Although I still don't know how it actually broke. 02:23:49 int-e: Wait, maybe I'm just wrong and you can use the conflicting clause. 02:28:59 Hmm, well, it wasn't that simple. It's true that the .read() call only returns the first line, but then a subsequent .read() actually says it's at EOF. How does that make sense? It doesn't make sense. 02:30:02 Maybe it could be non-blocking somehow... although I don't think so. 02:35:02 No, it's not that. If I make umlbox write a line to the file descriptor used before closing it, the bot does read that. 02:35:25 So it's just that somehow the uml terminates before it has written all the output. 02:40:35 Super weird. It also happens outside the bot, if I direct the output to a pipe. Immediately after the first line has been written, it terminates. With no messages. 02:52:44 did this change happen when you upgraded debian, or is there something you actually edited involved? 02:53:25 fizzie: ^ 02:53:45 because the latter should at least be bisectable... 02:54:05 Hard to say. People don't usually write to stderr that much. But I can always roll back to an old version and test again. 02:54:24 Right now I'm getting really bizarre behavior out. 02:55:12 just change that | cat to |& cat and call it a day :) 02:56:02 int-e: Wait, now I'm on the train and it doesn't make sense again. 02:56:03 It runs using /bin/sh, it doesn't work there. But I did give that a think. 02:56:16 2>&1 | cat might work. 02:57:21 shachaf: that reminds me of something. oh right, the "i'm on a horse" meme. 02:57:37 Anyway, the output behaviour is really bizarre. I'm adding printfs here in umlbox init, and only some of them get out, even when I'm not really doing anything special. As soon as it starts to read from the /ubda device, everything goes weird. 02:58:18 I seem to consistently get all the output from the printfs before the first read, whatever that means. 02:59:17 Well, except sometimes I don't get even that. 02:59:26 oerjan: Is that like "I've been through the desert on a horse with no name"? 03:01:19 I think there might just be some sort of a thing where UML has no way to say "flush everything that has been written to the console/serial channels before terminating" when init calls `sync(); reboot(LINUX_REBOOT_CMD_POWER_OFF);` on it. 03:02:54 shachaf: probably{, not} 03:03:10 -!- imode has joined. 03:07:52 FWIW, doing '2>&1 | cat' didn't actually fix it. And anyway it's not strictly related to stderr. Here's the behavior I'm consistently getting when doing something close to what the bot is doing: http://ix.io/22oJ 03:07:56 Does that make any sense? 03:08:55 (No.) 03:10:38 Bah. Maybe I'll try the Debian standard 4.19 UML kernel, instead of my home-built 4.9 one. Although I think there must've been some reason why I built my own. 03:12:01 fizzie: I haven't been reading the whole log. What's with only the first line being printed? Is that the nonsensical thing? 03:12:27 Well, occasionally it's weirder than that, but yes. 03:12:40 When is it weirder? 03:13:05 I don't think I can describe this. 03:13:10 Is this echo the builtin or /bin/echo? Can you strace it? 03:13:20 I'm typing on my phone so everything is scow. 03:13:43 I can't strace UML. I could probably strace inside it, but I'm not sure how much that would help. 03:13:53 Anyway, I switched to the new UML kernel and now it outputs nothing at all. 03:13:57 `echo ping 03:14:00 No output. 03:14:02 Not great. 03:14:31 What if you strace inside it? Is it one write call or three? 03:14:52 Well, I can't, now. 03:15:29 It just crashes with: Trying to reregister IRQ 2 FD 4 TYPE 0 ID (____ptrval____) \ open(rfile, O_RDONLY): Device or resource busy 03:18:00 (This is when it's trying to open the tty1 device.) 03:19:20 Bah, I'll revert back to my own 4.9 version and give up for now. At least it works to some degree. It's not even impossible it's been broken a little like that for long now. 03:21:06 By the way, it was with the echo builtin; with /bin/echo both the plain and | cat version print all lines. 03:22:31 Doing strace inside suggests the plain version is three separate writes, with | cat... well, I don't get the strace output, so it's kind of hard to say. 03:23:05 You can't strace into a file? 03:23:16 And with /bin/echo I get more of the strace output, but not all of it. 03:23:28 Is that bash -c /bin/echo or/bin/echo directly? 03:23:29 I guess I could, I would just need to hostfs mount something in writable form. 03:24:02 bash -c /bin/echo. 03:24:31 Maybe your computer's haunted? 03:26:09 Okay: with bash -c 'echo -e ...', no cat, I get the full output and it got written as three separate writes. 03:27:12 * oerjan suddenly thinks of the non-inheritable fds mentioned yesterday 03:27:25 With bash -c 'echo -e ...' and the cat -- and note that this cat is outside the UML kernel, it's just changing the UML's stdout from a (pseudo)terminal to a pipe -- I only get the first line of output, and it was attempted to be written as three separate writes, but the third failed with EPIPE. 03:27:27 could that be involved? 03:28:45 What is cat seeing? I guess read 5 and then read 0? 03:28:55 EPIPE is odd. 03:29:13 With bash -c /bin/echo, I sometimes get no output at all, and a single write of the whole 15 bytes which fails with EIO. 03:29:38 And occasionally I get the full output, and three separate writes of 5 bytes each. 03:29:49 OK, I'm spooked. 03:30:06 And the last combination, /bin/echo with cat, seems to consistently produce all three lines of output. 03:30:17 Written in a single 15-byte write. 03:30:49 I don't think I've even seen EIO before. 03:30:54 What's closing the pipe? 03:31:16 (gremlins) 03:32:34 The umlbox wrapper script does close the file descriptor, but that's supposedly the write end of the pipe, and anyway should only happen after the UML kernel process has terminated and been wait'd for. 03:32:41 Let me strace that cat on the outside too. 03:32:42 EIEIO 03:33:27 `quote 1000 <-- enough quotes have been deleted that numbers aren't remotely stable 03:34:02 . o O ( kmcdonald had a farm ) 03:34:54 lol 03:34:58 Okay, built-in echo with cat. Saw one line of output. Inside, bash did three write calls of 5 bytes each; first two returned 5, the last returned -1 EPIPE. Outside, the cat did one read(0, "foo1\n", 131072) and got 5 bytes, then the next read returned 0/EOF. 03:36:04 I've no idea what could be closing the pipe. The only people who should even have access to the read end of the pipe would be cat (which doesn't seem to be closing it) and bash (which I assume wouldn't do it without a good reason). 03:36:30 The umlbox wrapper script, and the UML kernel, should only have a file descriptor for the write end. 03:36:35 `doag ../quotes | grep 1000 03:36:38 No output. 03:37:11 Really going to give up for now though. It's late. There's ghosts about. 03:37:16 `` doag ../quotes | paste 03:37:19 https://hack.esolangs.org/tmp/paste/paste.20469 03:38:11 I strongly suspect it's some UML weirdness, after all, init will tell the kernel to power off right after the command finishes. I might need some sort of synchronization mechanism here. 03:38:32 `quote steal.code 03:38:33 No output. 03:38:44 `quote steal..code 03:38:45 687) what a world it would be if you could actually *steal* code so that the other project has to rewrite it or infiltrate your project to steal it back 03:38:59 hm that's older, so it _should_ be in the paste 03:39:08 (Incidentally, sleep is also behaving super-weirdly inside the UML. If I stick a 'sleep 1;' in front, there's never any output. And the sleep durations never seem to actually match the designated amount of seconds.) 03:42:02 i vaguely think someone used sleep in HackEso not that long ago 03:45:53 kspalaiologos: https://esolangs.org/logs/2013-03-30.html#luq 03:46:13 it was actually quote 1000 itself when added 03:46:19 and still not cheating 03:46:53 Maybe you'll understand this better if you draw a UML diagram. 03:47:56 so: we had 1000 quotes back in early 2013, and currently have fewer than 337 more. 03:48:07 `` allquotes | tail -n 1 03:48:10 No output. 03:48:18 what 03:48:47 `` allquote | head -n 1 03:48:48 ​/hackenv/bin/`: line 5: allquote: command not found 03:48:53 `` allquotes | head -n 1 03:48:54 1) EgoBot just opened a chat session with me to say "bork bork bork" 03:48:57 Maybe that's just more ghosts? 03:49:03 `` allquotes | tail -n 1 03:49:04 1332) The domain is public, but what's the codomain? 03:49:09 apparently so. 03:49:41 so it's definitely not been that broken for long. 03:50:34 I'll try older versions later. 03:51:31 An alternative solution also occurs to me: instead of trying to use the UML console channels, I could use the block devices. That way there's a chance the sync will make it robust. It's not like I need the interactivety. Although umlbox itself is designed for potential interactive use. 03:52:09 `` allquotes | tail -n 1 03:52:11 1332) The domain is public, but what's the codomain? 03:52:29 That quote is terrible. 03:52:46 Maybe delete it or pick some other quote to keep quoting? 03:53:10 well i was really just checking how many quotes there were, and then a bug turned up. 03:54:32 ok i did 3 repeats in pm, and the last one failed. 03:54:48 (the second was a little slow.) 03:55:14 -!- imode has quit (Ping timeout: 240 seconds). 03:55:44 maybe it's timing out and it's related to the sleep thing 03:56:16 `cat 03:57:03 That always seems to take more time than the stipulated 30 seconds. 03:57:40 No output. 03:57:47 i was sort of hoping it might time out early and be a clue 03:57:49 `` echo hi; cat 03:57:50 No output. 03:57:54 ooh 03:57:58 so it was 03:58:11 but i had to print something first 03:58:56 fizzie: in case you weren't watching, that last command responded almost instantly 03:59:25 And didn't print the thing. 04:00:03 Shouldn't have anything to do with the timeout though. 04:00:46 no, more the reverse: it shows that it's aborted first. 04:01:52 `` echo hi; echo ho; cat 04:02:10 and now it's going to take the full time i guess 04:02:56 No output. 04:03:04 ...but still didn't print 04:03:16 very random. 04:03:57 `1 quote random 04:03:58 1/5: 04:04:07 `n 1 04:04:09 1/5: 04:04:17 `n 1 04:04:18 1/5: 04:04:21 `n 04:04:22 2/5: 04:04:24 huh 04:04:41 Probably closing after the first write? 04:05:04 apparently. but it hasn't been doing that since fizzie upgraded debian, has it? 04:05:21 I don't know what's going on at all. 04:05:27 I'm at the airport. 04:09:24 hm i find only one 1/...: response after i asked fizzie about "draft", which i assume was after the upgrade. although that one worked. 04:09:49 `1 stat le 04:09:50 No output. 04:09:54 `1 stat le 04:09:55 1/1: 04:09:58 `1 stat le 04:10:00 1/1: 04:10:12 so something changed after that, probably 04:13:43 lately people don't seem to be following the old "show 5 quotes, delete at most 1" tradition, but just deleting things outright, so the quotes db might even continue shrinking. 04:20:55 I don't understand why it would only work for the one write. 04:24:43 `` /bin/echo a; /bin/echo b; /bin/echo c; /bin/echo d; /bin/echo e 04:24:44 a \ b \ c \ d \ e 04:24:48 `` /bin/echo a; /bin/echo b; /bin/echo c >&2; /bin/echo d; /bin/echo e 04:24:49 c 04:25:12 I'm at a bookstore and I picked a book semi-randomly and opened it at a page semi-randomly and it talks about ais523. <-- synchronicity hth 04:25:17 And there's that, which seems to behave very consistently. 04:26:01 `cat spout 04:26:04 No output. 04:26:06 huh 04:26:14 `cat spout 04:26:15 ​ File: le -> /hackenv/le \ Size: 11 Blocks: 0 IO Block: 1024 symbolic link \ Device: 12h/18dInode: 1206924 Links: 1 \ Access: (0777/lrwxrwxrwx) Uid: ( 1000/ UNKNOWN) Gid: ( 1000/ UNKNOWN) \ Access: 2019-11-16 21:29:43.000000000 +0000 \ Modify: 2019-11-16 21:29:43.000000000 +0000 \ Change: 2019-11-16 21:29:43.000000000 +0000 \ Birth: - 04:27:59 `n 04:27:59 1/1: 04:28:04 `` n 04:28:08 No output. 04:28:10 It would make some sense if it was the "bot framework does only one read, then closes the pipe" issue, but it was clearly receiving EOF right after. 04:28:29 `` n | cat 04:28:30 No output. 04:28:40 `` n | cat 04:28:41 1/1: File: le -> /hackenv/le \ Size: 11 Blocks: 0 IO Block: 1024 symbolic link \ Device: 12h/18dInode: 1206924 Links: 1 \ Access: (0777/lrwxrwxrwx) Uid: ( 1000/ UNKNOWN) Gid: ( 1000/ UNKNOWN) \ Access: 2019-11-16 21:29:43.000000000 +0000 \ Modify: 2019-11-16 21:29:43.000000000 +0000 \ Change: 2019-11-16 21:29:43.000000000 +0000 \ Birth: - 04:29:20 Is it possible that it gets an eof whenever any executable closes the output pipe, and that's where it decides to stop reading? 04:29:59 fizzie: I was going to ask earlier what happens if cat keeps issuing read calls after the 0. 04:30:08 But I thought that'd be too niche a guess and too annoying to test. 04:30:09 `` 1 echo a; 1 echo b; 1 echo c; 1 echo d; 1 echo e 04:30:21 No output. 04:30:31 `cat spout 04:30:32 No output. 04:30:34 `cat spout 04:30:35 No output. 04:30:37 `cat spout 04:30:37 No output. 04:30:42 `` ls -l spout 04:30:44 No output. 04:30:47 `` ls -l spout 04:30:48 No output. 04:30:51 OH COME ON 04:31:04 `` ls -l spout | cat 04:31:05 ​-rw-r--r-- 1 1000 1000 0 Nov 21 04:30 spout 04:31:18 `` cat spout | cat 04:31:19 No output. 04:31:24 `` cat spout | cat 04:31:25 No output. 04:31:32 `` wc spout 04:31:33 0 0 0 spout 04:31:35 oh 04:31:54 ok interesting, it failed at writing the spout file 04:34:02 `` (1 echo a; 1 echo b; 1 echo c; 1 echo d; 1 echo e) >/dev/null 04:34:10 No output. 04:34:20 `cat spout 04:34:21 No output. 04:34:27 `` wc spout 04:34:27 0 0 0 spout 04:34:37 hum 04:35:01 that means that command failed somewhere, despite never printing to stdout 04:35:58 `` { 1 echo a; 1 echo b; 1 echo c; 1 echo d; 1 echo e } >/dev/null 04:35:59 ​/hackenv/bin/`: eval: line 6: syntax error: unexpected end of file 04:36:19 hum 04:36:34 `` (1 echo a) >/dev/null 04:36:35 No output. 04:36:36 -!- kspalaiologos has quit (Ping timeout: 240 seconds). 04:36:39 `cat spout 04:36:40 No output. 04:36:52 oh wait duh 04:37:45 `` 1 'echo a'; 1 'echo b'; 1 'echo c'; 1 'echo d'; 1 'echo e' 04:37:47 1/1:a \ 1/1:b \ 1/1:c \ 1/1:d \ 1/1:e 04:38:01 darn 04:38:09 `cbt 1 04:38:10 ​\` "$@" |& sport 04:38:31 hum that should pass on everything 04:38:35 `cbt ` 04:38:35 ​#!/bin/bash \ cmd="${1-quote}" \ TIMEFORMAT="real: %lR, user: %lU, sys: %lS" \ shopt -s extglob globstar \ eval -- "$cmd" | rnooodl 04:39:28 `slbd `//s,1,@, 04:39:30 ​`//#!/bin/bash \ cmd="${@-quote}" \ TIMEFORMAT="real: %lR, user: %lU, sys: %lS" \ shopt -s extglob globstar \ eval -- "$cmd" | rnooodl 04:39:37 `` echo hi 04:39:37 hi 04:40:07 `` 1 echo a; 1 echo b; 1 echo c; 1 echo d; 1 echo e 04:40:15 No output. 04:40:23 I'll try to roll back the live version to the post-Debian-upgrade-before-refactoring one. 04:40:25 or not. 04:40:48 `` 1 echo a; 1 echo b; 1 echo c; 1 echo d; 1 echo e 04:40:51 No output. 04:41:06 `` \` echo hi 04:41:06 hi 04:41:14 ok seems to work 04:41:41 `` 1 echo hi 04:41:42 1/1:hi 04:42:03 `` 1 echo a; 1 echo b; 1 echo c; 1 echo d; 1 echo e 04:42:10 1/1:a \ 1/1:b \ 1/1:c \ 1/1:d \ 1/1:e 04:42:27 `cat spout 04:42:27 e 04:43:18 `` /bin/echo a; /bin/echo b; /bin/echo c >&2; /bin/echo d; /bin/echo e 04:43:19 c \ a \ b \ d \ e 04:43:25 ok that was just me being stupid but now 1 and ` are a bit more resilient in shell 04:43:26 Well, there's clearly some difference there. 04:43:45 Oh well, at least I can bisect for it then. But not today. 04:43:53 Need to wake up in four hours. 04:44:06 sweet dreams 04:49:16 `` url $(which 1) 04:49:17 https://hack.esolangs.org/repo/file/tip/bin/1 04:52:52 -!- TellsTogo has joined. 04:56:34 for a second it almost looked like the "tip" command was in operation, in all its glory :/ 04:56:46 alas, just a directory name 04:59:20 [[User:Quadril-Is]] https://esolangs.org/w/index.php?diff=67294&oldid=67134 * Quadril-Is * (+14) 05:07:31 fungot: do you have any tips? 05:07:31 oerjan: it's always hard for me to go function by function? 05:29:41 `? tip 05:29:42 A tip is [ $ ] if you're American, [ £ ] if you're British, and if you're Japanese. 06:14:50 -!- TellsTogo has quit (Remote host closed the connection). 06:25:56 shachaf: AFAIUI the connection is that the backjump clause used for backjumping is a promising clause to learn (a nontrivial consequence of the existing clauses). But you don't have to use it for backjumping. 06:27:10 shachaf: Actually, nontrivial and at least marginally useful... it would have detected the conflict at hand one or more decisions earlier. 06:45:30 -!- tromp has quit. 07:32:14 -!- oerjan has quit (Quit: Nite). 08:00:57 shachaf: Hmm, actually there is a far simpler way to get /some/ learnable clause: Collect the negation of all decision literals on the trail. Presumably it's not very effective (for that clause to be applicable, you need to have all but one of those literals on the trail again, though possibly in a different order. With pure backtracking (no backumping, no restarts) that will never happen!) 08:03:03 So one way of viewing the backjump clause is as a way of identifying relevant literals for the current conflict. 08:09:14 . o O ( Hmm. Fun though incorrect attempt of framing this: CDCL solvers are SAT modulo unit propagation solvers, and backjump are unsatisfiable cores. ) 08:09:37 s/backjump/backjump clauses/ 08:10:04 (complements of unsatisfiable cores, of course) 08:20:43 -!- zzo38 has quit (Ping timeout: 245 seconds). 08:29:42 [[Treesolang]] https://esolangs.org/w/index.php?diff=67295&oldid=67274 * Baidicoot * (+651) added IO 08:30:17 so HackEso has grown mysterious bugs? 08:33:30 int-e: So the first time my friend I were trying to figure out CDCL, we just started writing code, starting with a really simple DPLL solver and demorganizing the trail to learn clauses. 08:34:10 It was only when we saw that it changed literally nothing about the behavior of the solver that we thought about it for a few seconds and realized it was ridiculous. 08:36:04 heh it probably made it slower ;) 08:36:48 I mean, it was written in Python. 08:36:50 Maybe I should implement a SAT solver. But to what end... 08:36:53 So it was already maximally slow. 08:37:18 int-e: Anyway, when you do something like FirstUIP, you need a "reason" for each assignment (other than decisions). 08:37:57 If you do the typical backtracking thing (invert the last decision and mark it as a forced literal), you don't have a clause to point to as the reason for the new assignment. Do you? 08:39:39 True, you'd have to derive the corresponding backjump clause (LastUIP) 08:40:23 Oh, you can keep resolving on units from this level until your clause includes the decision literal, you mean. 08:40:47 yeah, since that's how backjumping simulates backtracking 08:41:26 Right. I guess I can do that. 08:41:54 I implemented CDCL and FirstUIP on the flight (no clause deletion, just allocating enough memory for all the learned clauses). 08:42:27 It made the number of decisions and units go way down, but the solver also takes much much longer. 08:42:52 Which seems like a great tradeoff, since I hate making decisions. 08:44:03 Yeah deleting clauses is very important for performance. Which is awful because it's another open-ended playing field for heuristics. 08:44:44 -!- kspalaiologos has joined. 08:45:45 =str 0s +[----->+++<]>+.++++++++++++..----.+++.+[-->+<]>.-----------..[--->+<]>.[--->+<]>----.----.---.-----------.+++++++++++++.-------.++++++++++++.+[++>---<]>.---[----->+<]>.+++.-----------.--[->+++<]>.++[--->++<]>+.+[->+++<]>+.++.--.----[->+++<]>. 08:45:45 ok 08:46:05 =str 0a [,.] 08:46:05 ok 08:46:11 =def 0wiki 08:46:12 ok, defined 'wiki' 08:46:17 =wiki bfbot 08:46:18 ..............................................................................bfbot 08:46:26 Oh gosh damn it man 08:46:30 What happened 08:46:36 int-e: Why is it important? 08:46:40 8bit cells? 08:46:44 I thought it was just for keeping memory use fixed. 08:46:55 But even with 2WL you spend way too much time checking clauses, or something? 08:46:55 `bf_textgen x 08:46:56 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: bf_textgen: not found 08:47:04 ``` bf_textgen 08:47:05 bash: bf_textgen: command not found 08:47:14 Where is it located 08:47:36 I need to add bitness to the wiki page because I forgot it 08:49:00 shachaf: Hmm, many reasons, from growing 2WL lists to worse locality of memory access. And a lot of clauses turn out to be useless (for example, because they are subsumed by other clauses, or because while they do contribute to conflicts, those are exceedingly rare). 08:50:24 Right, one thing I ws thinking was that before doing CDCL I almost don't have to wory about cache locality, but once I have an unbnded number of clauses I have to worry a lot. 08:50:31 The average 2WL list grows linearly with the number of clauses. 08:51:56 (Very naive estimate: 2 times number of clauses divided by number of literals. It's probably better in practice because clauses can end up on watch lists of literals that are never considered.) 08:52:18 -!- b_jonas has quit (Quit: leaving). 08:52:20 * int-e shrugs 08:52:42 That "probably" is a fairly wild guess. I have no data. 08:52:50 Ideally watches move to and stay on literals you don't assign as much. 08:53:11 Or whose negation you don't assign as much, anyway. 08:53:43 The way I think of it, I'd put A v B on the watch lists for ~A and ~B. 08:54:24 I mean, where you put the negation doesn't matter. 08:54:30 But I don't know what's standard here... 08:54:32 Yeah. 08:54:50 I understood what you said. 08:55:02 Or wrote. Whatever. 08:55:40 Clause collection seems hard. 08:55:51 By which I mean you have to make a lot of decisions. 08:58:07 Yeah I'm afraid this is where you read another half dozen papers. 09:00:02 There are some obvious statistics like length of clause, how often clauses are used in unit propagation (possibly per level though that'd be a serious amount of memory, so hard to justify. maybe if you assign weights to the levels?)... 09:00:13 OK, some of these learned clauses are pretty bad, now that I look at them. 09:00:58 One of the is a unit! 09:01:22 Man, when you learn a unit, I bet you can just delete all the relevant clauses etc. out of your database when you restart. 09:01:32 Okay, if you learn a unit clause you have a clear way of pruning the clauses :) 09:01:50 It's kind of an odd property of CDCL that you can't do that in general. 09:01:57 (When normally you think of DPLL as solving subproblems.) 09:02:30 You can check for clause subsumption... just not efficiently ;) 09:02:41 (Maybe I'm not imaginative enough.) 09:03:27 Even if you learn a unit clause it's not entirely clear how to deal with that efficiently. 09:03:57 Why? 09:04:00 (If you want to avoid scanning *all* clauses. Maybe just go through that literal's watch lists?) 09:04:14 (But then you have to do that periodically.) 09:04:15 Oh, I was thinking to just go through the watch list. 09:04:32 But also scanning all clauses up to num_vars times doesn't seem that bad. 09:04:48 Maybe the clause database gets really big, or real-world SAT problems have a large number of variables. 09:05:14 I'm sure both of these happen. 09:06:01 But you can probably do it opportunistically reasonably well. 09:06:15 I mean, if you're learning a lot of units, you're doing pretty well, I'd hope. 09:07:03 Anyway, all these decisions is why I don't really want to write a SAT solver. (I have no expectation of improving the state of the art, and I wouldn't expect to learn all that much either...) 09:30:58 Does it make sense to resolve on the same variable twice while doing LastUIP? 09:31:10 I should get some paper and figure out what's going on with my life. 09:32:11 shachaf: not really? I mean the resolved variable is on the trail, which should not have any duplicates? 09:33:04 Oh, that's not what's going on. 09:33:23 What's going on is that I want to add a variable to the trail from one that was previously resolved on from another clause? 09:33:29 Hmm. 09:34:06 Oh. That may happen. 09:34:34 But then I don't want to resolve on it again. So the second time I should add it to the non-resolvable pool? 09:34:46 Are you sure you don't want to do that? 09:34:51 I feel like I'm making this too complicated. 09:35:02 You just said it doesn't make sense to resolve on it again. 09:35:38 I mean, resolution proofs /must/ typically resolve on the same variable several times for completeness. 09:36:07 shachaf: No, *I* said that it doesn't happen when finding a backjump clause. 09:36:18 But that's ignoring the history of the clauses involved in that. 09:38:57 So we talked past each other for a bit, because apprently you care about that history. I'm inclined to say that you shouldn't care. 09:41:26 I'm not sure what you mean. 09:45:41 shachaf: When deriving a backjump clause by going back through the trail and resolving the conflict clause with the reason given for each literal, you will not resolve on the same variable twice because the variable you resolve on corresponds to the literal on the trail, and the trail is supposed to be free of duplicates and conflicting literals. 09:46:45 shachaf: it's only when you look into the derivation of the referred clauses (if they're learned clauses) that you may be resolving on the same variable more than once. 09:47:11 Wait, how do you resolve through the trail? 09:48:10 What I do for FirstUIP is: Take the all-false clause; take a unit-propagated literal from it, and find the clause it was propagated from; resolve it with that clause to get a bigger clause. 09:48:39 And keep doing that with the new clause until there's only one literal from this level in it. 09:49:30 Yes. The unit-propagated literal is from the trail. The variable you resolve on corresponds to that literal. 09:50:19 Maybe I'm begin stupid but I see no reason why you'd involve the same literal twice in the conflict analysis. 09:50:37 Sure, it's from the trail, but you don't find it by just looking back through the trail, do you? 09:50:43 Hmm. 09:51:22 Maybe you just do? 09:51:26 Note: When a literal is derived by unit propagation using a clause C, *all* variables of C are on the trail at that point. You can't re-introduce variables that come later on the trail by resolving with C. 09:51:37 Maybe the code I wrote was way too complicated. 09:52:37 So as long as you pick the /last/ literal of the conflict clause from the trail (that is, the one that comes last on the trail) and its corresponding clause to resolve with, you will not resolve on the same variable twice. 09:53:05 Ah, but I'm just picking an arbitrary one. 09:53:27 Now what you said makes more sense. 09:53:36 Then I'm not sure. But don't you risk missing the last UIP then? 09:53:55 Do you still find the first UIP? 09:54:27 Oh right we're looking from the end of the trail. So I mean first. 09:54:49 The last UIP can't be missed, it's the backtracking case. 09:56:55 Take what I'm saying with a grain of salt... I'm missing technical details of how conflict analysis is really done. I have a pen&paper view on how backjump clauses are supposed to work. 09:58:01 But that view definitely involves going through the trail in a backwards fashion. But maybe that's for convenience and not out of necessity. 09:58:48 I think what you say makes more sense than what I was thinking. 09:59:22 I was just picking an arbitrary unit each time. 09:59:34 I mean arbitrary unit-propagated literal from this level. 09:59:52 Now I need to think about how to implement the thing you said and some other things. 09:59:59 Probably not today. 10:04:03 shachaf: out of curiosity, which imperfect programming language are you using for this? 10:04:22 C. 10:05:45 Hmm. Fun. I expected C++ or Rust (well, no, but those are the ones I'd consider if I'd embark on this journey.) 10:06:47 -!- wib_jonas has joined. 10:06:48 (C++ mostly for sane namespaces... and probably vectors out of laziness) 10:07:12 I did give in and use https://github.com/nothings/stb/blob/master/stb_ds.h at one point. 10:07:14 int-e: out of curiosity, which programming language is not imperfect? 10:07:18 Not for inheritance, virtual methods, exceptions, or templates. 10:07:22 myname: Brainfuck. 10:07:28 how so 10:07:43 int-e: Vectors are great for SAT solvers because there's a lot of linear algebra involved. 10:07:53 myname: There's this quote. "There are two kind of programming languages. Those that everybody complains about and those that nobody uses." 10:08:05 myname: Brainfuck is pretty much perfect for what it does. 10:08:18 int-e: in this case, malbolge would be a lot better 10:08:32 No, Malbolge is overcomplicated. :P 10:08:46 I'm using these dynamic arrays for watch lists. But I suspect I'll replace them with some other data structure anyway eventually. 10:08:58 but a lot of people are "using" brainfuck 10:09:21 myname: The original purpose of Brainfuck was not to make programming hard. The purpose was to allow writing small compiler. 10:09:33 +a 10:10:33 shachaf: I'm not sure to what extend you're kidding about the linear algebra. 10:10:50 *extent 10:11:18 I think std::vector is useful because I often want to apply scalar multiplication to my arrays. 10:11:45 myname: The "imperfect" was an oblique reference to earlier discussions with shachaf about whether there are any good programming languages out there. 10:12:06 myname: We have yet to find one. 10:12:25 what about lambda calculus= 10:12:27 ? 10:13:09 We can't even agree on whether Haskell is a good programming language. 10:13:44 Good for what? 10:13:50 (I think yes. shachaf complains about the huge performance overheads. I can't say that he's wrong, it's just not the primary thing I'm looking for in a programming language most of the time.) 10:14:38 I don't think that's the only thing I complain about. 10:15:35 myname: Lambda calculus is a nice Turing tarpit, and somewhat surprisingly scales up to real programming (according to some people) if you add types, data types, and a few other things. 10:15:50 Can you give me a nice definition of PTIME and PSPACE for lambda calculus? 10:16:53 Sure, just use a graph model and measure term size and count reduction steps. 10:16:59 Maybe that's not nice enough for you. 10:18:01 Turing machines are obviously scow to program on. 10:18:02 (Hmm, I may have to go the explicit substituition route.) 10:18:04 * int-e shrugs. 10:18:08 int-e: well, typed lambda calculus is not that far away from haskell, isn't it? 10:18:25 But at least Turing machines are in spirit similar to actual machines. 10:18:25 myname: what did you think I meant by "real programming"? :P 10:19:21 okay 10:19:54 int-e: "term size" how? count the nodes with reusable reference-counted nodes, or serialize the expression so you can blow up space usage exponentially in time? 10:20:23 oh, you said graph model 10:20:39 so the former 10:21:22 Do you like stb_ds.h? 10:21:22 tbh, graph models are not very nice from a theoretical perspective. 10:21:59 If you really want to go *that* route maybe drop the lamdba calculus and do interaction nets instead. 10:22:00 petri nets! 10:22:22 no, not petri nets 10:22:44 :( 10:27:04 . o O ( I prefer multiset rewriting ;-) ) 10:28:21 ⟅1,1,2⟆ 10:28:44 unordered string rewrting = multiset rewriting = Petri nets if you interpret the symbols as places and the rules as transitions. 10:29:44 ⦃1,1,2⦄ 11:00:13 -!- kritixilithos has joined. 11:51:31 =list 11:51:31 8ball echo f msg1 simple wiki 11:51:39 =wiki xd 11:51:39 ..............................................................................xd 11:51:48 I need to set bitness 11:52:02 But I forgot how to do it 11:52:08 =f 11:52:13 =f aaa 11:52:19 =simple 11:52:19 simple 11:54:21 I need to update bfbot docs though on the wiki 12:12:20 -!- kritixilithos has quit (Ping timeout: 260 seconds). 12:12:26 -!- xkapastel has joined. 12:18:53 -!- arseniiv has joined. 12:53:50 @tell oerjan Well, I fixed it, but I don't know why. Something to do with using a host-side opened /dev/null fd instead of the UML 'null' channel for some inputs/outputs. I don't want to think about it any more. 12:53:50 Consider it noted. 12:59:07 fizzie: nice 13:01:35 -!- wib_jonas has quit (Remote host closed the connection). 13:09:58 -!- kritixilithos has joined. 13:46:13 [[Bfbot]] M https://esolangs.org/w/index.php?diff=67296&oldid=67265 * Palaiologos * (+265) 13:46:35 [[Bfbot]] M https://esolangs.org/w/index.php?diff=67297&oldid=67296 * Palaiologos * (+24) 13:47:38 -!- kspalaiologos has quit (Quit: Quit). 13:50:06 -!- kspalaiologos has joined. 13:50:47 Greetings 13:50:59 =help 13:50:59 bfbot is a bot executing brainfuck natively. You may add your very own commands to the bot. 13:50:59 Commands: =str =def =undef =list =plist =doc. More help at https://esolangs.org/wiki/bfbot 13:58:10 =list 13:58:10 8ball echo f msg1 simple wiki 13:58:17 =plist 13:58:17 8ball echo f msg1 simple wiki 13:58:49 =doc msg1 13:58:49 Error: no documentation for msg1. 13:59:01 =msg1 test 13:59:01 @APQ`apq.... 13:59:01 Unknown command, try @list 14:00:02 =help 14:00:02 bfbot is a bot executing brainfuck natively. You may add your very own commands to the bot. 14:00:02 Commands: =str =def =undef =list =plist =doc. More help at https://esolangs.org/wiki/bfbot 14:00:35 =str 0s >++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<] 14:00:35 ok 14:00:49 =def 0fib 14:00:49 ok, defined 'fib' 14:00:51 =fib 14:00:51 011235813213455891442333776109871597258441816765109461771128657463687502512139319641831781151422983204013462692178309352457857028879227465149303522415781739088169632459861023341551655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025203650110743295128009953 14:01:05 =list 14:01:05 8ball echo f fib msg1 simple wiki 14:01:15 =8ball test 123 14:01:15 It is certain. 14:01:55 =8ball anything 14:01:56 My reply is no. 14:02:12 =8ball A0 14:02:12 Yes - definitely. 14:03:17 =list 14:03:17 8ball echo f fib msg1 simple wiki 14:03:22 =echo test 14:03:23 test 14:03:25 what does msg1 do? 14:03:32 let's check 14:03:33 =msg1 14:03:33 @APQ`apq.... 14:03:33 Unknown command, try @list 14:03:37 oerjan possibly defined it 14:04:08 =msg1 oerjan 14:04:08 @APQ`apq.... 14:04:09 Unknown command, try @list 14:04:26 -!- sprocklem has quit (Ping timeout: 240 seconds). 14:04:53 fungot, tell me something 14:04:53 kspalaiologos: yep :) by the time i get is a single print statement... i've got quite the system in the next version of gambit is out real soon now 14:11:02 -!- kritixil1 has joined. 14:11:26 oops why are there two of me 14:12:02 -!- arseniiv has quit (Ping timeout: 240 seconds). 14:12:39 [[Asm2bf]] https://esolangs.org/w/index.php?diff=67298&oldid=67292 * Palaiologos * (+2181) Gisa part 14:12:44 -!- kritixilithos has quit (Ping timeout: 260 seconds). 14:12:47 -!- kritixil1 has quit (Client Quit). 14:13:09 -!- kritixilithos has joined. 14:13:29 -!- wib_jonas has joined. 14:13:54 kspalaiologos: no, I defined msg1 to experiment with the bot, since defining a command seems to be the easiest way to do that 14:14:12 I just defined various different temporary bf snippets to that command, and didn't bother deleting it 14:14:26 I wanted to check if the bot still isn't willing to print any non-ascii bytes 14:14:35 and apparently it still isn't 14:18:41 I will patch it 14:18:54 but I have added a new feature today 14:19:00 check the bot wiki page 14:19:45 =str 0s 3+[----->+++<]>+.++++++++++++..----.+++.+[-->+<]>.-----------..[--->+<]>.[--->+<]>----.----.---.-----------.+++++++++++++.-------.++++++++++++.+[++>---<]>.---[----->+<]>.+++.-----------.--[->+++<]>.++[--->++<]>+.+[->+++<]>+.++.--.----[->+++<]>.[,.] 14:19:45 ok 14:19:50 =def 0wiki 14:19:51 ok, defined 'wiki' 14:19:53 =wiki bfbot 14:19:53 ..............................................................................bfbot 14:19:59 gosh damn it man 14:20:02 why does it happen 14:20:12 -!- arseniiv has joined. 14:20:59 =str 0s 14:20:59 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>++.--<<<<<<<>>>>>>-.+<<<<<<>>>>>>-.+<<<<<<>>>> 14:20:59 ok 14:21:06 >>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+. 14:21:09 damn tooo long 14:21:41 =str 0s ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>>.>>----.++++----.++++<.+++.---<<<<<<<++.--<-.+-.+>>>>>>>---.+++>+++.----.+----.++++<<+.->>--.++<-.+>+++.---<<<<<<<<--.++>>>>>>>>-.+++.--<-.+<<<<<<<-.+>>>>>>>>>-.+<<+.-+++.---+.-<<<<<<<-.+<<<<<<. 14:21:42 ok 14:21:47 =def 0wiki 14:21:48 ok, defined 'wiki' 14:21:50 =wiki please work 14:21:50 https://esolangs.org/wiki/ 14:21:53 kinda 14:21:57 =str 0a [,.] 14:21:57 ok 14:22:00 =def 0wiki 14:22:00 ok, defined 'wiki' 14:22:02 =wiki bfbot 14:22:02 https://esolangs.org/wiki/ 14:22:09 that's kinda pants 14:22:20 =str 0a ,[.,] 14:22:20 ok 14:22:23 =def 0wiki 14:22:23 ok, defined 'wiki' 14:22:26 =wiki bfbot 14:22:26 https://esolangs.org/wiki/bfbot 14:22:28 yay 14:22:40 so you can check this page as it contains new features 14:22:42 -!- kspalaiologos has quit (Quit: Lost terminal). 15:01:37 -!- sprocklem has joined. 15:12:04 -!- kspalaiologos has joined. 15:16:15 [[User talk:Palaiologos]] https://esolangs.org/w/index.php?diff=67299&oldid=67260 * Palaiologos * (+156) 15:39:51 [[Brainfuck]] M https://esolangs.org/w/index.php?diff=67300&oldid=67293 * Palaiologos * (+1) Dead link? 15:56:47 `asmbf db_ 2/db_ 3/rcl r1,1 15:56:48 ​+>+[<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>>>>>>>>>>>>>++>>+++<<<<<<<<<<<<<+<<<<[-]>>>>[<<<<<+>>>>>>>>>>+>>>>>+<<<<<<<<<<-]<<<<<[>>>>>+<<<<<-]>>>>>>>>>>>>>>>[[>>]+[<<]>>-]+[>>]<[<[<<]>+<<<<<<<<<<<<<+>>>>>>>>>>>>>>[>>]<-]<[<<]>[>[>>]<+<[<<]>-]>[>>]<<[-<<]><<<<<<<<<[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]<<<[-]>[-]>>]<<] 15:57:37 `asmbf db_ 2/db_ 3/raw .*/rcl r1,1/raw .* 15:57:37 ​+>+[<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>>>>>>>>>>>>>++>>+++*<<<<<<<<<<<<<+<<<<[-]>>>>[<<<<<+>>>>>>>>>>+>>>>>+<<<<<<<<<<-]<<<<<[>>>>>+<<<<<-]>>>>>>>>>>>>>>>[[>>]+[<<]>>-]+[>>]<[<[<<]>+<<<<<<<<<<<<<+>>>>>>>>>>>>>>[>>]<-]<[<<]>[>[>>]<+<[<<]>-]>[>>]<<[-<<]><<<<<<<<<[-]*<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]<<<[-]>[-]>>]<<] 16:02:12 -!- xkapastel has quit (Quit: Connection closed for inactivity). 16:23:01 I came into realisation 16:23:07 that I spent this much time on codegolf 16:23:07 https://github.com/KrzysztofSzewczyk/codegolf-submissions 16:23:15 0x40 submissions 16:31:32 `asmbf sto r1, 2 16:31:33 ​+>+[<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>>++<<<<[<+>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<-]<[>+<-]>>>>>[<<<<<+>>>>>>>>>>>>>>+<<<<<<<<<-]<<<<<[>>>>>+<<<<<-]>>>>>>>>>>>>>>>[[>>]+[<<]>>-]+[>>]<[-]<[<<]>[>[>>]<+<[<<]>-]>[>>]<<[-<<]><<<<<<<<<[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]<<<[-]>[-]>>]<<] 16:31:45 `asmbf db_ 5/sto r1, 2 16:31:46 ​+>+[<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>>>>>>>>>>>>>+++++<<<<<<<<<<<++<<<<[<+>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<-]<[>+<-]>>>>>[<<<<<+>>>>>>>>>>>>>>+<<<<<<<<<-]<<<<<[>>>>>+<<<<<-]>>>>>>>>>>>>>>>[[>>]+[<<]>>-]+[>>]<[-]<[<<]>[>[>>]<+<[<<]>-]>[>>]<<[-<<]><<<<<<<<<[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]<<<[-]>[-]>>]<<] 16:38:51 -!- mint_ has joined. 16:40:01 I'm working on https://github.com/KrzysztofSzewczyk/asmbf/pull/28 now 16:40:17 so the memory I/O and stack operations will be a whole lot faster. 16:40:21 and smaller by a half 16:42:10 -!- mint_ has left. 16:51:04 -!- wib_jonas has quit (Remote host closed the connection). 17:07:45 -!- lf94 has left ("WeeChat 2.4"). 17:10:20 -!- kspalaiologos has quit (Quit: Leaving). 17:13:26 -!- Preacher883 has joined. 17:14:38 -!- kspalaiologos has joined. 17:16:42 -!- Preacher883 has left. 17:36:59 [[Graverage]] N https://esolangs.org/w/index.php?oldid=67301 * Challenger5 * (+1549) Created page with "Graverage is an automaton/esolang designed by [[User:Challenger5]]. === Program Structure === A Graverage program consists of: * A set of one or more objects, called points..." 17:46:08 -!- sprocklem has quit (Ping timeout: 245 seconds). 17:59:22 @tell oerjan greets! Are you the person who made Malbolge Unshackled? 17:59:22 Consider it noted. 17:59:27 I 17:59:31 'm genuinely curious 17:59:43 because I made a lot of malbolge unshackled programs 17:59:57 and an assembler that ultimately created my chess game in Malbolge 18:02:43 `? Ørjan 18:02:44 Your pal Ørjan is oerjan's good twin. He's banned in the IRC RFC for being an invalid character. Sometimes he publishes papers without noticing it. 18:14:25 -!- FreeFull has joined. 18:29:48 [[User:Palaiologos]] M https://esolangs.org/w/index.php?diff=67302&oldid=66264 * Palaiologos * (+354) Slight update 18:32:10 [[EsoInterpreters]] https://esolangs.org/w/index.php?diff=67303&oldid=63677 * Palaiologos * (+191) Deadfish interpreter in Malbolge Unshackled 18:32:35 So I wrote deadfish interpreter in Malbolge 18:32:36 Requires 3,5 gigabytes of RAM to operate. 18:33:06 after it hogs up 20% of your memory, it slowly starts responding to commands at a rate of one per 10 seconds 18:40:23 -!- kritixilithos has quit (Quit: tixe\). 18:43:38 -!- bfbot has quit (Ping timeout: 240 seconds). 18:47:24 -!- b_jonas has joined. 18:59:20 what happened 18:59:24 to my bfbot 18:59:33 may it be outage? 19:00:02 -!- bfbot has joined. 19:23:45 -!- lambdabot has quit (Remote host closed the connection). 19:30:17 -!- lambdabot has joined. 19:30:34 =echo hello bfbot 19:30:34 hello bfbot 19:31:07 =echo @botsnack 19:31:07 @botsnack 19:31:15 :) 19:31:37 =echo @echo =echo hello 19:31:38 @echo =echo hello 19:31:45 echo; msg:IrcMessage {ircMsgServer = "freenode", ircMsgLBName = "lambdabot", ircMsgPrefix = "bfbot!~bfbot@206.ip-51-91-102.eu", ircMsgCommand = "PRIVMSG", ircMsgParams = ["#esoteric",":@echo =echo 19:31:51 hello"]} target:#esoteric rest:"=echo hello" 19:32:07 =echo @run var"=echo hello" 19:32:08 @run var"=echo hello" 19:32:17 =echo hello 19:32:32 uh oh 19:32:45 these two could be looped 19:35:45 =set 1s. 19:35:45 No such command. Try =help. 19:35:50 =str 1s. 19:35:50 ok 19:35:58 =def 1msg1 19:35:58 ok, defined 'msg1' 19:35:59 =msg1 19:36:48 =set 1s++++[->++++<]>[->++++<]>+.... 19:36:48 No such command. Try =help. 19:36:52 =str 1s++++[->++++<]>[->++++<]>+.... 19:36:52 ok 19:36:54 =def 1msg1 19:36:54 ok, defined 'msg1' 19:36:56 =msg1 19:36:56 AAAA 19:36:59 =def 1msg0 19:36:59 ok, defined 'msg0' 19:37:00 =msg0 19:37:01 AAAA 19:37:19 =echo @run (\s -> var (s ++ show s))"=echo @run (\\s -> var (s ++ show s))" 19:37:19 @run (s -> var (s ++ show s))"=echo @run (\s -> var (s ++ show s))" 19:37:21 :1:39: error: 19:37:21 lexical error in string/character literal at character 's' 19:38:05 =echo @run (\ s -> var (s ++ show s))"=echo @run (\\s -> var (s ++ show s))" 19:38:05 @run ( s -> var (s ++ show s))"=echo @run (\s -> var (s ++ show s))" 19:38:07 :1:40: error: 19:38:07 lexical error in string/character literal at character 's' 19:38:21 it mangles the backslashes? 19:38:32 whoa 19:41:13 @run (\s -> (var . tail . init . show) (s ++ show s))"=echo @run (\\s -> (var . tail . init . show) (s ++ show s))" 19:41:14 =echo @run (\\s -> (var . tail . init . show) (s ++ show s))\"=echo @run (\\... 19:41:20 ah, too long 19:43:14 @run (var.ap(++)show)"=echo @run (var.ap(++)show)" 19:43:17 =echo @run (var.ap(++)show)"=echo @run (var.ap(++)show)" 19:43:24 -!- sprocklem has joined. 19:44:04 =echo @run (var.ap(++)show)"=echo @run (var.ap(++)show)" 19:44:04 @run (var.ap(++)show)"=echo @run (var.ap(++)show)" 19:44:06 =echo @run (var.ap(++)show)"=echo @run (var.ap(++)show)" 19:49:33 -!- atriq has changed nick to Taneb. 19:50:51 -!- subleq has quit (Ping timeout: 246 seconds). 19:52:36 -!- subleq has joined. 19:59:39 =str 1s+++++++++++[->+++++++++<]>-----.+++++++++++++++++++.++++.------------.+++++.---------. 19:59:39 ok 19:59:48 =str 0s. 19:59:48 ok 20:00:06 =str 0s++++[->++++<]>[->++++<]>+.... 20:00:07 ok 20:00:11 =def 0msg1 20:00:11 ok, defined 'msg1' 20:00:13 =msg1 20:00:13 AAAA 20:00:40 ^def quine ul (=quine)S 20:00:40 Defined. 20:00:47 =def 1quine 20:00:48 ok, defined 'quine' 20:00:49 =quine 20:00:49 ^quine 20:00:58 ^quine 20:00:58 =quine 20:00:58 ^quine 20:04:27 =echo `thanks bfbot 20:04:27 `thanks bfbot 20:04:28 Thanks, bfbot. Thot. 20:05:04 =echo `echo =echo `thanks bfbot 20:05:04 `echo =echo `thanks bfbot 20:05:06 ​=echo `thanks bfbot 20:06:12 ^echo =echo hello 20:06:12 =echo hello =echo hello 20:06:13 hello =echo hello 20:25:53 -!- kspalaiologos has quit (Quit: Leaving). 20:26:24 -!- wmww has quit (*.net *.split). 20:28:16 -!- kspalaiologos has joined. 20:28:45 b_jonas: check the wiki page, I added a few modes for Brainfuck interpreter 21:02:45 -!- hppavilion[1] has joined. 21:03:31 hello hppavilion 21:05:32 -!- arseniiv_ has joined. 21:09:53 -!- Lykaina_ has joined. 21:11:04 -!- Hooloo42 has joined. 21:12:17 -!- arseniiv has quit (Read error: Connection reset by peer). 21:12:17 -!- Hooloovo0 has quit (Remote host closed the connection). 21:12:17 -!- relrod has quit (Ping timeout: 240 seconds). 21:12:17 -!- Lykaina has quit (Ping timeout: 240 seconds). 21:12:55 -!- relrod has joined. 21:12:57 -!- relrod has quit (Changing host). 21:12:57 -!- relrod has joined. 21:18:47 -!- xkapastel has joined. 21:28:16 -!- kiwi-doorframe has joined. 21:29:42 -!- kiwi-doorframe has quit (Client Quit). 21:36:29 -!- hppavilion[1] has quit (Ping timeout: 276 seconds). 21:43:28 -!- hppavilion[1] has joined. 21:55:20 -!- hppavilion[1] has quit (Ping timeout: 276 seconds). 22:08:15 -!- kspalaiologos has quit (Ping timeout: 265 seconds). 22:12:04 -!- arseniiv_ has quit (Quit: gone completely :o). 22:16:30 -!- hppavilion[1] has joined. 22:26:43 -!- hppavilion[1] has changed nick to \. 22:26:52 <\> Weird that this is allowed. 22:26:58 -!- \ has changed nick to hppavilion[1]. 22:28:10 hppavilion[1]: it technically is, but I think you won't be able to hold that nick for long, because NickServ will nick you out from it 22:30:58 >ː( 22:32:24 -!- sprocklem has quit (Ping timeout: 252 seconds). 22:36:07 `` echo $HOME # Hm, I didn't realize this was set. 22:36:09 ​/tmp 22:36:43 Guess it's usual for HackEso-golfing, since ~ is shorter than /tmp. 22:36:46 s/usual/useful/ 22:42:57 ok this is wierd: ~ is not actually a valid character in an IRC nickname, and if you try to nick to a nickname containing it, you get an error. but if you whois ~[ the server knows that it's case-insensitively the same as the valid nick ^[ and gives you answer about him. 22:43:49 I wonder if this is because it is a valid nickname character on other servers so freenode tries to be compatible or something 22:48:04 I guess arguably if you say "CASEMAPPING=rfc1459" you should use that case-mapping, even if ~ isn't supported. 22:48:19 (Wasn't this network ascii at some point?) 22:48:39 fizzie: the casemapping matters for channel names 22:48:50 fizzie: and yes, the casemapping on freenode changed when they changed services 22:49:04 and I still don't know what they did with nickserv registrations that suddenly started to clash 22:49:11 or channel registrations 22:49:19 but all that is old history, they changed very long ago 22:53:49 Hm, I wonder why umlbox has code to cfmakeraw() on the input/output terminals, and why it enables that if the output (outside UML) is *not* going to a terminal. 22:54:45 [[Turing Machine But Way Worse]] https://esolangs.org/w/index.php?diff=67304&oldid=63107 * Ais523 * (+824) /* Computational class */ TC 22:55:11 i thought that was the use of "raw" mode: specifically for 22:55:17 that sounds like a good thing to me 22:59:18 Maybe that makes sense. I'm just not sure what effect it has here. 23:01:11 The commit message just says "Make sure everything is uncooked." 23:03:10 my understanding is unixy things assumes serial devices have a terminal, so you generally want to set the device to "raw" if you arent running getty or whatever on it 23:03:20 s/have a terminal/& attached/ 23:03:57 in other words, unixy things might "translate" i/o back and forth on that serial port unless you set "raw" mode to tell it "dont mess with the data flowing" 23:04:39 "translate" meaning alter/otherwise mangle/etc. 23:06:57 -!- hppavilion[1] has quit (Ping timeout: 240 seconds). 23:08:31 as to how is this relevant to non-serial ports, e.g. pseudo-terminal devices, my guess is that is what they are "modelling" or "impersonating" 23:13:56 Well, I'm just wondering what the UML kernel does, and how that will change if you connect the thing to a tty vs. a non-tty. 23:14:09 I've definitely noticed that, in verbose mode when redirecting output, it leaves the actual outside-UML terminal in a raw mode (or at least disables echo), which I think happens because it sees the stdout isn't a tty, so it sets raw mode even for the verbose output, which is in fact connected to a tty. 23:14:14 So it does some amount of "forwarding" of these attributes. 23:18:16 -!- FreeFull has quit. 23:36:16 fungot, what are the two most famous operas written by Rossini? 23:36:16 b_jonas: except in really well chilled glass bottle of fnord, because i haven't personally inspected the c it generated myself. ( stalin's c was just right, but the last verse is missing. 23:36:33 um 23:36:35 ok 23:37:12 For the record, it's probably talking about Stalin, the optimizing Scheme compiler. 23:37:14 -!- subleq has quit (Ping timeout: 240 seconds). 23:38:11 he does make some sense, for a chilled glass bottle may be just as classy as an opera 23:38:20 stalin singing a C note 23:39:15 -!- subleq has joined. 23:44:00 yes, that too 23:44:53 so how about Guillaume Tell, fungot? 23:44:53 b_jonas: here was my take on this is that someone has had the fnord thing strikes me as special compared to what? most literal regular fnord literal... 23:45:28 by the way, I checked, it seems that all the lines that I added to the quotes file still survive, except for the one that I quikcly deleted myself 23:46:38 some of the lines quoting me seem somewhat pointless on the other hand, and may be worth to delete if other people don't see their point either 23:46:44 -!- sprocklem has joined. 23:46:56 `quote 1215 23:46:56 1215) fungot, do you like running double exponential time algorithms? b_jonas: im not sure 23:48:25 `quote 1323 23:48:26 1323) I don't care for the bf backend as long as it doesn't make the rest of ayacc harder to sue 23:48:33 on the other hand there are these two related entries: 23:48:36 `wisdom ^ 23:48:37 ​hppavilion^k//hppavilion^k is a k-tuple of elements of hppavilion. 23:48:46 `? ^ 23:48:47 ​^ (also notated by ⊕ or ⊻) is the exclusive-or operator; ∧ (also notated by /\ or &) is the and (conjunction) operator; ^ (also notated by ↑ or ** or ⋆) is the power operator. 23:49:02 `quote 1260 23:49:03 1260) shachaf: different notation. -o is logical or in find, but it's linear implication in linear logic