00:01:13 -!- Sgeo has quit (Ping timeout: 268 seconds).
01:03:13 <shachaf> fizzie: Huh, now that I'm looking at this ABI, %rdx contains a function pointer that the program is supposed to call atexit.
01:03:46 <HackEso> 62) <Sgeo|web> Where's the link to the log? <lament> THERE'S NO LOG. YOUR REQUEST IS SUSPICIOUS AND HAS BEEN LOGGED.
01:26:18 -!- MDude has quit (Ping timeout: 245 seconds).
01:32:21 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:39:23 <int-e> shachaf: hmm, could it be for __attribute__((destructor)) cleanup?
01:42:25 <shachaf> int-e: Why would the kernel pass that to _start?
01:42:33 <shachaf> It seems like strictly a userspace thing.
01:51:23 <kmc> is it for that wacky robust futex thing
01:52:29 <shachaf> Oh, I didn't know about that thing.
01:52:51 <kmc> the userspace maintains a linked list of futices and tells the kernel where it is
01:52:52 <shachaf> But presumably if a program crashes it won't run its atexit handlers.
01:53:04 <kmc> it was not a very good guess
01:57:20 <int-e> shachaf: have a look at https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S;h=24d59159a9b46e3edd548bfd2f1b1924c6c2eb29;hb=HEAD#l41
01:58:08 <shachaf> OK, it's for the dynamic linker. I was vaguely thinking about that but it looks like it's part of the ABI even for statically linked programs.
01:58:13 <shachaf> I guess it's just the same ABI?
01:58:41 <kmc> what's the purpose though
01:58:50 <int-e> I'm not sure whether the part where the kernel passes control to the dynamic linker is actually part of the ABI.
01:59:24 <kmc> isn't the dynamic linker the ELF interpreter
01:59:33 <kmc> and it just passes control to the entry point of said interpreter
01:59:38 <shachaf> I didn't even know the kernel mapped in any executable memory other than the program text and VDSO.
02:03:05 -!- MDude has joined.
02:21:45 <shachaf> I was looking in the Linux repository to see what it sets rdx to.
02:22:01 <shachaf> I haven't found it, but I did find https://github.com/torvalds/linux/blob/master/tools/include/nolibc/nolibc.h#L430 which just ignores rdx, so presumably it's not that important/
02:35:27 <int-e> shachaf: the interpreter entry point seems to make no attempt to look at or preserve %rdx: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/dl-machine.h;h=95a13b35b5d27d8619422d3c5cc896f0ff1663c4;hb=HEAD#l141
02:36:07 <int-e> So basically, the same conclusion, but this time from the glibc side.
02:38:26 <int-e> (the function that is called takes only one argument)
02:39:52 <int-e> OTOH, the stack layout corresponds to reality even for rtdl.
02:41:40 <shachaf> Is that the code for ld-linux?
02:42:09 <int-e> I'm pretty sure it is (well, as small part of it)
02:43:30 <int-e> most of it is in https://sourceware.org/git/?p=glibc.git;a=blob;f=elf/rtld.c
02:43:50 <int-e> (and other files in the elf/ subdirectory)
02:44:11 <int-e> (but rtld is the "main program".)
02:44:24 <shachaf> OK, https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S#l79 says it's the "shared library termination function".
02:45:55 <int-e> yeah I linked to line 41 of that particular file earlier.
02:46:28 <shachaf> I looked at that file earlier but didn't see that comment.
02:46:33 <int-e> it's okay... I do this all the time (figuring things out myself)
02:47:04 <shachaf> I'm still curious, though. What does the kernel put in that register? Is it an address I can jump to?
02:47:36 <shachaf> I guess I can find out easily enough.
02:47:57 <int-e> I suspect the kernel doesn't put anything in that register.
02:48:03 <kmc> i love this kind of wild goose chase
02:49:20 <int-e> okay, the kernel should put safe values into the registers that don't leak any information. 0 if fine :)
02:49:25 <shachaf> kmc: i want to write a compiler so i gotta know these things
02:49:26 -!- oerjan has joined.
02:51:06 <kmc> why are you writing a compiler
02:51:20 <shachaf> how else do i program computers
02:52:35 -!- Sgeo__ has joined.
02:55:44 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
03:04:42 <int-e> shachaf: https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/elf.h#L172-L186
03:05:29 <shachaf> int-e: Aha. I was searching for "rdx".
03:05:52 * int-e started from binfmt_elf.c
03:06:09 <int-e> (irritatingly under fs/)
03:07:40 <shachaf> /* ax gets execve's return value. */
03:08:04 <shachaf> The Linux conspiracy doesn't want you to know what execve returns on success.
03:09:17 -!- FreeFull has quit.
03:09:46 <int-e> oh wait... I was wondering why the kernel doesn't just load the interpreter... but the process may not have the right to open&mmap the executable file...
03:10:06 <int-e> So that's one less mystery...
03:14:29 <kmc> shachaf: did you see geofft's userspace exec thing
03:14:39 <kmc> actually i'm not sure if I'm remembering it right
03:14:56 <int-e> one funny thing is https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c#L1165-L1177
03:15:07 -!- xkapastel has joined.
03:15:15 <shachaf> kmc: Simulating exec from userspace?
03:15:30 <shachaf> I looked for and found a thing like that a while ago. I don't remember geofft being involved.
03:16:06 <int-e> because the comment is specifically about the i386 ABI, it says something about populating %edx, but if you look at https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/elf.h#L109-L114 then there's no effort to set dx :)
03:16:47 <kmc> maybe i'm confused
03:16:55 <kmc> i'm usually confused about something or another
03:17:00 <shachaf> i,i maybe they're setting the lower 16 bits of dx to 0 but the upper 16 bits make it a valid function pointer
03:17:07 <kmc> dazed and confused but trying to continue
03:17:39 <int-e> shachaf: I'm pretty sure the dx field covers all of edx.
03:18:02 <int-e> shachaf: just like on x86_64 the dx field covers all of rdx.
03:20:35 <int-e> oh... #define ELF_PLAT_INIT(_r, load_addr) elf_common_init(¤t->thread, _r, 0) ... what a nice local name space we have here.
03:21:03 <int-e> but that's enough (useless, mostly) code reading.
03:21:17 <int-e> (though interesting)
03:21:47 <kmc> that's not enough underscores
03:21:51 <kmc> it should be _______r at least
03:25:02 <esowiki> [[Doug]] N https://esolangs.org/w/index.php?oldid=64552 * Areallycoolusername * (+4080) Created page with "'''Doug''' is an [[Arch]]-based [[esoteric programming language]] made by [[User: Areallycoolusername|Areallycoolusername]]. All commands are meant to be a quote by Fairly Odd..."
03:41:53 <esowiki> [[Doug]] M https://esolangs.org/w/index.php?diff=64553&oldid=64552 * JonoCode9374 * (-3)
03:58:30 <HackEso> #!/bin/sh \ echo "$1" > tmp/input.brachylog \ (cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), write(" \ true."), !, halt; write(" \ false."), !, halt' brachylog.pl)
04:07:59 <oerjan> `` ls -l bin/\! bin/interp
04:08:00 <HackEso> -rwxr-xr-x 1 1000 1000 109 Jul 17 22:26 bin/! \ -rwxr-xr-x 1 1000 1000 101 Jan 13 2019 bin/interp
04:08:26 <HackEso> https://hack.esolangs.org/repo/log/tip/bin/%5C%21
04:09:30 <oerjan> *sigh* it was a symbolic link
04:09:45 <kmc> what is swipl
04:10:50 <oerjan> `` ln -s interp bin/\!
04:11:09 <oerjan> `` ls -l bin/\! bin/interp
04:11:09 <HackEso> lrwxrwxrwx 1 1000 1000 6 Jul 19 04:10 bin/! -> interp \ -rwxr-xr-x 1 1000 1000 109 Jul 19 04:10 bin/interp
04:12:44 <kmc> is prolog good
04:12:54 <kmc> should i use prolog
04:14:01 <shachaf> did you know prolog is almost the same thing as index notation
04:18:35 <kmc> because i don't remember what index notation is
04:31:15 <int-e> I don't believe in Prolog.
04:36:23 <int-e> (There may be a discrepancy between how Prolog is taught... or at least taught to me... as a language for solving propositions ("logic programming")... and how it can realistically be used to good effect... namely a DSL for working with unification and very disciplined backtracking.)
04:37:37 <\oren\> I don't understand what problem Prolog was designed to solve
04:38:21 <shachaf> https://en.wikipedia.org/wiki/Boolean_Pythagorean_triples_problem
04:39:36 <int-e> shachaf: that made mainstream news a few years back, as "the largest mathematical proof".
04:40:39 <int-e> I'm actually not 100% sure whether they managed to certify the whole thing.
04:42:37 <\oren\> I guess that is a pretty legitimate need for something like prolog
04:42:49 <int-e> Eh, I should clarify. There's a certification format for SAT problems (called DRAT). There's a C tool (complicated, but far simpler than a SAT solver) that can certify (and prune) such proofs. There have been recent efforts to have formally verified certifiers.
04:43:04 <int-e> \oren\: Prolog doesn't scale to that size.
04:43:29 <int-e> shachaf: wait are you saying that this is what Prolog was invented for?
04:45:27 <int-e> \oren\: Prolog makes for an awful SAT solver because it doesn't do any of the stuff that makes DPLL fast -- variable selection heuristics, restarts, and, most importantly, conflict-driven clause learning. The latter is so important in fact, that parts of the community is talking about CDCL solvers rather than DPLL solvers.
04:46:26 <shachaf> int-e: Do you know whether DPLL solvers actually do pure literal elimination?
04:47:29 <shachaf> int-e: By the way, it's interesting that this proof was parallelized on many machines.
04:47:41 <int-e> \oren\: Prolog fails by not being declarative; it has side effects and a fixed order of evaluation. So such optimizations are completely ruled out. A more modern approach is https://en.wikipedia.org/wiki/Answer_set_programming which seems to be declarative.
04:47:53 <shachaf> Apparently they used a lookahead solver first to decide which variables to split the problem on, and then ran a CDCL solver on each subinstance.
04:48:10 <\oren\> " its original intended field of use, natural language processing."
04:48:38 <int-e> shachaf: Not as part of DPLL. They may do cross-resolution (resolve each clause that contains P with each clause that contains -P, then drop all clauses referring to P) of which pure literal is a special case.
04:48:39 <\oren\> oh, the unbounded optimism of the 1970's
04:49:06 <int-e> \oren\: yeah, and expert systems.
04:50:14 <int-e> SAT solvers are awful in that nobody really wants to write clauses (or even circuits to feed into a Tseitin transformation)
04:57:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64554&oldid=64551 * A * (-2842)
04:58:00 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64555&oldid=64554 * A * (+145) /* An arch is simply a curve. */
04:58:20 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64556&oldid=64555 * A * (+2779)
04:58:40 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64557&oldid=64556 * A * (-2779) /* Hey stack! */ Huh
04:59:16 <\oren\> http://orenwatson.be/dups.htm
05:00:01 <\oren\> I've sucessfully created a program to automatically list all characters in my font that have identical glyphs
05:01:03 <int-e> tbh that doesn't sound very impressive
05:02:09 <\oren\> it took not much effort except actually bothering to write the damn program
05:03:04 <\oren\> http://orenwatson.be/bdf_dups_test.htm
05:06:35 <int-e> needs more spaces and line breaks
05:12:17 <\oren\> It's just the "dumb" algorithm of loading the entire font into memory like my editor does, then sorting it on the bitmaps
05:13:13 <\oren\> and then listing the ones that compare equal
05:16:28 <\oren\> I also came up with a stupid way to efficiently show the names
05:17:19 <\oren\> by mmapping the unicode database text and getting a list of pointers to where the names are
05:18:10 <\oren\> (... why do I have to open a file first before I can mmap it?)
05:18:44 <int-e> I would probably have done something more stupid. Like, extract each character as a separate bitmap (surely there must be a tool for that), then hash and sort in the shell. :P
05:19:01 <int-e> because mmap doesn't check permissions
05:22:02 <\oren\> I should make my *editor* show the unicode character names...
05:24:42 -!- xkapastel has quit (Quit: Connection closed for inactivity).
05:46:34 -!- Sgeo_ has joined.
05:48:47 -!- john_metcalf has quit (Ping timeout: 245 seconds).
05:49:37 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
05:49:37 -!- heroux has quit (Ping timeout: 245 seconds).
05:49:45 -!- heroux has joined.
06:39:48 -!- nfd has quit (Read error: Connection reset by peer).
06:58:22 -!- moei has joined.
07:17:07 -!- Sgeo__ has joined.
07:20:02 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
07:21:24 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
07:23:40 -!- Lord_of_Life has joined.
07:32:06 -!- Sgeo_ has joined.
07:35:57 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
07:42:45 <b_jonas> \oren\: nice. although you might also want to try to find double-width characters of which both the left and right half looks identical to some single-width character, such as " " which looks like " "
07:46:25 <b_jonas> and, technically, you would also have to find longer chains of characters where a sequence of double-width characters looks identical to a one shorter sequence of doublewidth characters flanked between two single-width characters.
07:52:12 <oerjan> <b_jonas> no, they are no longer bent to use puzzles: http://www.irregularwebcomic.net/draakslair/viewtopic.php?p=173108#173108 <-- i was going to follow that link and then realized that would trigger the BB's stupid "forget all about what i haven't read in a few hours" feature, unless i then go on to read it all immediately, which i wasn't planning to.
07:53:47 <oerjan> well, might. i'm not entirely sure what circumstance triggers it.
07:57:11 * oerjan checks out cpressey's link instead, but thinks he's seen that before
07:59:52 <HackEso> 1/1:broily//broily is like boily, but more broiling. \ marriage//Marriage was made legal in the United States on 2015-06-26. \ glass//I can eat glass and it doesn't hurt me. -- http://www.savagechickens.com/2016/05/new-diet.html \ otoh//OTOH means "On the omnipotent hand". \ ü//ü is the ridiculously happy second derivative of the letter ‘u’ with respect to time.
08:10:41 <oerjan> <\oren\> if oiseau is "wazo" then is oieau "wao"? <-- wiktionary refuses to confirm tdnh
08:19:24 <b_jonas> oerjan: uh, check it from a different browser profile so the forum doesn't recognize you? or should I just quote it for you?
08:20:26 <b_jonas> it's a message by DMM from 2019-04: "We'd love to, but honestly our interests seem to have moved on somewhat from the intense puzzle creation necessary to organise an entire competition. We have some ideas and some completed puzzles in the bank, but the motivation for making more puzzles pulling it all together is at a bit of a low ebb right now. I'm hoping we'll return to it. Can't promise anything
08:20:57 <b_jonas> replying to someone asking when there'll be a next mezacotta puzzle hunt
08:21:16 <b_jonas> so it doesn't specifically say no to all puzzles, just that format
08:21:36 <b_jonas> they could have a droidikar second set crossword puzzle
08:21:53 <b_jonas> or, technically, more Eavesdropper puzzles
08:22:23 * oerjan decided not to follow Eavesdropper after a few posts
08:22:29 <oerjan> didn't feel like my thing
08:23:02 <b_jonas> or more single puzzles like http://www.irregularwebcomic.net/3976.html annot
08:23:06 <oerjan> anyway, i'm forgetting to eat _and_ to shave, so ->
08:23:16 -!- oerjan has quit (Quit: Later).
08:23:51 <b_jonas> oerjan: it took me longer to decide I don't like the eavesdropper story, but I'm glad DMM seems to have given up working on it
08:24:19 <b_jonas> the puzzles are hit and miss, but there were a few especially giid ones:
08:24:52 <b_jonas> https://alcohol.stackexchange.com/q/7036
08:25:12 <b_jonas> do you also have an excuse to not visit pages on SE?
08:31:31 -!- AnotherTest has joined.
08:38:19 -!- b_jonas has quit (Quit: leaving).
09:04:55 -!- arseniiv has joined.
09:47:11 -!- wob_jonas has joined.
10:12:58 -!- wob_jonas has quit (Remote host closed the connection).
10:19:32 -!- atslash has quit (Read error: Connection reset by peer).
10:19:56 -!- atslash has joined.
10:32:42 -!- unlimiter has joined.
10:48:07 -!- unlimiter has quit (Quit: still confused).
11:12:13 -!- atslash has quit (Ping timeout: 246 seconds).
11:14:54 -!- atslash has joined.
11:25:52 -!- atslash has quit (Ping timeout: 272 seconds).
11:26:47 -!- atslash has joined.
11:46:54 -!- cpressey has joined.
12:02:53 <cpressey> int-e: I agree about Prolog; I mean, I like logic and all, but I'm not convinced that it's very good for *programming* in.
12:03:41 <cpressey> Its biggest contribution imo was to show that it's possible.
12:06:08 <cpressey> Relatedly, I would love to know what this programming language actually looks like: https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#Sequent_calculus
12:07:00 <cpressey> but I can't find a reference on that page, and I haven't had time to hunt for it.
12:11:38 -!- wob_jonas has joined.
12:12:07 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64558&oldid=64557 * A * (+70)
12:12:30 <wob_jonas> cpressey: right, that's more or less what I thought when I made the esoteric language Olvasható, which lets me program prolog as if it were an ordinary functional language, without its special logic programming and unification parts.
12:24:44 <cpressey> wob_jonas: reading the esowiki entry for it, I shudder to imagine what the instructor thought of this answer for their homework assignment :)
12:25:37 <wob_jonas> cpressey: well, the instructor who scored the prolog code said that he found it easier to read the produced prolog code of the program than the olvashato input, but yeah, both were ugly
12:25:54 <wob_jonas> another instructor scored the sml code output, and I don't know what he said
12:27:13 <fizzie> I wrote a Scheme interpreter in Prolog as homework once, but I can't remember what the task specification was. It may even have been something like writing an interpreter for something, although that does sound maybe slightly odd for a Prolog assignment.
12:27:17 <wob_jonas> the same instructor who taught prolog for that course later held a more advanced course for us about constraint logic programming (clp) in prolog.
12:28:10 <wob_jonas> for that, I reused the closure representation from olvashato
12:28:13 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64559&oldid=64553 * Areallycoolusername * (+1644) Revamped the page
12:28:32 <wob_jonas> fizzie: yes, that might actually be saner, an interpreter plus code
12:28:58 <wob_jonas> prolog handles that sort of thing quite naturally because it keeps messing with tree-like data all the time
12:29:02 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=64560&oldid=64499 * Areallycoolusername * (+11)
12:30:44 <esowiki> [[Joke language list]] https://esolangs.org/w/index.php?diff=64561&oldid=63686 * Areallycoolusername * (+11) /* General languages */
12:30:46 <wob_jonas> the exam for that latter course was memorable to me: it had a task where I had to write prolog code on paper, and I managed to write a correct answer that the instructor thought was buggy, so I had to trace the execution on paper to prove that it worked
12:31:57 <wob_jonas> that one came up on https://esolangs.org/logs/2019-03-26.html last
12:33:41 <fizzie> Looks like the only Prolog-special thing about this Scheme interpreter is that it implements (amb ...).
12:36:02 <fizzie> (Modeled after the SICP chapter, https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-28.html )
12:36:18 <wob_jonas> fizzie: what method do you use to represent the scheme mutable state in prolog?
12:36:28 <wob_jonas> there's like ten different ways for that, most of them awkward or nonportable
12:37:01 <fizzie> I'm not sure I can decipher it out from the code, to be honest.
12:37:02 <wob_jonas> there's assert-based ones, extensions for global variables, extensions for mutable terms, and making the whole thing functional
12:37:32 <fizzie> I think it's the third option on your list.
12:37:37 <fizzie> https://www.swi-prolog.org/pldoc/man?predicate=setarg/3
12:37:57 <wob_jonas> the first two has the drawback that you somehow have to gensym atoms (symbols) or something, the second and third are based on nonportable extensions, the third really works badly with the rest of the prolog language, etc
12:38:01 <fizzie> I think I didn't want to spend too much effort on it.
12:38:24 <wob_jonas> fizzie: sure. how many obscure bugs did you have to debug that turned out to come from setarg?
12:38:42 <fizzie> Well, I mean, it didn't have to run a thorough Scheme check suite. :p
12:38:48 <fizzie> I think it did run non-trivial programs though.
12:39:09 <fizzie> call/cc this does via something CPS-ish.
12:39:56 <fizzie> At least judging from ps_apply_builtin(callcc, Args, K, E, SE) :- ... ps_apply(k(apply, E, SE, Proc, [cont(K)], K), void).
12:42:25 <wob_jonas> fizzie: can it run this? (((lambda (fact) (set! fact (lambda (n) (if (< n 1) 1 (* n (fact (- n 1)))))) fact) 0) 5)
12:43:22 <fizzie> I'll test if I can figure out how to actually get to the REPL.
12:43:47 <cpressey> I've never written a Scheme interpreter in Prolog, but I did write a (nano) Prolog interpreter in Scheme once.
12:44:20 <fizzie> This is also from 2005, so it may well have bitrotted away when it comes to current SWI-Prolog version.
12:44:23 <cpressey> Actually, that was just last year. Wanted to refresh/confirm to myself that I knew basically how a Prolog interpreter works.
12:45:00 <cpressey> In the Scheme world, everyone seems to prefer miniKanren though.
12:45:16 <cpressey> (To implement, I mean. Dunno about actually using.)
12:45:40 <fizzie> wob_jonas: Sorry, it's not looking good w.r.t. running anything: http://ix.io/1OTN
12:46:59 <fizzie> Slightly odd, though. I would've expected some error from the Prolog side, not a syntax error from the interpreter itself.
12:48:04 <fizzie> (It's failing while attempting to load the bit of Scheme syntax that has been implemented via macros.)
13:01:08 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64562&oldid=64534 * Areallycoolusername * (+21)
13:07:33 <cpressey> I had some hopeful thoughts that Docker might help bitrot. Like imagine there was a Docker container that had SWI-Prolog circa 2005 installed on it, you could just run it from that. It's never that simple though.
13:08:53 <cpressey> I guess I should say, it's rarely that simple. I refuse to give up all my hopeful thoughts on that.
13:10:05 <cpressey> The source code for early versions of xpuyopuyo is still available, but it uses GTK+ 1.2, so what are my chances of building it? Almost zero.
13:13:14 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64563&oldid=64562 * Areallycoolusername * (+79) /* Languages */
13:14:01 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64564&oldid=64563 * Areallycoolusername * (+0)
13:21:11 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64565&oldid=64559 * Areallycoolusername * (-11) /* Hello World Program */
13:23:31 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64566&oldid=64565 * Areallycoolusername * (+188) /* Variables, Ifs, and for */
13:23:58 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64567&oldid=64566 * Areallycoolusername * (+0) /* Variables, Ifs, and for */
14:07:36 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64568&oldid=64535 * ThisIsTheFoxe * (+20) added my language :)
14:09:30 <cpressey> According to https://esolangs.org/wiki/Deadfish there is not yet an implementation of Deadfish in Prolog!
14:29:08 <fizzie> Heh, thought I'd check if there are any odd local changes in that code. "The working copy -- is too old (format 4) to work with client version '1.10.4 (r1850624)' (expects format 31). You need to upgrade the working copy first."
14:31:56 <wob_jonas> fizzie: even without upgrading, you can diff it to the repository copy
14:32:37 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64569&oldid=62563 * Areallycoolusername * (+228) Proposing new category
14:41:29 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64570&oldid=64569 * Areallycoolusername * (+390)
14:41:44 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64571&oldid=64570 * Areallycoolusername * (+1) /* Proposed Categories: Arch-based and Bootstraped */
15:59:03 -!- wob_jonas has quit (Remote host closed the connection).
15:59:44 -!- cpressey has quit (Quit: WeeChat 1.4).
16:29:09 <esowiki> [[Dbondb]] N https://esolangs.org/w/index.php?oldid=64572 * Sideshowbob * (+2116) Created page with "DBonDB is an esoteric programming language created by [[User:Sideshowbob]]. DBonDB is derived from Dartmouth BASIC, the first BASIC, which was introduced in 1964. Hence the n..."
16:32:31 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64573&oldid=64568 * Sideshowbob * (+13) /* D */
16:39:10 <esowiki> [[User:Sideshowbob]] N https://esolangs.org/w/index.php?oldid=64574 * Sideshowbob * (+19) Created page with "Created [[Dbondb]]."
16:42:33 -!- Phantom_Hoover has joined.
16:42:52 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64575&oldid=64572 * Sideshowbob * (+0)
17:01:49 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64576&oldid=64575 * Sideshowbob * (+4) /* Factorial */
17:02:00 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64577&oldid=64576 * Sideshowbob * (+1) /* [Factorial]] */
17:02:42 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64578&oldid=64577 * Sideshowbob * (+7) /* Fibonacci series */
17:05:05 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64579&oldid=64578 * Sideshowbob * (+7) /* Hello World */
17:05:24 <esowiki> [[Union]] https://esolangs.org/w/index.php?diff=64580&oldid=63748 * Sideshowbob * (+1) /* Hello, world! program doing no output */
17:06:59 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64581&oldid=64579 * Sideshowbob * (+4) /* 99 Bottles of beer */
17:24:37 <esowiki> [[Special:Log/newusers]] create * Shuber * New user account
17:27:12 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64582&oldid=64507 * Shuber * (+160) /* Introductions */
17:28:57 <esowiki> [[Brainfuck implementations]] https://esolangs.org/w/index.php?diff=64583&oldid=62313 * Shuber * (+117) /* Normal implementations */
17:35:17 -!- FreeFull has joined.
18:00:37 -!- Sgeo__ has joined.
18:03:46 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
18:54:04 -!- b_jonas has joined.
18:58:18 <int-e> . o O ( The Gigaminx is not very ergonomic :) )
19:21:10 -!- Lord_of_Life_ has joined.
19:22:46 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
19:23:45 -!- xkapastel has joined.
19:23:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:54:27 -!- zzo38 has joined.
20:21:31 <b_jonas> int-e: is that some rubik's cube style permutation puzzle? or a mutant animal companion?
20:47:25 -!- int-e has quit (Remote host closed the connection).
20:58:18 -!- int-e has joined.
21:13:02 -!- int-e has quit (Remote host closed the connection).
21:14:11 -!- int-e has joined.
21:31:57 -!- int-e has quit (Remote host closed the connection).
21:32:39 -!- int-e has joined.
21:35:06 -!- ais523 has joined.
21:36:19 -!- jalumar has joined.
21:36:36 -!- xkapastel has quit (Quit: Connection closed for inactivity).
21:36:47 -!- joast has quit (Quit: Leaving.).
21:40:37 <ais523> b_jonas: email actually often takes more than three hops in practice, there are plenty of setups that use a number of different mailservers on the receiving end that relay to each other
21:40:48 <ais523> but they're all owned by the same company so they're willing to let them freely relay to each other
21:41:04 <ais523> sometimes this happens at the sending end too
21:42:18 -!- joast has joined.
21:42:43 <int-e> Oh right. That doesn't work.
21:42:47 <HackEso> - \ :#,_@ \ bin \ canary \ emoticons \ esobible \ etc \ evil \ f \ factor \ good \ hw \ ibin \ interps \ izash.c \ karma \ le \ lib \ misle \ paste \ ply-3.8 \ quines \ quinor \ quotes \ share \ src \ test2 \ testfile \ tmflry \ tmp \ wisdom
21:43:17 <int-e> ais523: I wanted to type that into the window to the right of this one ;-)
21:43:32 <b_jonas> yeah, some of those might be files I created accidentally
21:43:36 <ais523> we have a shell in-channel too but it's probably attached to the wrong filesystem
21:43:37 <b_jonas> you can hg log them if you want
21:46:12 <ais523> that :#,_@ looks like a Befunge program
21:47:23 <ais523> but I'm not sure it's meaningful
21:47:56 <fizzie> >:#,_@ is the standard print loop.
21:48:07 <fizzie> For printing a 0gnirts.
21:48:13 <ais523> I was assuming a wrap from left to right
21:48:30 <ais523> seeing it as a program /fragment/ makes more sense
21:48:34 <fizzie> I guess maybe the '>' was someone's shell redirection symbol.
21:48:39 <HackEso> Error: couldn't open 'olleh.bf' for input.
21:48:56 <ais523> maybe that was the string they were trying to print
21:49:10 <HackEso> 0000000 45 72 72 6f 72 3a 20 63 6f 75 6c 64 6e 27 74 20 >Error: couldn't < \ 0000020 6f 70 65 6e 20 27 6f 6c 6c 65 68 2e 62 66 27 20 >open 'olleh.bf' < \ 0000040 66 6f 72 20 69 6e 70 75 74 2e 0a >for input..< \ 0000053
21:49:21 <HackEso> rm: cannot remove './- ./'\'':#,_@'\''': No such file or directory
21:49:35 <HackEso> https://hack.esolangs.org/repo/file/tip/f
21:49:40 <ais523> also, I'm amused that rm escaped that correctly
21:50:32 <fizzie> I'm being confused by the f. It doesn't show up in the repo browser.
21:50:40 <ais523> int-e: I managed to permanently break HackEso's filesystem by screwing with the canary
21:50:44 <ais523> hmm, maybe f isn't a regular file
21:51:01 <kmc> press f to pay respects
21:51:41 <ais523> hmm, the meme is "press F to pay respects" but the original source was referring to the physical key on the keyboard four spaces right of Caps Lock
21:51:53 <ais523> is the key called "f" or "F", and do you quote it when writing it in text?
21:52:10 <ais523> it inserts "f" when pressed, under most circumstances, but is labelled with a capital F on most keyboards
21:52:24 <kmc> I think you'd call it F
21:52:25 <int-e> `` echo "Why are you taking Polly down into the mine? Polly's a parrot, not a canary! And where's my cracker?" > canary
21:52:27 <kmc> and not quote it
21:52:33 <kmc> in the context of a game instrution anyway
21:52:53 <ais523> well it probably used keycaps font in the game
21:52:56 <kmc> https://i.kym-cdn.com/photos/images/original/000/858/776/f2e.jpg_large
21:53:00 <kmc> on the console version it's X
21:53:58 <kmc> `` ls -la f
21:53:58 <ais523> I was wondering if one HackEso command could communicate with another via the named pipe
21:53:59 <HackEso> prw-r--r-- 1 1000 1000 0 May 4 19:34 f
21:55:46 <ais523> `` '!' brachylog "test"ẉ
21:55:47 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
21:55:51 <ais523> `` '!' brachylog '"test"ẉ'
21:55:52 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
21:55:59 <ais523> `` interp brachylog '"test"ẉ'
21:56:00 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
21:56:18 <ais523> oerjan: possibly wasn't the best idea to merge those before the merged version actually worked
21:56:45 <int-e> ais523: I wasn't going to turn canary into a pipe special file or all the other things that we know causes trouble, I just don't like it being empty :)
21:59:15 <int-e> . o O ( - is setting the bar rather low. )
22:03:04 -!- Sgeo_ has joined.
22:07:03 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
22:07:06 <ais523> what computational class is parsing indentation-sensitive languages like Python?
22:08:16 <ais523> my sample task is parsing " 1 +\n 2 +\n 3 +\n4" into a data structure of shape (1+(2+3))+4
22:08:36 <ais523> given the characters of the input in order (i.e. space, space, 1, space, plus, newline, space, space, space, space, 2…)
22:09:35 <ais523> I have a suspicion that a PDA is not enough and an LBA is too much
22:09:46 <b_jonas> ais523: well, it can't be context-free, because it has to be able to recognize three identically indented lines
22:10:11 <b_jonas> as in "if 1:\n 1\n 1\n 1\n"
22:10:22 <b_jonas> and notice if any of the three lines is misindented
22:10:22 <int-e> ais523: do people study things like stack (PDA) plus logarithmic space?
22:10:33 <ais523> int-e: probably, but I don't know of any
22:10:43 <int-e> because that would be my guess here
22:11:05 <b_jonas> int-e: yeah, something like that should be enough
22:14:49 -!- AnotherTest has quit (Ping timeout: 252 seconds).
22:17:02 <arseniiv> does HackEso have its own file system?
22:22:15 <b_jonas> arseniiv: no, I think all but /tmp are just directories bound from the same single file system that the host system uses
22:22:34 <b_jonas> the host system being a virtual machine, mind you, because it's a double-ply sandbox
22:22:57 <b_jonas> so it's like parts of the file system of the middle layer mounted on the inner machine
22:22:58 -!- arseniiv has quit (Ping timeout: 248 seconds).
22:23:10 <b_jonas> you can see from df that all the mounts have the same amount of free space
22:28:28 -!- moei has quit (Quit: Leaving...).
22:31:44 -!- nfd9001 has joined.
23:17:31 <fizzie> Well, arguably it's a four-layer cake if you also count the part that's controlled by the service provider. Although the jam between layers 2 and 3 is pretty thin.
23:17:37 <fizzie> The outermost part I don't know too much about, but from circumstantial evidence it's a QEMU/KVM virtual machine, which exposes some sort of storage though the virtio block driver.
23:17:49 <fizzie> Under that, there's a systemd-nspawn container, which sets up a container made out of Linux namespaces: the mount, PID, network and user ones. A few directories (the HackEso code) are shared as read-only bind mounts into the mount namespace, and one (the HackEso data) as a read-write bind mount.
23:18:14 <fizzie> That container is the level where the actual multibot binary is running.
23:18:27 <fizzie> And then finally there's the last level of sandboxing, where each of the HackEso commands is executed in a separate user-mode Linux instance. That uses the UML hostfs to mount the container system's userspace (well, most of it) into the UML as read-only, and the HackEso repository as read-write. And the UML has its own (mostly empty) root filesystem from an initrd, and /tmp as a tmpfs.
23:18:45 <b_jonas> fizzie: isn't the outer layer xen-based?
23:19:18 <fizzie> Not any more. At CloudAtCost I think it might've been, but at Bytemark I think it's KVM.
23:19:38 <b_jonas> oh, what fizzie is saying makes much more sense than what I said
23:19:59 <fizzie> Judging from the "QEMU Virtual CPU version 2.1.3" /proc/cpuinfo model name.
23:23:00 <b_jonas> `fetch ../MGYi.txt http://dpaste.com/3CVV3FH.txt
23:23:01 <HackEso> In another world: ../MGYi.txt
23:23:07 <b_jonas> `fetch /MGYi.txt http://dpaste.com/3CVV3FH.txt
23:23:08 <HackEso> In another world: /MGYi.txt
23:23:28 <fizzie> Fetch will only accept /hackenv paths, I think.
23:23:40 <b_jonas> it should only, yes. I had to test it though.
23:25:06 <ais523> on the subject of recognising indentation-sensitive languages: indexed grammars are strong enough but it's probably possible to go weaker
23:25:19 <ais523> I don't think linearly indexed grammars are enough, though
23:25:37 <ais523> because they can't do a^nb^nc^nd^ne^n (just like a context-free grammar can only manage two, a LIG can only manage four)
23:26:11 <fizzie> I think there might've been a symlink-based escape at some point, which was terrible. Not that the hackeso user is able to write much anywhere else, but it could've probably messed up the repository by writing directly into /hackenv/.hg/.
23:27:11 <fizzie> Now it does os.path.realpath to canonicalize the output, and then verifies it's inside .../hackenv/ but outside .../hackenv/.hg/, which is hopefully enough.
23:27:51 <ais523> indexed grammars can't be parsed in polytime in general, whereas this clearly can be, which is why I'm looking for an appropriate class in between
23:28:49 <ais523> fizzie: doesn't that make it technically possible to deduce the existence of directories and symlinks outside hackenv? by traversing out of hackenv and then back into it
23:29:46 <ais523> that might not be a useful breach of security properties, of course
23:29:55 <b_jonas> you could just move the file to the right place from inside the inner context, as with a normal command
23:32:27 <fizzie> ais523: That's probably true, at least if os.path.realpath disallows "xxx/nonexistentdirectory/../yyy" paths.
23:32:54 <ais523> if it's canonicalizing symlinks it would have to
23:33:06 <fizzie> It doesn't seem to disallow that, though.
23:33:27 <ais523> what about xxx/symlink/../yyy?
23:33:40 <ais523> is the .. relative to the symlinik target, or is the symlink not even parsed?
23:34:18 <fizzie> `` python -c $'import os.path\nprint(os.path.realpath("fsadfsafsdaf/.."))'
23:34:48 <fizzie> I guess it does follow the symlink, so you would definitely be able to detect names of symlinks that lead to a separate depth.
23:35:08 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:35:38 <fizzie> By testing whether you can fetch to ../aaaaaa/../hackenv/tmp.
23:37:21 <fizzie> `fetch ../../../notasymlink/../srv/hackeso-data/env/tmp/tmp.txt http://zem.fi/tmp/tmp.txt
23:37:22 <HackEso> 2019-07-19 23:37:22 URL:http://zem.fi/tmp/tmp.txt [4/4] -> "tmp/tmp.txt" [1]
23:37:41 <fizzie> `fetch ../../../proc/net/../../srv/hackeso-data/env/tmp/tmp.txt http://zem.fi/tmp/tmp.txt
23:37:42 <HackEso> In another world: ../../../proc/net/../../srv/hackeso-data/env/tmp/tmp.txt
23:38:22 <fizzie> That reveals that /proc/net is a symlink (to /proc/self/net).
23:39:55 <kmc> ooh, I forgot about $'...'
23:40:51 <fizzie> You could also have used that trick to discover the external location /hackenv as /srv/hackeso-data/env, by fetch-probing ../a, ../b and so on. Though I'm pretty sure there's also something that already leaks that into the UML; don't remember what, though.
23:43:10 <fizzie> Oh, right, the fact that the host filesystem path shows up as the "device" of the hostfs mount.
23:43:13 <fizzie> `` grep ' /hackenv ' /proc/mounts
23:43:14 <HackEso> none /hackenv hostfs rw,nosuid,relatime,/srv/hackeso-data/env/ 0 0
23:46:50 <kmc> shachaf: I found a USB-C brick that will chrge my phone or laptop and is not much bigger than a normal phone charger
23:47:02 <kmc> it's maybe 2x as long, but not wider, so it can still fit in a single outlet on a power strip
23:47:47 <fizzie> But will it charge your Raspberry Pi 4 with the incompatible USB-C port?
23:48:06 <kmc> the laptop is taking about 1.5-2.0 A @ 20V
23:48:17 <kmc> fizzie: what exactly did they fuck up?
23:48:47 <kmc> so that's not nearly the 65W of the dedicated charger, but it should still be good enough
23:49:06 <fizzie> AIUI, they had one resistor where the spec called for two separate ones, which involves connecting together two pins that shouldn't.
23:49:12 <kmc> and now I have one fewer thing to carry in my bag
23:49:30 <kmc> fizzie: dang
23:49:35 <kmc> did they fix it?
23:49:39 <kmc> what is the consequence of this
23:49:47 <kmc> presumably it does work sometimes or they wouldn't have shipped it
23:50:20 <fizzie> Yes, it works if you have the dumbest kind of "charging-only" USB 2.0 A-to-C cable, without the e-Marker thing.
23:50:40 <kmc> so it doesn't work with actual USB-C-PD ?
23:50:59 <fizzie> That's my impression, yes. I think they promised the next revision will.
23:51:07 <kmc> ah, the eMarker is the cable quality information that I was talking about without knowing anything about
23:51:51 <kmc> I don't know if my cables have that
23:52:08 <kmc> this little USB-C inline power meter is great
23:52:27 <b_jonas> kmc: is it something actually useful, or is it just another evil proprietary extension so that you have to buy their expensive cable to charge their device or else it will barely work, even though there's no real technological reason for that restriction?
23:52:42 <fizzie> All I know about this is from a post by that Googler who talks about cables.
23:53:01 -!- atslash has quit (Quit: This computer has gone to sleep).
23:53:13 <kmc> b_jonas: beats me
23:53:40 <kmc> b_jonas: I think there is a valid concern about cables not being up to spec to deliver 5A, which is kind of a lot of current
23:53:40 <int-e> . o O ( it'll be like web browser cookies... well meant, but soon to be abused for nefarious purposes )
23:53:48 <fizzie> https://medium.com/@leung.benson <- that one
23:54:10 <kmc> b_jonas: and I don't know if there's anything proprietary about it, such as a licensing fee
23:54:34 <ais523> 5 amps at what sort of voltage?
23:54:45 <kmc> ais523: up to 20 volts
23:54:55 <ais523> the main issues with overloading cables are based on resistance, both directly and in terms of heat dissipation
23:54:57 <kmc> current is what determines heating in a wire, though
23:55:30 <ais523> well, if the voltage is too low you don't have enough power to heat the wire
23:55:46 <kmc> as long as the insulation is up to snuff, it doesn't matter if you have 5 amps at 20 volts or 5 amps at 20,000 volts, the heat dissipation is calculated as I^2 R
23:55:54 <int-e> ais523: the voltage hardly matters
23:55:54 <ais523> but what actually happens is that the current drops below the value you thought you had because the wire has too high a resistance to force that much current through at that voltage
23:55:59 <shachaf> kmc: My friend showed me such a brick two days ago
23:56:18 <kmc> ais523: if you don't have enough power to heat the wire then the current has decreased, yes
23:56:19 <int-e> (though 20k may be pushing it, insulators break down at some point)
23:56:19 <ais523> so I guess that if you know that your voltage is sufficient to send 5A through the cable, the actual voltage doesn't matter
23:56:23 <kmc> P = I^2 * R
23:56:37 <ais523> (however, the cable's resistance will determine how much voltage you need to be able to get that 5A of current)
23:56:42 <kmc> P = I^2 * R = V^2 / R
23:56:54 <kmc> ais523: yeah
23:57:07 <ais523> that P = I^2 * R = V^2 / R equation is so misleading :-)
23:57:19 <ais523> I is the current along the cable, which is fair enough and what people expect
23:57:33 <ais523> V is the voltage difference from one end of the cable and the other, which is /not/ what people expect
23:57:47 <kmc> *shrug* it's a general equation for resistors, not only for cables
23:57:49 <ais523> (they're normally thinking of the difference between positive and negative/ground, not between one end and the other)
23:58:12 <kmc> anyway, the reason long distance power distribution uses such high voltages is that it allows you to use lower current for the same amount of power delivered, which means less power lost as heat
23:58:27 <kmc> and that in turn is the advantage of an AC grid
23:58:28 <int-e> if the voltage difference between the ends of the cables is 20kV you almost definitely have a problem.
23:58:50 <kmc> because with AC you can convert the voltage up or down using simple, passive devices
23:58:50 <b_jonas> does the resistance at the contacts matter?
23:59:02 <kmc> b_jonas: sure, it is part of the overall resistance of the wire
23:59:03 <ais523> at sufficiently high voltage differences the cable hardly matters, you can just send electricity along the air around them
23:59:19 <b_jonas> kmc: sure, but how localized is the heat from that going to be?
23:59:19 <int-e> b_jonas: yes, it does. that's why contacts are usually the point where things get overheated and potentially melt down
23:59:26 <kmc> b_jonas: that's a complicated question
23:59:36 <ais523> (this happens at high frequencies too, the electricity sometimes ends up going through the air around the wire rather than the wire itself
23:59:53 <kmc> there's no simple answer to "how much current can this bit of wire/contact handle" because it depends on the environment it dissipates heat to