00:01:13 -!- Sgeo has quit (Ping timeout: 268 seconds). 01:03:13 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:27 I wonder what that's for. 01:03:45 `quote 01:03:46 62) Where's the link to the log? 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:32:49 oh. good quote. 01:39:23 shachaf: hmm, could it be for __attribute__((destructor)) cleanup? 01:42:25 int-e: Why would the kernel pass that to _start? 01:42:33 It seems like strictly a userspace thing. 01:50:55 true. 01:51:23 is it for that wacky robust futex thing 01:52:29 Oh, I didn't know about that thing. 01:52:51 the userspace maintains a linked list of futices and tells the kernel where it is 01:52:52 But presumably if a program crashes it won't run its atexit handlers. 01:53:00 right 01:53:04 it was not a very good guess 01:57:20 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 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 I guess it's just the same ABI? 01:58:41 what's the purpose though 01:58:50 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 isn't the dynamic linker the ELF interpreter 01:59:33 and it just passes control to the entry point of said interpreter 01:59:38 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 I was looking in the Linux repository to see what it sets rdx to. 02:22:01 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 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 So basically, the same conclusion, but this time from the glibc side. 02:38:26 (the function that is called takes only one argument) 02:39:52 OTOH, the stack layout corresponds to reality even for rtdl. 02:41:40 Is that the code for ld-linux? 02:42:09 I'm pretty sure it is (well, as small part of it) 02:43:30 most of it is in https://sourceware.org/git/?p=glibc.git;a=blob;f=elf/rtld.c 02:43:50 (and other files in the elf/ subdirectory) 02:44:11 (but rtld is the "main program".) 02:44:24 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 yeah I linked to line 41 of that particular file earlier. 02:46:12 Oh, so you did. 02:46:28 I looked at that file earlier but didn't see that comment. 02:46:33 it's okay... I do this all the time (figuring things out myself) 02:47:04 I'm still curious, though. What does the kernel put in that register? Is it an address I can jump to? 02:47:36 I guess I can find out easily enough. 02:47:57 I suspect the kernel doesn't put anything in that register. 02:48:03 i love this kind of wild goose chase 02:48:43 It is 0. 02:49:20 okay, the kernel should put safe values into the registers that don't leak any information. 0 if fine :) 02:49:25 kmc: i want to write a compiler so i gotta know these things 02:49:26 -!- oerjan has joined. 02:51:06 why are you writing a compiler 02:51:20 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 shachaf: https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/elf.h#L172-L186 03:05:29 int-e: Aha. I was searching for "rdx". 03:05:52 * int-e started from binfmt_elf.c 03:06:09 (irritatingly under fs/) 03:07:40 /* ax gets execve's return value. */ 03:08:04 The Linux conspiracy doesn't want you to know what execve returns on success. 03:09:17 -!- FreeFull has quit. 03:09:46 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 So that's one less mystery... 03:14:29 shachaf: did you see geofft's userspace exec thing 03:14:39 actually i'm not sure if I'm remembering it right 03:14:56 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 kmc: Simulating exec from userspace? 03:15:19 yeah 03:15:30 I looked for and found a thing like that a while ago. I don't remember geofft being involved. 03:16:06 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 maybe i'm confused 03:16:55 i'm usually confused about something or another 03:17:00 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 dazed and confused but trying to continue 03:17:08 I mean of edx. 03:17:39 shachaf: I'm pretty sure the dx field covers all of edx. 03:18:02 shachaf: just like on x86_64 the dx field covers all of rdx. 03:20:01 Yes. Hence "i,i". 03:20:35 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 but that's enough (useless, mostly) code reading. 03:21:17 (though interesting) 03:21:47 that's not enough underscores 03:21:51 it should be _______r at least 03:25:02 [[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 [[Doug]] M https://esolangs.org/w/index.php?diff=64553&oldid=64552 * JonoCode9374 * (-3) 03:58:30 `cat ibin/brachylog 03:58:30 ​#!/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 `` ls -l bin/\! bin/interp 04:08:00 ​-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:13 hum 04:08:25 `hurl bin/\! 04:08:26 https://hack.esolangs.org/repo/log/tip/bin/%5C%21 04:09:30 *sigh* it was a symbolic link 04:09:45 what is swipl 04:09:53 prolog interpreter 04:10:37 `` mv bin/{\!,interp} 04:10:38 No output. 04:10:50 `` ln -s interp bin/\! 04:10:52 No output. 04:11:09 `` ls -l bin/\! bin/interp 04:11:09 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 is prolog good 04:12:54 should i use prolog 04:14:01 did you know prolog is almost the same thing as index notation 04:18:30 no 04:18:35 because i don't remember what index notation is 04:31:15 I don't believe in Prolog. 04:36:23 (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 https://en.wikipedia.org/wiki/Boolean_Pythagorean_triples_problem 04:38:32 Golly. 04:39:36 shachaf: that made mainstream news a few years back, as "the largest mathematical proof". 04:40:39 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 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 \oren\: Prolog doesn't scale to that size. 04:43:25 <\oren\> hmm? why not 04:43:29 shachaf: wait are you saying that this is what Prolog was invented for? 04:45:27 \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:45:50 int-e: No. 04:45:55 I just learned about it. 04:46:10 <\oren\> Hmm. 04:46:26 int-e: Do you know whether DPLL solvers actually do pure literal elimination? 04:47:29 int-e: By the way, it's interesting that this proof was parallelized on many machines. 04:47:41 \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 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:14 <\oren\> wat 04:48:38 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 \oren\: yeah, and expert systems. 04:50:14 SAT solvers are awful in that nobody really wants to write clauses (or even circuits to feed into a Tseitin transformation) 04:57:11 [[User talk:A]] M https://esolangs.org/w/index.php?diff=64554&oldid=64551 * A * (-2842) 04:58:00 [[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 [[User talk:A]] M https://esolangs.org/w/index.php?diff=64556&oldid=64555 * A * (+2779) 04:58:40 [[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 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 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 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 because mmap doesn't check permissions 05:19:06 <\oren\> oh 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 \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 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 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 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:50 `5 w 07:59:52 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 <\oren\> if oiseau is "wazo" then is oieau "wao"? <-- wiktionary refuses to confirm tdnh 08:19:24 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 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:32 though." 08:20:57 replying to someone asking when there'll be a next mezacotta puzzle hunt 08:21:03 i remember that. 08:21:16 so it doesn't specifically say no to all puzzles, just that format 08:21:36 they could have a droidikar second set crossword puzzle 08:21:53 or, technically, more Eavesdropper puzzles 08:22:23 * oerjan decided not to follow Eavesdropper after a few posts 08:22:29 didn't feel like my thing 08:23:02 or more single puzzles like http://www.irregularwebcomic.net/3976.html annot 08:23:06 anyway, i'm forgetting to eat _and_ to shave, so -> 08:23:16 -!- oerjan has quit (Quit: Later). 08:23:51 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 the puzzles are hit and miss, but there were a few especially giid ones: 08:24:52 https://alcohol.stackexchange.com/q/7036 08:25:12 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 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 Its biggest contribution imo was to show that it's possible. 12:06:08 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 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 [[User talk:A]] M https://esolangs.org/w/index.php?diff=64558&oldid=64557 * A * (+70) 12:12:30 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 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 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 another instructor scored the sml code output, and I don't know what he said 12:27:13 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 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 for that, I reused the closure representation from olvashato 12:28:13 [[Doug]] https://esolangs.org/w/index.php?diff=64559&oldid=64553 * Areallycoolusername * (+1644) Revamped the page 12:28:32 fizzie: yes, that might actually be saner, an interpreter plus code 12:28:58 prolog handles that sort of thing quite naturally because it keeps messing with tree-like data all the time 12:29:02 [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=64560&oldid=64499 * Areallycoolusername * (+11) 12:30:44 [[Joke language list]] https://esolangs.org/w/index.php?diff=64561&oldid=63686 * Areallycoolusername * (+11) /* General languages */ 12:30:46 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 that one came up on https://esolangs.org/logs/2019-03-26.html last 12:33:41 Looks like the only Prolog-special thing about this Scheme interpreter is that it implements (amb ...). 12:36:02 (Modeled after the SICP chapter, https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-28.html ) 12:36:18 fizzie: what method do you use to represent the scheme mutable state in prolog? 12:36:28 there's like ten different ways for that, most of them awkward or nonportable 12:37:01 I'm not sure I can decipher it out from the code, to be honest. 12:37:02 there's assert-based ones, extensions for global variables, extensions for mutable terms, and making the whole thing functional 12:37:32 I think it's the third option on your list. 12:37:37 https://www.swi-prolog.org/pldoc/man?predicate=setarg/3 12:37:57 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 I think I didn't want to spend too much effort on it. 12:38:24 fizzie: sure. how many obscure bugs did you have to debug that turned out to come from setarg? 12:38:42 Well, I mean, it didn't have to run a thorough Scheme check suite. :p 12:38:48 I think it did run non-trivial programs though. 12:39:09 call/cc this does via something CPS-ish. 12:39:56 At least judging from ps_apply_builtin(callcc, Args, K, E, SE) :- ... ps_apply(k(apply, E, SE, Proc, [cont(K)], K), void). 12:41:29 ok 12:42:25 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 I'll test if I can figure out how to actually get to the REPL. 12:43:47 I've never written a Scheme interpreter in Prolog, but I did write a (nano) Prolog interpreter in Scheme once. 12:44:20 This is also from 2005, so it may well have bitrotted away when it comes to current SWI-Prolog version. 12:44:23 Actually, that was just last year. Wanted to refresh/confirm to myself that I knew basically how a Prolog interpreter works. 12:45:00 In the Scheme world, everyone seems to prefer miniKanren though. 12:45:16 (To implement, I mean. Dunno about actually using.) 12:45:40 wob_jonas: Sorry, it's not looking good w.r.t. running anything: http://ix.io/1OTN 12:46:59 Slightly odd, though. I would've expected some error from the Prolog side, not a syntax error from the interpreter itself. 12:48:04 (It's failing while attempting to load the bit of Scheme syntax that has been implemented via macros.) 12:48:10 Oh well. 12:48:35 bitrot :( 12:48:57 programs always do that 13:01:08 [[Arch]] https://esolangs.org/w/index.php?diff=64562&oldid=64534 * Areallycoolusername * (+21) 13:07:33 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 I guess I should say, it's rarely that simple. I refuse to give up all my hopeful thoughts on that. 13:10:05 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 [[Arch]] https://esolangs.org/w/index.php?diff=64563&oldid=64562 * Areallycoolusername * (+79) /* Languages */ 13:14:01 [[Arch]] https://esolangs.org/w/index.php?diff=64564&oldid=64563 * Areallycoolusername * (+0) 13:21:11 [[Doug]] https://esolangs.org/w/index.php?diff=64565&oldid=64559 * Areallycoolusername * (-11) /* Hello World Program */ 13:23:31 [[Doug]] https://esolangs.org/w/index.php?diff=64566&oldid=64565 * Areallycoolusername * (+188) /* Variables, Ifs, and for */ 13:23:58 [[Doug]] https://esolangs.org/w/index.php?diff=64567&oldid=64566 * Areallycoolusername * (+0) /* Variables, Ifs, and for */ 14:07:36 [[Language list]] M https://esolangs.org/w/index.php?diff=64568&oldid=64535 * ThisIsTheFoxe * (+20) added my language :) 14:09:30 According to https://esolangs.org/wiki/Deadfish there is not yet an implementation of Deadfish in Prolog! 14:29:08 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 fizzie: even without upgrading, you can diff it to the repository copy 14:32:37 [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64569&oldid=62563 * Areallycoolusername * (+228) Proposing new category 14:41:29 [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64570&oldid=64569 * Areallycoolusername * (+390) 14:41:44 [[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:40 À la prochaine. 15:59:44 -!- cpressey has quit (Quit: WeeChat 1.4). 16:29:09 [[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 [[Language list]] https://esolangs.org/w/index.php?diff=64573&oldid=64568 * Sideshowbob * (+13) /* D */ 16:39:10 [[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 [[Dbondb]] https://esolangs.org/w/index.php?diff=64575&oldid=64572 * Sideshowbob * (+0) 17:01:49 [[Dbondb]] https://esolangs.org/w/index.php?diff=64576&oldid=64575 * Sideshowbob * (+4) /* Factorial */ 17:02:00 [[Dbondb]] https://esolangs.org/w/index.php?diff=64577&oldid=64576 * Sideshowbob * (+1) /* [Factorial]] */ 17:02:42 [[Dbondb]] https://esolangs.org/w/index.php?diff=64578&oldid=64577 * Sideshowbob * (+7) /* Fibonacci series */ 17:05:05 [[Dbondb]] https://esolangs.org/w/index.php?diff=64579&oldid=64578 * Sideshowbob * (+7) /* Hello World */ 17:05:24 [[Union]] https://esolangs.org/w/index.php?diff=64580&oldid=63748 * Sideshowbob * (+1) /* Hello, world! program doing no output */ 17:06:59 [[Dbondb]] https://esolangs.org/w/index.php?diff=64581&oldid=64579 * Sideshowbob * (+4) /* 99 Bottles of beer */ 17:24:37 [[Special:Log/newusers]] create * Shuber * New user account 17:27:12 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64582&oldid=64507 * Shuber * (+160) /* Introductions */ 17:28:57 [[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 . 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 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:39:17 @messages? 21:39:17 Sorry, no messages today. 21:40:37 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 but they're all owned by the same company so they're willing to let them freely relay to each other 21:41:04 sometimes this happens at the sending end too 21:41:31 makes sense 21:42:18 -!- joast has joined. 21:42:30 ls 21:42:43 Oh right. That doesn't work. 21:42:47 `ls 21:42:47 ​- \ :#,_@ \ 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:12 `file - 21:43:17 ais523: I wanted to type that into the window to the right of this one ;-) 21:43:23 int-e: ah, OK 21:43:32 yeah, some of those might be files I created accidentally 21:43:36 we have a shell in-channel too but it's probably attached to the wrong filesystem 21:43:37 you can hg log them if you want 21:43:37 `file ./- 21:43:38 ​./-: empty 21:43:42 No output. 21:43:50 `culprits ./- 21:43:52 ais52̈3 oerjän shachäf 21:44:05 hmm, interesting 21:46:12 that :#,_@ looks like a Befunge program 21:47:23 but I'm not sure it's meaningful 21:47:56 >:#,_@ is the standard print loop. 21:48:06 oh, aha 21:48:07 For printing a 0gnirts. 21:48:13 I was assuming a wrap from left to right 21:48:30 seeing it as a program /fragment/ makes more sense 21:48:34 I guess maybe the '>' was someone's shell redirection symbol. 21:48:38 `cat :#,_@ 21:48:39 Error: couldn't open 'olleh.bf' for input. 21:48:56 maybe that was the string they were trying to print 21:49:09 `` od -t x1z ':#,_@' 21:49:10 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:15 yep 21:49:20 `rm ./- ./':#,_@' 21:49:21 rm: cannot remove './- ./'\'':#,_@'\''': No such file or directory 21:49:24 `` rm ./- ./':#,_@' 21:49:26 No output. 21:49:34 `url f 21:49:35 https://hack.esolangs.org/repo/file/tip/f 21:49:40 also, I'm amused that rm escaped that correctly 21:49:59 cat canary 21:50:01 `cat canary 21:50:05 No output. 21:50:06 `` od -t x1z f 21:50:32 I'm being confused by the f. It doesn't show up in the repo browser. 21:50:40 int-e: I managed to permanently break HackEso's filesystem by screwing with the canary 21:50:44 hmm, maybe f isn't a regular file 21:50:46 `file f 21:50:47 f: fifo (named pipe) 21:50:51 yep 21:51:01 press f to pay respects 21:51:41 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 is the key called "f" or "F", and do you quote it when writing it in text? 21:52:10 it inserts "f" when pressed, under most circumstances, but is labelled with a capital F on most keyboards 21:52:24 I think you'd call it F 21:52:25 `` 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 and not quote it 21:52:33 in the context of a game instrution anyway 21:52:53 well it probably used keycaps font in the game 21:52:56 https://i.kym-cdn.com/photos/images/original/000/858/776/f2e.jpg_large 21:53:00 on the console version it's X 21:53:13 No output. 21:53:14 No output. 21:53:32 `cat f 21:53:37 `` echo test1234 > f 21:53:58 `` ls -la f 21:53:58 I was wondering if one HackEso command could communicate with another via the named pipe 21:53:59 prw-r--r-- 1 1000 1000 0 May 4 19:34 f 21:54:04 No output. 21:54:04 apparently not though 21:54:08 No output. 21:55:34 `! brachylog "test"ẉ 21:55:36 test \ \ true. 21:55:46 `` '!' brachylog "test"ẉ 21:55:47 ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0 21:55:51 `` '!' brachylog '"test"ẉ' 21:55:52 ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0 21:55:59 `` interp brachylog '"test"ẉ' 21:56:00 ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0 21:56:18 oerjan: possibly wasn't the best idea to merge those before the merged version actually worked 21:56:45 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:58:29 fair enough 21:58:52 `? - 21:58:53 ​-? ¯\(°​_o)/¯ 21:59:15 . 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 what computational class is parsing indentation-sensitive languages like Python? 22:08:16 my sample task is parsing " 1 +\n 2 +\n 3 +\n4" into a data structure of shape (1+(2+3))+4 22:08:36 given the characters of the input in order (i.e. space, space, 1, space, plus, newline, space, space, space, space, 2…) 22:09:35 I have a suspicion that a PDA is not enough and an LBA is too much 22:09:46 ais523: well, it can't be context-free, because it has to be able to recognize three identically indented lines 22:10:11 as in "if 1:\n 1\n 1\n 1\n" 22:10:22 and notice if any of the three lines is misindented 22:10:22 ais523: do people study things like stack (PDA) plus logarithmic space? 22:10:33 int-e: probably, but I don't know of any 22:10:43 because that would be my guess here 22:11:05 int-e: yeah, something like that should be enough 22:14:49 -!- AnotherTest has quit (Ping timeout: 252 seconds). 22:17:02 does HackEso have its own file system? 22:22:15 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 the host system being a virtual machine, mind you, because it's a double-ply sandbox 22:22:57 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 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 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 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 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 That container is the level where the actual multibot binary is running. 23:18:27 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 fizzie: isn't the outer layer xen-based? 23:19:18 Not any more. At CloudAtCost I think it might've been, but at Bytemark I think it's KVM. 23:19:38 oh, what fizzie is saying makes much more sense than what I said 23:19:59 Judging from the "QEMU Virtual CPU version 2.1.3" /proc/cpuinfo model name. 23:23:00 `fetch ../MGYi.txt http://dpaste.com/3CVV3FH.txt 23:23:01 In another world: ../MGYi.txt 23:23:07 `fetch /MGYi.txt http://dpaste.com/3CVV3FH.txt 23:23:08 In another world: /MGYi.txt 23:23:28 Fetch will only accept /hackenv paths, I think. 23:23:40 it should only, yes. I had to test it though. 23:25:06 on the subject of recognising indentation-sensitive languages: indexed grammars are strong enough but it's probably possible to go weaker 23:25:19 I don't think linearly indexed grammars are enough, though 23:25:37 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 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:01 mmm, cake 23:27:11 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 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 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 that might not be a useful breach of security properties, of course 23:29:55 you could just move the file to the right place from inside the inner context, as with a normal command 23:32:27 ais523: That's probably true, at least if os.path.realpath disallows "xxx/nonexistentdirectory/../yyy" paths. 23:32:54 if it's canonicalizing symlinks it would have to 23:33:06 It doesn't seem to disallow that, though. 23:33:27 what about xxx/symlink/../yyy? 23:33:40 is the .. relative to the symlinik target, or is the symlink not even parsed? 23:33:52 ais523: the former 23:34:18 `` python -c $'import os.path\nprint(os.path.realpath("fsadfsafsdaf/.."))' 23:34:19 ​/hackenv 23:34:48 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 By testing whether you can fetch to ../aaaaaa/../hackenv/tmp. 23:37:21 `fetch ../../../notasymlink/../srv/hackeso-data/env/tmp/tmp.txt http://zem.fi/tmp/tmp.txt 23:37:22 2019-07-19 23:37:22 URL:http://zem.fi/tmp/tmp.txt [4/4] -> "tmp/tmp.txt" [1] 23:37:41 `fetch ../../../proc/net/../../srv/hackeso-data/env/tmp/tmp.txt http://zem.fi/tmp/tmp.txt 23:37:42 In another world: ../../../proc/net/../../srv/hackeso-data/env/tmp/tmp.txt 23:37:46 Yep. 23:38:22 That reveals that /proc/net is a symlink (to /proc/self/net). 23:39:55 ooh, I forgot about $'...' 23:39:57 too good 23:40:51 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 Oh, right, the fact that the host filesystem path shows up as the "device" of the hostfs mount. 23:43:13 `` grep ' /hackenv ' /proc/mounts 23:43:14 none /hackenv hostfs rw,nosuid,relatime,/srv/hackeso-data/env/ 0 0 23:46:50 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 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 But will it charge your Raspberry Pi 4 with the incompatible USB-C port? 23:48:06 the laptop is taking about 1.5-2.0 A @ 20V 23:48:17 fizzie: what exactly did they fuck up? 23:48:47 so that's not nearly the 65W of the dedicated charger, but it should still be good enough 23:49:06 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 and now I have one fewer thing to carry in my bag 23:49:30 fizzie: dang 23:49:35 did they fix it? 23:49:39 what is the consequence of this 23:49:47 presumably it does work sometimes or they wouldn't have shipped it 23:50:20 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:27 sigh 23:50:40 so it doesn't work with actual USB-C-PD ? 23:50:59 That's my impression, yes. I think they promised the next revision will. 23:51:07 ah, the eMarker is the cable quality information that I was talking about without knowing anything about 23:51:51 I don't know if my cables have that 23:52:08 this little USB-C inline power meter is great 23:52:27 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 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 b_jonas: beats me 23:53:40 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 . o O ( it'll be like web browser cookies... well meant, but soon to be abused for nefarious purposes ) 23:53:48 https://medium.com/@leung.benson <- that one 23:54:10 b_jonas: and I don't know if there's anything proprietary about it, such as a licensing fee 23:54:34 5 amps at what sort of voltage? 23:54:45 ais523: up to 20 volts 23:54:55 the main issues with overloading cables are based on resistance, both directly and in terms of heat dissipation 23:54:57 current is what determines heating in a wire, though 23:55:30 well, if the voltage is too low you don't have enough power to heat the wire 23:55:46 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 ais523: the voltage hardly matters 23:55:54 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 kmc: My friend showed me such a brick two days ago 23:56:18 ais523: if you don't have enough power to heat the wire then the current has decreased, yes 23:56:19 (though 20k may be pushing it, insulators break down at some point) 23:56:19 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 P = I^2 * R 23:56:28 right 23:56:37 (however, the cable's resistance will determine how much voltage you need to be able to get that 5A of current) 23:56:42 P = I^2 * R = V^2 / R 23:56:54 ais523: yeah 23:57:07 that P = I^2 * R = V^2 / R equation is so misleading :-) 23:57:11 is it? 23:57:18 kmc: different Rs 23:57:19 I is the current along the cable, which is fair enough and what people expect 23:57:33 V is the voltage difference from one end of the cable and the other, which is /not/ what people expect 23:57:36 yeah 23:57:47 *shrug* it's a general equation for resistors, not only for cables 23:57:49 (they're normally thinking of the difference between positive and negative/ground, not between one end and the other) 23:57:54 sure 23:58:12 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:26 yep 23:58:27 and that in turn is the advantage of an AC grid 23:58:28 if the voltage difference between the ends of the cables is 20kV you almost definitely have a problem. 23:58:50 because with AC you can convert the voltage up or down using simple, passive devices 23:58:50 does the resistance at the contacts matter? 23:59:02 b_jonas: sure, it is part of the overall resistance of the wire 23:59:03 at sufficiently high voltage differences the cable hardly matters, you can just send electricity along the air around them 23:59:08 hehe 23:59:19 kmc: sure, but how localized is the heat from that going to be? 23:59:19 b_jonas: yes, it does. that's why contacts are usually the point where things get overheated and potentially melt down 23:59:26 b_jonas: that's a complicated question 23:59:36 (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:37 ) 23:59:53 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