00:02:32 -!- FreeFull has quit. 00:16:44 moerjaning 00:17:17 Sic transit Lucrezia 00:17:41 mornint-e 00:18:07 Oh I forgot about GG yesterday. 00:18:52 -!- Frater_EST has left. 00:20:06 Looks great. 00:21:26 And I guess the haircut settles who is who. 00:27:22 unless the clank lucrezia managed to make more copies, this leaves only the Zola copy on the run. which is not in control. hopefully. 00:27:56 (if it _does_ gain control there would be a danger of it becoming a queen too) 00:28:49 3 months from discovery (http://www.girlgeniusonline.com/comic.php?date=20190809) to... well, maybe defeat. 00:29:35 We could also have two roaming souls as a result. 00:29:44 Just to keep things messy. 00:38:54 -!- ashtons has joined. 00:39:03 hello 00:41:43 hi 00:42:07 `relcome ashtons 00:42:09 ​ashtons: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on EFnet or DALnet.) 00:42:42 :) i just came from the wiki 00:43:51 `5 5 w 00:44:08 1/2:indonesia//Indonesia is a large island country in Asia and the world's most populous muslim country. Its major export is rayon textile from the Indonesian fnord. \ hodl//Hodl ym bere, I'ev gto thsi! \ wiki//The wiki is at . \ hash 2346ad27d7568ba9896f1b7da6b5991251debdf2//hash 2346ad27d7568ba9896f1b7da6b5991251debdf2 \ canary//A canary is a small bright yellow chicken that dwells in deep caves. Unlike bats, 00:44:25 I've actually been working on my own esolang, but I don't really know what to call it yet. 00:45:21 `n 00:45:21 2/2: canaries are oriented right way up, unless they're pining for the fjords. \ .............................................................................................................................................................................................................................................................................................................................................................................. 00:45:38 anybody got tips for naming esolangs? cause i suck at naming stuff 00:45:53 int-e: what did you do.............................................................................................................................................................................................................................................................................................................................................................................. 00:46:01 shachaf: I don't know. 00:46:03 `n 00:46:04 1/2:indonesia//Indonesia is a large island country in Asia and the world's most populous muslim country. Its major export is rayon textile from the Indonesian fnord. \ hodl//Hodl ym bere, I'ev gto thsi! \ wiki//The wiki is at . \ hash 2346ad27d7568ba9896f1b7da6b5991251debdf2//hash 2346ad27d7568ba9896f1b7da6b5991251debdf2 \ canary//A canary is a small bright yellow chicken that dwells in deep caves. Unlike bats, 00:46:09 i have no idea what is going on 00:46:17 Why does it cycle. 00:46:35 ashtons: HackEso is a bot. ` is its command prefix. 00:46:44 ah 00:46:50 `h 00:46:55 `help 00:46:55 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch [] " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 00:47:10 `echo hello 00:47:11 hello 00:47:17 ashtons: And well... it has a bunch of less and more obscure commands. 00:47:32 `man 2 waitpid 00:47:33 Nice try. 00:47:33 int-e: What should it do instead? 00:47:40 shachaf: stop 00:47:53 `cat bin/n 00:47:54 line="${1-$(cat /hackenv/tmp/spline)}"; len="$(awk 'END{print NR}' /hackenv/tmp/spout)"; echo -n "$line/$len:"; sed -n "${line}{p;q}" /hackenv/tmp/spout; echo "$((line /hackenv/tmp/spline 00:47:57 i was not expecting that response 00:48:07 No output. 00:48:20 You could make it stop, I guess? 00:48:22 `$PATH 00:48:23 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: $PATH: not found 00:48:28 It has to print something. 00:48:29 `cat bin/man 00:48:30 ​#!/bin/sh \ echo Nice try. 00:48:35 `echo $PATH 00:48:36 ​$PATH 00:48:46 `` echo $PATH 00:48:46 :\ 00:48:47 ​/hackenv/bin:/usr/bin:/bin 00:48:55 `cat bin/` 00:48:56 ​#!/bin/bash \ cmd="${1-quote}" \ TIMEFORMAT="real: %lR, user: %lU, sys: %lS" \ shopt -s extglob globstar \ eval -- "$cmd" | rnooodl 00:49:10 it's all perrrfectly logical. 00:49:14 `echo banana 00:49:14 banana 00:49:36 `` 00:49:37 652) fizzie: What kind of speech recognition do you do? If you only need to recognize famous speeches, like Churchill or something, it should be pretty easy. 00:49:47 shachaf: I take it back. 00:49:47 Golly. 00:50:08 -!- kspalaiologos has quit (Ping timeout: 268 seconds). 00:50:10 `touch banana.txt 00:50:17 `? prefixes 00:50:17 No output. 00:50:19 Bot prefixes: fungot ^, HackEso `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, idris-bot ( , jconn ) , j-bot [ . 00:50:40 `ls 00:50:41 a.out \ banana.txt \ 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 00:50:46 `url / 00:50:47 File is outside web-viewable filesystem repository. 00:50:49 `url . 00:50:50 File is outside web-viewable filesystem repository. 00:50:50 -!- arseniiv has quit (Ping timeout: 240 seconds). 00:50:53 aww 00:51:06 so how do i put stuff in banana.txt now 00:51:34 I wanted this output: https://hack.esolangs.org/repo/file/tip/ 00:51:35 what's a banana.txt 00:51:35 if i remember correctly you can pipe output from echo into a file 00:51:44 i made it make a file called banana.txt 00:52:48 `url 00:52:49 https://hack.esolangs.org/repo/ 00:53:29 `echo "bananas are awesome" >> banana.txt 00:53:29 ​"bananas are awesome" >> banana.txt 00:53:37 `cat banana.txt 00:53:37 No output. 00:53:43 :( 00:53:52 `` rm a.out izhash.c test2 testfile 00:53:54 rm: cannot remove 'izhash.c': No such file or directory 00:54:06 `` rm izash.c 00:54:11 No output. 00:54:14 F 00:54:21 `echo "bananas are awesome" > banana.txt 00:54:22 ​"bananas are awesome" > banana.txt 00:54:31 kmc: yes? 00:54:47 `` ls wisdom | paste 00:54:48 https://hack.esolangs.org/tmp/paste/paste.6286 00:54:59 `` /bin/ls wisdom | paste 00:55:00 https://hack.esolangs.org/tmp/paste/paste.9161 00:55:15 ashtons: ` alone only takes a single command argument and no shell syntax 00:55:28 ashtons: the trick is to use `` [note the space]. And you can experiment in the tmp/ subdirectory... then it won't end up under version control. 00:55:43 okay 00:55:57 `? shaventions 00:55:58 Shaventions include: before/now/lastfiles, culprits, hog/{h,d}oag, le//rn, tmp/, mk/mkx, {s,p}led/sedlast, spore/spam/speek/sport/1/4/5, edit. Taneb did not invent them yet. 00:56:02 `` echo 'Big beats are the best, get high all the time.' > wisdom/'big beat manifesto' 00:56:06 `? big beat manifesto 00:56:07 No output. 00:56:08 Big beats are the best, get high all the time. 00:56:19 `? le/rn 00:56:20 le/rn makes creating wisdom entries manually a thing of the past. Usage: `le/[/]rn // 00:56:29 As for the naming, that's easy. 00:56:30 `langs 00:56:32 lambrelang doverlang befactionlang crablang pathlang wadelang wherlang 2dblang adepoullang sumlang fmandlang lxxxlang netwlang bajolang minlang bfreetonlang ttilang qwedlang pointlang frualang 00:56:33 ` ` echo "Bananas" > banana.txt 00:56:34 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: : not found 00:56:38 `coins 00:56:40 ​hifhcoin trincoin vcoin catcoin concoin julicoin liberacoin vhccoin symeshauvecoin rectpcoin netwofifcoin forthcoin thisesocoin peterbcoin liacoin aeonstrolcoin lopocoin duricoin paxcoin auresecoin 00:56:43 `cbt langs 00:56:44 words ${1---eng-1M --esolangs 20} | sed -re 's/( |$)/lang\1/g' 00:56:50 catcoin 00:56:54 :/ 00:57:18 Presumably that exists already. 00:57:20 `mk tmp/banana.txt//Bananas are tasty but not very juicy. 00:57:20 tmp/banana.txt 00:57:27 `cat tmp/banana.txt 00:57:28 Bananas are tasty but not very juicy. 00:57:33 -!- atslash has quit (Quit: This computer has gone to sleep). 00:57:39 :/ 00:58:21 `` echo -n "Bananas cause far fewer accidents than cartoons may lead you to believe." > tmp/banana.txt 00:58:22 No output. 00:58:29 `cat tmp/banana.txt 00:58:30 Bananas cause far fewer accidents than cartoons may lead you to believe. 00:58:49 `? banana 00:58:50 Bananananananana BATMAN! 00:59:36 ` ` echo -n "Bananas taste good and have potassium, but they bruise kinda easily. I still like to eat them though :)" > tmp/banana.txt 00:59:36 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: : not found 00:59:41 seriously 00:59:57 ashtons: there's no space *between* the two backticks. 01:00:10 `` echo -n "Bananas taste good and have potassium, but they bruise kinda easily. I still like to eat them though :)" > tmp/banana.txt 01:00:13 No output. 01:00:20 cat tmp/banana.txt 01:00:44 wait 01:00:50 The backtick is followed by a command name to be executed, then a space, and then the command's argument. 01:00:54 `` cat tmp/banana.txt 01:00:55 Bananas taste good and have potassium, but they bruise kinda easily. I still like to eat them though :) 01:01:15 right 01:01:15 So `` foo executes the ` command with parameter "foo". Which is why this is relevant: 01:01:18 `cat bin/` 01:01:19 ​#!/bin/bash \ cmd="${1-quote}" \ TIMEFORMAT="real: %lR, user: %lU, sys: %lS" \ shopt -s extglob globstar \ eval -- "$cmd" | rnooodl 01:02:30 nice 01:02:52 (Of course that's a simplification. Some commands are built into the bot, like `help) 01:02:59 -!- Frater_EST has joined. 01:03:12 will it recognize, say... 01:03:14 `halp 01:03:15 No halp 4 u 01:03:34 hahaha i was not expecting that 01:04:06 `dobg halp 01:04:09 6613:2016-01-29 echo "echo No halp 4 u \\$1" >> bin/halp \ 6612:2016-01-29 echo "#!/bin/sh" > bin/halp \ 6611:2016-01-29 echo "echo $1" >> bin/halp \ 6610:2016-01-29 echo "echo No halp 4 u" >> bin/halp \ 6609:2016-01-29 echo "#!/bin/sh" > bin/halp \ 6608:2016-01-29 chmod +x bin/halp \ 6607:2016-01-29 echo "help" >> bin/halp \ 6606:2016-01-29 echo "#!/bin/sh 01:05:49 i just remembered why I came to this chatroom :\ 01:06:31 naming is hard 01:06:47 very hard 01:07:03 and also really easy :P 01:07:32 (as fizzie pointed out above... just generate something random) 01:08:01 Why random? Just generate increasing names. 01:08:11 had to scroll up to find that 01:08:38 You only get ~sqrt(n) names before a collision if you do it randomly. 01:08:48 okay then 01:08:55 Right. The first 26 variable names are easy. Then it becomes a bit harder. 01:09:27 1112111 variables should be enough for anyone. 01:09:51 Those aren't all assigned, are they. 01:10:08 Wait, I meant 1114112. 01:10:22 > length ['\0'..] 01:10:24 1114112 01:10:30 > 2^16*17 01:10:32 1114112 01:10:55 Some of those aren't even assignable (like the surrogate code points for UTF-16). 01:12:16 right now i'm wondering if there's a program online somewhere that can randomly generate a plausable-sounding word 01:12:18 probably not 01:12:35 `german 01:12:36 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: german: not found 01:12:40 hrm 01:13:18 `words --german 10 01:13:20 ausly hörderensgeschönhein rungsvorschen paraktion gottag vorschaftsynopen condres bezieren prodendustierben indi 01:13:27 `words --english 10 01:13:28 Unknown option: english 01:13:32 fizzie knows, of course. 01:13:33 oh no 01:13:35 `words --list 01:13:35 valid datasets: --brazilian --bulgarian --canadian-english-insane --catalan --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --esolangs --finnish --french --gaelic --german --german-medical --hebrew --irish --italian --manx --norwegian --ogerman --opcode --pokemon --polish --portuguese --russian --spanish --swedish \ default: --eng-1M 01:13:38 too obscure, probably? 01:13:40 `words --hebrew 10 01:13:41 ​האור וסברתי העתקו וטיות דפרק בתפול בנלו חקרו שיש מאים 01:13:42 `words --help 01:13:42 Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ options: \ -l, --list list valid datasets \ -d, --debug debugging output \ -N, --dont-normalize don't normalize frequencies when combining \ multiple Markov models; this has the effect \ of making larger datasets more influential \ -o, --target-offset change the target length offset used in the \ 01:13:54 `words --eng-us 10 01:13:54 kanaticule chrin yourg xacted skeypl rati usmarkiequa lando preni gliardrivi 01:14:12 I gotta say those aren't very plausible. 01:14:12 Hmm, german... the trailing "ly" is odd. 01:14:20 is there a way to specify word length? 01:14:27 Some of the Hebrew ones are more plausible (several are actual words). 01:14:36 and "condres" doesn't look german at all. 01:14:40 Not directly, but you can affect the standard distribution with -o. 01:14:43 cause at this point i don't care much if it's pausible, more so if it's pronouncible 01:14:48 `words --eng-all -o 10 01:14:50 fathfieldobferlogly 01:14:54 (But of course we have loan words, so maybe it learned from those.) 01:14:56 `words --eng-all -o 12 10 01:14:57 avrailobeddleded gbowingenetitatexicochoodfron whlcandjhancequane expuriaprotyletablemean praethylludient dirconcianeogeora extrisatingbilissej matripublecescraticator towhyneckalnarawn humindltloniantioning 01:15:03 All words are pronouncible, some only once. 01:15:13 `words --eng-us -o 16 01:15:13 The English isn't doing so well. 01:15:14 affcloshnavdaupraetterban 01:15:27 `words --eng-us -o 16 16 01:15:28 grsedaledwardingerencing microsyarnyamaiary govardisawendeisation supjtherianticouncestrkakenrodi splarrowetkeotegenspielin focessolundrendorfempte asgimizedeemajorissed kuedaugauctivinctivossen allowtiendocumenoloxalre nenrinderinitroducenzelet feraytternianotersomatione iithaltlleroundedpoiloselege theritoidendefmeditegoritanci incurallctivingedivitrepat armicrouhlerowitat dubalatriumqueftremene 01:15:32 The Finnish words are sometimes pretty plausible, sometimes completely not (it doesn't understand vowel harmony). 01:15:39 `words --finnish 10 01:15:40 kukimästävilta venyvinä loittavaltta latasointävä pisemme aamuvanani barrosoluovi himpääsi aforittelevikseen kuvilläsi 01:15:43 fizzie: 16 may be too long 01:15:58 hmm 01:16:06 "venyvinä" is a real word, as is arguably "aamuvanani". 01:16:27 Oh that's the number of words. Why are the words so long though... 01:16:37 `words --eng-us -o 16 4 01:16:39 pirabildualinendently cretophiquakneyagammisperp nonpsyconvespectathebutstonch mpcarockentdrumminerievraneandu 01:17:11 `words --eng-us -o 4 16 01:17:12 ianaximurrexcluaen unettionaliniallin thanincrgonogeeder nambryadeon uuoitewoodli iyingtonelightef homicrossarthe narethylphotoph ofcentakethemke immunabild earumcumburythnol vaidhainia lenallyflyridge shonicataque threding trisiticantum 01:17:23 hmm. no clue what -o does. 01:17:30 For the record, -o isn't the target length, it's an offset. 01:17:35 `words --eng-us -o 0 10 01:17:36 fiverlike grphildt sutulari musenseguilimizi crossamg ringersonemee waainesindele duatiored maring deckley 01:17:37 `` words --help | paste 01:17:38 https://hack.esolangs.org/tmp/paste/paste.2803 01:17:43 `words --eng-us -o -4 10 01:17:44 barrie bouf confraga disibiliary libar mine scipisar kid potedeconoxim univar 01:17:54 `words --eng-us -o -4 16 01:17:55 That looks pretty reasonable. 01:17:55 liedisal kard peeck ramia besermo fatio orkmannarsoninewmant need edit nung hujici lusiedrintr gliaccal stru pertrever onemijde 01:17:59 Lengthwise. 01:18:07 oh sorry 01:18:27 (You just did that while I went to read the paste) 01:18:31 FWIW, the length modeling isn't particularly great, it's a restriction of character n-grams. 01:19:01 I think `words had some very ad-hoc hack for lengths. 01:19:21 is there a way to specify length in letters? 01:19:36 No, but you can just generate and filter. 01:20:00 gotcha 01:20:19 It's not really possible to have an exact target length for the kind of model it uses, unless you just do a hard truncate, and that way the word doesn't end the way words normally end. 01:23:45 `` words --eng-us 8 | grep -e /([a-z]{16})/ 01:23:46 ​/hackenv/bin/`: eval: line 5: syntax error near unexpected token `(' \ /hackenv/bin/`: eval: line 5: `words --eng-us 8 | grep -e /([a-z]{16})/' 01:24:26 just drop the /( and )/ 01:24:34 `` words --eng-us 8 | grep -e [a-z]{16} 01:24:35 No output. 01:24:38 `` words --eng-us 8 | grep -e [a-z]{16} 01:24:39 No output. 01:24:43 actually, hmm 01:24:46 `` words --eng-us 256 | grep -e [a-z]{16} 01:24:47 No output. 01:24:53 >:( 01:25:19 Ah, of course... it puts everything on one line. 01:26:17 Okay, so how do we deal with that? 01:27:31 `` echo $(words --eng-us 256 | tr \ \\n | grep -e ^[a-z]{16}\$) 01:27:32 No output. 01:27:49 `` words --eng-us 256 | grep -e [a-z]{16} > wordlist.txt 01:27:51 No output. 01:27:58 cat wordlist.txt 01:28:08 `cat wordlist.txt 01:28:09 No output. 01:28:15 >:( 01:28:18 -!- Frater_EST has quit (Read error: Connection reset by peer). 01:28:51 ask your doctor if potedeconoxim is right for you 01:28:56 `rm wordlist.txt 01:28:57 No output. 01:29:06 actually, is there a words dict for drug names? that would be fun 01:29:24 I recommend doing experiments like that in tmp/ (and probably also in /msg). 01:29:35 ask your doctor if pseudobanadeconoxim is right for you 01:29:47 ask your doctor if bananadine is right for you 01:29:52 can one create new dicts easily? 01:29:54 side effects may include turning into a banana 01:29:56 `paste bin/words 01:29:57 https://hack.esolangs.org/repo/file/tip/bin/words 01:31:06 `` echo $(words --eng-us -o 6 256 | tr \ \\n | grep -E '^[a-z]{16}$') 01:31:07 wenkephriskolock medebederabbaseq hypotaryleterney enticadoralfhoea ininograntanther 01:31:14 `paste share/WordData/eng-us 01:31:15 https://hack.esolangs.org/repo/file/tip/share/WordData/eng-us 01:31:22 `url share/WordData/Eng1M 01:31:23 https://hack.esolangs.org/repo/file/tip/share/WordData/Eng1M 01:31:29 grump 01:31:39 -!- Frater_EST has joined. 01:31:41 how do i create a data file 01:31:54 `help fetch 01:31:56 ​`fetch [] downloads files, and is the only web access currently available in HackEgo. It is a special builtin that cannot be called from other commands. See also `edit. 01:32:01 -!- Frater_EST has quit (Read error: Connection reset by peer). 01:32:04 `doag share/WordData/EngUs 01:32:09 0:2012-02-16 Initïal import. 01:32:25 `` echo $(words --eng-us -o 6 256 | tr \ \\n | grep -E '^[a-z]{16}$') 01:32:25 i mean how do i generate the file 01:32:26 vededesigtnisult letoriumfreynyne ctorthouaruntero semimalkylamotun 01:32:43 Looks like it's just some n-gram thing. 01:32:51 ashtons: you can do this in private chat with HackEso btw 01:33:01 oh ok 01:33:13 EngUs: perl Storable (v0.7) data (major 2) (minor 8) 01:33:14 (but please do not modify the file system in private chat, as a courtesy to the rest of us) 01:33:19 -!- Frater_EST has joined. 01:33:22 ok 01:33:22 so you create it with perl hth 01:33:30 -!- Frater_EST has left. 01:33:49 fizzie is the ngram master 01:34:44 (but nitia is ancient, so it's possible that he doesn't remember) 01:35:07 `? nitia 01:35:09 nitia is the inventor of all things. The BBC invented her. 01:36:24 i have found my esolang's name. psychairefatback! 01:36:35 rolls off the tongue 01:36:55 shachaf: kmc: Yes, you create the file with Perl. 01:37:08 I did add a dataset to `words semi-recently. 01:37:57 I don't have the original tools, but it wasn't too hard to reverse-engineer. I think I did it with a Perl oneliner? 01:38:05 oerjan: What are nitia's initials? 01:38:30 I think I probably saved the command somewhere. 01:38:32 Nitia never does anything, and yet through it all things are done. 01:38:50 `words --opcode 10 01:38:51 HINT_NOP54 PUSHFD INVEPT VCMPNGT_UQPD UD0 VFMSUBP VANDD BLEND FDIVP PMULLD 01:39:51 Ah, here we go. 01:40:04 cat ../x86.txt | tr a-z A-Z | perl -ne 'use Data::Dumper; use Storable; chomp; $len{length($_)}++; @w = split //, " $_ "; for ($i = 0; $i+3 < @w; $i++) { $c = $w[$i].$w[$i+1].$w[$i+2]; $freq{$c}->{$w[$i+3]}++; } END { store([\%freq,\%len], "Opcode"); }' 01:41:45 That should create a file compatible with `words; then you just include "file" it the script's @options list; it will automatically titlecase-ish it and look it up from "share/WordData/File" 01:41:47 fizzie: I spent a few minutes trying to figure out enough Perl to do it and then decided not to. 01:42:44 How Markovian. 01:43:15 -!- Frater_EST has joined. 01:43:47 -!- Frater_EST has left. 01:45:20 [[User:Ashtons]] N https://esolangs.org/w/index.php?oldid=67024 * Ashtons * (+28) Created page with "hi. i'm ashton. how ya doing" 01:47:52 -!- Frater_EST has joined. 01:48:10 -!- Frater_EST has left. 02:01:54 Also you don't actually need Data::Dumper, I think I used that just while debugging. 02:02:27 -!- xkapastel has quit (Quit: Connection closed for inactivity). 02:13:21 today's schlock mercenary should be ignored and talked about. anything else Hurtz. 02:13:28 *not talked 02:14:51 `5 w 02:14:53 1/2:taneb consistency//Taneb consistency is a consistency that is weaker than all other consistencies. Taneb invented it. \ graham's number//Graham's number isn't as delicious as his crackers. \ cello//The high level structure of Cello projects is inspired by /Haskell/, while the syntax and semantics are inspired by /Python/ and /Obj-C/. \ kanada//Your bankers' vain plazas never nurtured 02:14:59 `n 02:15:00 2/2:no one / And your concrete expanses lay fallow in the sun / And your cities all collapsing while your corrupt mayors shrug \ ichtymology//Ichtymology is like itymology, but even more fishy. 02:15:11 `cwlprits graham's number 02:15:13 oerjän \oren̈\ 02:15:30 `? itymology 02:15:31 Itymology is the science of understanding the true meaning of a statement. 02:20:10 -!- tswett[m] has quit (Changing host). 02:20:10 -!- tswett[m] has joined. 02:20:10 -!- tswett[m] has quit (Changing host). 02:20:10 -!- tswett[m] has joined. 02:22:39 also, petey should totally fab some dronuri moles and reflect some trust on the pa'anuri. 02:23:02 [[Psychairefatback]] N https://esolangs.org/w/index.php?oldid=67025 * Ashtons * (+3399) made the page for my esolang! 02:23:16 -!- FraterEST has joined. 02:24:11 [[Language list]] M https://esolangs.org/w/index.php?diff=67026&oldid=67004 * Ashtons * (+23) /* P */ 02:24:31 [[User:Ashtons]] https://esolangs.org/w/index.php?diff=67027&oldid=67024 * Ashtons * (+29) 02:25:02 [[User:Ashtons]] https://esolangs.org/w/index.php?diff=67028&oldid=67027 * Ashtons * (+4) 02:25:27 i see yall see the page i made :p 02:33:46 oerjan: I'm waiting for Schlock's display of his innate diplomatic and cross-species communication skills (as displayed in the very first strip. https://www.schlockmercenary.com/2000-06-12) 02:40:09 that too. 02:43:36 oerjan: Actually, rather than dronuri (nice one), isn't it more likely that we'll get an antenna instead. 02:44:15 Have I complained already that modern x86 CPUs are insane? 02:47:32 Ah no, I'm barking up the wrong tree. GCC's vectorizing the code I'm looking at, so doing it manually has little effect. 02:48:19 The sentiment is still there though... you can squeeze so many instructions into the time of one RAM access. 02:53:28 int-e: dronuri is the term the pa'anuri used for them 02:55:54 although you're right the fabber might have had the plans for the antennas too 03:11:15 -!- FraterEST has quit (Read error: Connection reset by peer). 03:13:01 -!- Frater_EST has joined. 03:15:44 -!- ashtons has quit (Remote host closed the connection). 03:19:23 The other day I learned that a "dronie" is a selfie taken with a drone. 03:28:56 meh. of course it is 03:31:15 So a speedie is a selfie taken by speeding into a speed camera. 03:38:19 -!- Frater_EST has quit (Read error: Connection reset by peer). 03:40:49 -!- Frater_EST has joined. 03:41:26 whoa, my solver is 5x faster than minisat on these instances. 03:41:28 Despite just being a worse version of minisat. 03:43:06 Oh, if I disable restarts minisat solves it 30x faster than my solver (which doesn't do restarts). So probably restarts are just not well-suited or something. 03:43:45 Wait, no, only 2x faster. 03:48:00 -!- oerjan has quit (Quit: Nite). 03:55:38 -!- imode has joined. 04:23:03 -!- Frater_EST has left. 04:23:23 -!- ais523 has joined. 04:24:00 @messages? 04:24:00 Sorry, no messages today. 04:24:11 -!- ais523 has quit (Client Quit). 04:44:54 -!- TellsTogo has joined. 05:18:35 -!- Sgeo__ has joined. 05:21:37 -!- Sgeo_ has quit (Ping timeout: 240 seconds). 06:04:41 -!- imode has quit (Ping timeout: 276 seconds). 06:30:44 @metar lowi 06:30:45 LOWI 120620Z VRB01KT 5000 -RASN BR FEW005 SCT007 BKN013 01/00 Q1010 TEMPO 3000 SNRA BKN008 06:31:05 (eww) 07:21:40 -!- nfd9001 has joined. 07:22:57 -!- aloril has quit (Ping timeout: 268 seconds). 07:27:24 -!- aloril has joined. 07:31:40 -!- nfd9001 has quit (Quit: Leaving). 07:35:22 -!- kritixilithos has joined. 07:43:16 -!- Deewiant has quit (Ping timeout: 264 seconds). 07:54:05 -!- Sgeo_ has joined. 07:56:57 -!- Sgeo__ has quit (Ping timeout: 240 seconds). 07:58:29 -!- kritixilithos has quit (Quit:  ). 08:07:19 -!- b_jonas has joined. 08:07:24 `whatis waitpid 08:07:25 waitpid(2) - wait for process to change state \ waitpid(3p) - wait for a child process to stop or terminate \ waitpid(3glibc) - Process Completion 08:07:26 ashtons: ^ 08:08:10 `url 08:08:11 https://hack.esolangs.org/repo/ 08:08:14 int-e: ^ 08:12:24 int-e: not only that, but it won't generate more than a few dozen words with one command. you need a loop like ( for x in {1..10}; do words 16; done ) to generate 256 word. 08:12:33 um... yeah, that's obviously not 16 08:12:35 but you get the idea 08:35:59 ``` (for x in {1..16}; do words --eng-US -o 6 16; done) | perl -we 'local$/; $s=; while($s=~/(\S+)/g){ push@{$l{length$1}},$1; }; $m=-1; for (sort keys%l) { if ($m<@{$l{$_}}) { $m=@{$l{$_}};$n=$_; } } print "@{$l{$n}}\n";' # if you want words of equal length 08:36:15 tegourneckstor heilcaiyarwink sphotosomoveri descarnallotel dutierundeutio anullockunsman larywaynelland herieclamasten achelsbotswerk piangewahander rotrontoonment renerthrinimre tumpanhomating restermalizing cepeiirginaido formeudongoetl grubbellizedcn denturandberen semirellafisin disatiralevsky hightsforciner tworticeptinum decommereofled pilaintrianden gentermathebra ocebaneysanath fielettedleryn methylsumnecke newchuligelief alzweihuumva 08:36:16 ``` (for x in {1..16}; do words --eng-US -o 0 16; done) | perl -we 'local$/; $s=; while($s=~/(\S+)/g){ push@{$l{length$1}},$1; }; $m=-1; for (sort keys%l) { if ($m<@{$l{$_}}) { $m=@{$l{$_}};$n=$_; } } print "@{$l{$n}}\n";' # if you want words of equal length 08:36:23 codenovax changlyte atrimeter mazzoleve springrap boronlria sspressit ethylarve ashpeesal truchuval wageprile anadebled icizatite brombrina wennellin hemointer supennill folically kairendel ficaluene nooddered ihvrikaia upcrtamer reptackep deedjacke butyranth devavrana uaregunde cliovozdz ptureatte protoucbi camplaind 08:36:24 ``` (for x in {1..16}; do words --eng-US -o -6 16; done) | perl -we 'local$/; $s=; while($s=~/(\S+)/g){ push@{$l{length$1}},$1; }; $m=-1; for (sort keys%l) { if ($m<@{$l{$_}}) { $m=@{$l{$_}};$n=$_; } } print "@{$l{$n}}\n";' # if you want words of equal length 08:36:32 smod rock atin tulu itne pton elkl boum fide tock biic obfc unlr wrai eige cond pyra pale kaun aveh fful amba goag ehun savi ysti nanl wref phag chan ning utlc thin ford trae fibe zuge unie pdog ting groe unit rooz dahi eron yuan ment coln huko agfa ditz midc chri rect enrl will port paug meth gada ling dore grod vert fted inte jina nnab bean ambo bibu tena anie firn 08:39:06 -!- b_jonas has quit (Quit: leaving). 09:34:12 -!- TellsTogo has quit (Remote host closed the connection). 09:51:24 `asm pext %rax, %rcx, %rdx 09:51:25 0: c4 e2 f2 f5 d0 pext %rax,%rcx,%rdx 09:51:28 What an encoding. 09:56:20 It would be nice if `asm supported 32-bit x86. 09:56:29 -!- nico_nico_ has joined. 09:56:31 I guess c4 and c5 were les and lds? 10:00:03 -!- atslash has joined. 10:01:04 Oh, but VEX works even in 32-bit mode, which is why it inverts the initial bits, so they make an invalid modrm byte. I remember now. 10:08:24 -!- Deewiant has joined. 10:14:52 -!- nico_nico_ has quit (Quit: Leaving). 10:21:16 "VEX.LZ.F3.0F38.W1 F5 /r PEXT r64a, r64b, r/m64" 10:29:01 -!- arseniiv has joined. 11:12:35 -!- Sgeo__ has joined. 11:15:49 -!- Sgeo_ has quit (Ping timeout: 250 seconds). 11:58:40 -!- Sgeo_ has joined. 12:01:45 -!- Sgeo__ has quit (Ping timeout: 250 seconds). 12:02:16 -!- Melvar has quit (Quit: WeeChat 2.4). 12:13:03 -!- Melvar has joined. 12:38:57 -!- ddmm_ has quit (Remote host closed the connection). 12:39:07 -!- tswett[m] has quit (Read error: Connection reset by peer). 12:39:18 -!- wmww has quit (Read error: Connection reset by peer). 12:43:10 -!- Sgeo_ has quit (Read error: Connection reset by peer). 12:43:36 -!- Sgeo_ has joined. 12:46:05 -!- ArthurStrong has joined. 12:48:20 -!- mniip has quit (Ping timeout: 612 seconds). 12:51:29 -!- arseniiv has quit (Read error: Connection reset by peer). 12:51:46 -!- arseniiv has joined. 13:30:24 -!- mniip has joined. 13:34:44 -!- wmww has joined. 13:34:44 -!- tswett[m] has joined. 13:34:51 -!- ddmm_ has joined. 13:36:39 -!- arseniiv has quit (Ping timeout: 250 seconds). 13:46:02 -!- Melvar has quit (Ping timeout: 240 seconds). 13:46:29 -!- Melvar has joined. 13:49:12 -!- arseniiv has joined. 13:56:52 -!- tswett[m] has quit (Changing host). 13:56:52 -!- tswett[m] has joined. 13:56:52 -!- tswett[m] has quit (Changing host). 13:56:52 -!- tswett[m] has joined. 14:07:08 -!- Sgeo__ has joined. 14:09:16 -!- xkapastel has joined. 14:10:37 -!- Sgeo_ has quit (Ping timeout: 265 seconds). 14:11:38 -!- imode has joined. 14:21:15 -!- unlimiter has joined. 14:26:37 Saw this digital painting on Reddit https://i.redd.it/ux27c13n73y31.jpg and decided to turn it into a magic card https://i.imgur.com/cf994At.png 14:31:43 that must be one hell of a headache :P 14:32:09 -!- imode has quit (Ping timeout: 268 seconds). 14:34:47 -!- Frater_EST has joined. 14:46:14 -!- unlimiter has quit (Quit: WeeChat 2.6). 14:52:50 -!- kritixilithos has joined. 14:56:17 -!- arseniiv_ has joined. 14:59:25 -!- arseniiv has quit (Ping timeout: 250 seconds). 15:02:25 -!- imode has joined. 15:22:06 -!- imode has quit (Ping timeout: 268 seconds). 15:26:28 -!- imode has joined. 15:26:54 -!- hppavilion[1] has joined. 15:49:35 -!- Frater_EST has quit (Read error: Connection reset by peer). 15:50:12 -!- Frater_EST has joined. 15:59:10 -!- Frater_EST has quit (Read error: Connection reset by peer). 16:02:09 -!- Frater_EST has joined. 16:11:36 -!- imode has quit (Ping timeout: 240 seconds). 16:15:20 [[Thue]] M https://esolangs.org/w/index.php?diff=67029&oldid=63578 * PaniniTheDeveloper * (+11) 16:19:52 -!- Frater_EST has quit (Read error: Connection reset by peer). 16:22:15 -!- Frater_EST has joined. 16:23:19 -!- nico_nico has joined. 16:23:41 -!- nico_nico has quit (Client Quit). 16:39:14 -!- kritixilithos has quit (Remote host closed the connection). 16:39:37 -!- kritixilithos has joined. 16:41:21 -!- imode has joined. 16:55:34 -!- Sgeo_ has joined. 16:56:53 -!- kspalaiologos has joined. 16:58:49 -!- Sgeo__ has quit (Ping timeout: 265 seconds). 17:04:37 -!- hppavilion[1] has quit (Ping timeout: 265 seconds). 17:29:19 -!- hppavilion[1] has joined. 17:37:00 -!- imode has quit (Ping timeout: 265 seconds). 17:49:35 -!- hppavilion[2] has joined. 17:52:57 -!- hppavilion[1] has quit (Ping timeout: 265 seconds). 17:54:33 -!- nico_nico has joined. 17:59:35 -!- b_jonas has joined. 17:59:50 shachaf: is that how the instruction encoding works? I didn't know that 18:02:15 -!- nico_nico has quit (Quit: Leaving). 18:13:40 -!- FreeFull has joined. 18:16:20 `` asmbf <<<"mov r1,0/div r1,0" 18:16:21 ​+>+[<[>>+>+<<<-]>>[<<+>>-]>[[-]>>[-]>>>><<<<[<<<+>>>-]<<<[>>>>>>>[<<<<<<+>+>>>>>-]<<<<<[>>>>>+<<<<<-]<[>+<<-[>>[-]>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<<[<-[>>-<<[-]]+>-]<-]>>+<<<]>>>>>>>[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]<<<[-]>[-]>>]<<] 18:16:30 `` asmbf <<<"mov r1,0/div r1,0" > stuff.b 18:16:32 No output. 18:16:35 `` bfi stuff.b 18:16:36 ​/hackenv/bin/`: line 5: bfi: command not found 18:18:30 `` brainfuck 18:18:31 ​/hackenv/bin/`: line 5: brainfuck: command not found 18:18:34 `? brainfuck 18:18:36 brainfuck is the integral of the family of terrible esolangs. The name is a euphemism for "beef". bf -c -t "+>+++++>+++" | mklang --array 18:18:42 bf 18:18:47 `` bf 18:18:47 Run what? 18:18:57 `` bf -h 18:18:58 No output. 18:19:21 `` bf -h 2>&1 18:19:22 No output. 18:19:34 `` bf stuff.b 18:19:35 ​. 18:22:38 `` asmbf <<<"out .0" > stuff.b 18:22:40 No output. 18:22:40 `` bf stuff.b 18:22:41 ​. 18:22:49 `` bf -c `cat stuff.b` 18:22:49 No output. 18:22:54 `` bf -c "`cat stuff.b`" 18:22:55 No output. 18:23:12 `` cat stuff.b 18:23:13 ​+>+[<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++.[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]<<<[-]>[-]>>]<<] 18:23:19 c'mon man 18:23:26 what's up with this biased interpreter 18:23:31 `` whereis bf 18:23:32 bf: /hackenv/bin/bf 18:23:41 `` cat /hackenv/bin/bf 18:23:42 ​#! /bin/bash \ [[ $# > 0 ]] || { echo "Run what?"; exit 1; } \ ci="$1" \ echo -n "${ci#*!}" | { /hackenv/interps/egobf/src/egobfi8 <(echo -n "${ci%%!*}") ; } 18:23:47 a ha 18:23:50 bf -c -t "`cat stuff.b`" 18:24:00 `` bf -c -t "`cat stuff.b`" 18:24:03 No output. 18:24:12 `` /hackenv/interps/egobf/src/egobfi8 -h 18:24:13 Use: egobfi{width} [options] [file] \ Options: \ -eof {0|-|n} \ set EOF mode: 0, -1 or no-change (respectively) \ [default: 0] \ -debug \ activate the # command [default off] \ -unicode {on|off} \ set unicode mode on or off [default off] \ -wrap {on|off} \ set wrappong on or off [default on] 18:24:30 `` /hackenv/interps/egobf/src/egobfi16 stuff.b 18:24:31 0 18:24:33 purrfect 18:24:44 `` asmbf <<<"mov r1,0/div r1,0" > stuff.b 18:24:46 No output. 18:24:47 `` /hackenv/interps/egobf/src/egobfi16 stuff.b 18:24:48 No output. 18:25:30 `` bf -c -t "+>+++++>+++" 18:25:31 No output. 18:25:49 `` bf -c -t "+>+++++>+++" | mklang --array 18:25:50 ​/hackenv/bin/`: line 5: mklang: command not found 18:26:20 `? egobfi 18:26:21 egobfi? ¯\(°​_o)/¯ 18:26:26 `? egobfi8 18:26:27 egobfi8? ¯\(°​_o)/¯ 18:26:31 our names are exactly the same length, kspalaiologos 18:26:45 what a coincidence ;) 18:27:05 `` egobfi8 18:27:06 ​/hackenv/bin/`: line 5: egobfi8: command not found 18:27:18 `` cat /hackenv/interps/egobf/src/egobfi8 18:27:18 ​ELF............>.....<@.....@.......[..........@.8..@.&.#.......@.......@.@.....@.@........................................@......@............................................@.......@.....T!......T!........ ............X!......X!`.....X!`...........@........ ...........p!......p!`.....p!`......................................@.....@.....D.......D..............Ptd.........@.....@.....D.......D... 18:27:22 crap, its binary 18:27:34 `` ls /hackenv/interps/egobf/ 18:27:35 aclocal.m4 \ AUTHORS \ ChangeLog \ config.h \ config.h.in \ config.log \ config.status \ configure \ configure.ac \ COPYING \ INSTALL \ Makefile \ Makefile.am \ Makefile.in \ NEWS \ PORTING \ README \ scripts \ src \ stamp-h1 18:27:43 `` cat /hackenv/interps/egobf/README 18:27:44 ​== egobfi == \ A powerful and fast-ish Brainfuck interpreter. \ \ Use: egobfi{width} [options] [file] \ Options: \ -eof {0|-|n} \ set EOF mode: 0, -1 or no-change (respectively) \ [default: 0] \ -debug \ activate the # command [default off] \ -unicode {on|off} \ set unicode mode on or off [default off] \ -wrap {on|off} \ set wrappong on or off [default on] \ \ \ == egobfc == \ An almost-as-powerful Brainfuck compiler 18:27:46 are you the same person as the malbolger in ppcg? 18:27:53 yes 18:27:56 that's true 18:28:06 I'm a Seed evangelist too 18:28:39 -!- xkapastel has quit (Quit: Connection closed for inactivity). 18:28:58 `` cat /hackenv/interps/egobf/LICENSE 18:28:59 cat: /hackenv/interps/egobf/LICENSE: No such file or directory 18:29:07 `` cat /hackenv/interps/egobf/COPYING 18:29:08 ​ GNU GENERAL PUBLIC LICENSE \ Version 2, June 1991 \ \ Copyright (C) 1989, 1991 Free Software Foundation, Inc. \ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA \ Everyone is permitted to copy and distribute verbatim copies \ of this license document, but changing it is not allowed. \ \ Preamble \ \ The licenses for most software are designed to take away your \ freedom to share and change it. By c 18:29:11 no author names 18:29:13 erghhh 18:29:20 `` ls /hackenv/interps/egobf/src/ 18:29:21 bfc.c \ bfc.h \ bfi.c \ bfi.h \ c2m \ c2m.c \ c2m.h \ egobfc \ egobfc2m \ egobfc2m-c2m.o \ egobfc2m-egobfi.o \ egobfc-bfc.o \ egobfc-egobfi.o \ egobfc-optimize.o \ egobfi16 \ egobfi16-bfi.o \ egobfi16-egobfi.o \ egobfi16-optimize.o \ egobfi32 \ egobfi32-bfi.o \ egobfi32-egobfi.o \ egobfi32-optimize.o \ egobfi64 \ egobfi64-bfi.o \ egobfi64-egobfi.o \ egobfi64-optimize.o \ egobfi8 \ egobfi8-bfi.o \ egobfi8-egobfi.o \ egobfi8-optimize.o \ egobfi. 18:29:31 `` cat /hackenv/interps/egobf/src/bfi.h 18:29:32 ​/* \ * Copyright (c) 2005 Gregor Richards \ * \ * This file is part of egobfi. \ * \ * egobfi is free software; you can redistribute it and/or modify \ * it under the terms of the GNU General Public License as published by \ * the Free Software Foundation; either version 2 of the License, or \ * (at your option) any later version. \ * \ * egobfi is distributed in the hope that it will be useful, \ * but WITHOUT ANY WARRANTY; w 18:30:24 ashtons: I recommend using a name made of multiple words 18:30:56 egobfi, HRM 18:31:23 it seems biased tho 18:32:55 ashtons: it's easier to invent names that way, because you can use a dictionary. eg. I call my future esolang "consumer society", or ais has an esolang called "waterfall model" etc 18:33:36 actually it's "the Waterfall Model" 18:34:01 he also has ones called "But Is It Art?" and "Along and Across" and "High Rise" etc, all made of nice dictionary words 18:34:09 do the old esolangers ever join this channel again? 18:34:21 kspalaiologos: at least one did 18:34:23 like, pikhq, Gregor? 18:35:31 * pikhq never left 18:35:55 Ive just been quiet lately 18:36:03 ah, fine 18:36:38 well, it might depend on what you mean by "old" of course 18:37:20 that used to hang out here 2002=2010 18:37:24 *- 18:37:45 and Gregor left not that long ago really, because he used to run HackEgo, didn't he? 18:38:53 there are regulars who never left for long of course 18:39:30 i rejoined after a long hiatus 18:39:41 we had mr. calimari 18:39:49 or however he was called 18:40:16 kmc: did you use the same nick before that hiatus? 18:41:06 yes 18:42:01 ``` du -sc .hg # how large is the hackeso hg repository? I wonder if I should clone it for backup 18:42:15 hmm... that times out 18:42:18 `` du -sc .hg 18:42:20 suspicious 18:42:25 umm 18:42:32 No output. 18:42:49 No output. 18:42:59 it actually needs only one of -s or -c , but I keep forgetting which is which 18:43:07 let's check it 18:43:09 `` du -c .hg 18:43:11 `` du -s .hg 18:43:12 116.hg/cache \ 12.hg/store/dh/interps/clc-inte/clc-inte/blib/lib/language/intercal/backend \ 16.hg/store/dh/interps/clc-inte/clc-inte/blib/lib/language/intercal/charset \ 28.hg/store/dh/interps/clc-inte/clc-inte/blib/lib/language/intercal/interfac \ 108.hg/store/dh/interps/clc-inte/clc-inte/blib/lib/language/intercal/include \ 44.hg/store/dh/interps/clc-inte/clc-inte/blib/lib/language/intercal/generici \ 24.hg/store/dh/interps/clc-inte/ 18:43:18 it's -s 18:43:25 that's what means it writes only the final result 18:43:33 not the size of every recursive subdirectory 18:43:39 hmm 18:43:42 No output. 18:43:47 what 18:43:55 `` du --help 18:43:56 Usage: du [OPTION]... [FILE]... \ or: du [OPTION]... --files0-from=F \ Summarize disk usage of the set of FILEs, recursively for directories. \ \ Mandatory arguments to long options are mandatory for short options too. \ -0, --null end each output line with NUL, not newline \ -a, --all write counts for all files, not just directories \ --apparent-size print apparent sizes, rather than disk usage; although 18:43:59 "No output." means that it's timed out 18:44:01 -!- atslash has quit (Read error: Connection reset by peer). 18:44:02 in this case 18:44:04 ah yes 18:44:05 alright 18:44:08 took too long to execute 18:44:08 misleading text 18:44:24 ``` du -s wisdom; echo done 18:44:25 6336wisdom \ done 18:44:37 ``` du -s .hg; echo done # if you don't see done, then it's timed out (or the output is too long) 18:45:07 No output. 18:45:13 -!- atslash has joined. 18:46:58 gnu parallel? 18:54:26 I don't think it's a CPU-bound operation. 18:54:48 Anyway, the repo is in the order of 779M. 18:55:32 Of which 271M is the current working copy, the rest is history. 18:55:55 fizzie: thanks 18:56:09 wow, what's so large in the workong copy? 18:56:16 ``` du -s share/mtg 18:56:17 24876share/mtg 18:56:33 ``` du -s interps 18:56:36 30684interps 18:56:38 83M paste/ is the biggest chunk after .hg. 18:57:04 After that, share/, src/, interps/, bin/, lib/, factor/ in that order. 18:57:10 thanks 18:57:49 There are five 10485760-byte files in paste/, that takes up the most space. 18:57:58 fizzie: is tmp accessible through `paste or `url ? 18:58:06 Through `url, yes. 18:58:25 -!- LKoen has joined. 18:58:29 then we could have a paste command that stores its data there? 18:58:51 That's what paste does nowadays, actually. 18:59:26 I see 18:59:26 -!- kritixilithos has quit (Quit: kritixilithos). 18:59:44 Huh, looks like I changed it myself, 2017-02-16. 18:59:48 I have no recollection of that. 19:00:17 well that makes sense, since you'd have to fix stuff if paste filled up the file system 19:02:53 tmp/ itself is only 9.4M, but I think it's been cleaned up every now and then. 19:05:21 `` rm paste/paste.{30459,23201,25872,16755,30692,311,27157,25139,2340,12841} # doesn't really help with the history, but I guess making the working copy smaller has some benefits. 19:05:24 No output. 19:07:26 ``` chmod -c u+x tmp/EGY* 19:07:27 mode of 'tmp/EGYj6LpQgFKM' changed from 0655 (rw-r-xr-x) to 0755 (rwxr-xr-x) 19:07:35 ``` rm -rv tmp/EGY* 19:07:36 removed directory 'tmp/EGYj6LpQgFKM/s' \ removed directory 'tmp/EGYj6LpQgFKM' 19:11:17 ``` du -ac * | grep -E "^[0-9]{4}" | tr \\t \ | sort -nr 19:11:22 216432 total \ 78076 share \ 39192 share/WordData \ 37444 src \ 33152 src/factor-linux-x86-64-0.95.tar.gz \ 30684 interps \ 24876 share/mtg \ 16724 bin \ 14200 paste \ 10896 interps/c-intercal \ 10736 lib \ 10244 factor \ 10240 factor/factor.image \ 9608 tmp \ 7444 tmp/out \ 6432 share/WordData/EngAll \ 6336 wisdom \ 6208 interps/clc-intercal \ 4892 lib/frink \ 4280 share/WordData/Eng1M \ 4040 lib/p7zip-16.02 \ 3740 share/WordData/EngFiction \ 19:18:06 -!- Frater_EST has quit (Read error: Connection reset by peer). 19:19:28 -!- ais523 has joined. 19:22:40 I'm guessing src/factor-linux-x86-64-0.95.tar.gz is also not really needed to be kept permanently. 19:24:05 I don't know what that is 19:24:57 -!- Frater_EST has joined. 19:27:29 -!- ais523 has quit (Remote host closed the connection). 19:28:42 -!- ais523 has joined. 19:29:37 it looks like a source tarball to me 19:30:00 -!- b_jonas has quit (Quit: Lost terminal). 19:30:28 -!- b_jonas has joined. 19:35:34 anyway, I should probably clone them later then 19:36:04 fizzie: I have a question about the channel logs. they are present in three formats. do you have the raw (IRC) format even when you fill the logs back from other logs? 19:36:23 I wonder if I should download the logs too, but want to figure out if the raw logs would be the best 19:47:14 All three formats are rendered on the fly, actually. The actual storage format I use isn't (currently) downloadable; it's a brotli-compressed stream of length-delimited protos. 19:48:13 That said, I don't think there's any loss of fidelity between it and the "raw" format. Except *maybe* in timestamp accuracy, don't remember. 19:49:34 For backfilling, I have a set of programs that convert from the other log formats (clog, my own personal logs, maybe some others) to that proto-based format, as closely as they can manage. 19:52:50 https://github.com/fis/esolangs/blob/master/esologs/log.proto is the storage proto, as you can see it's pretty close to being 1:1 with the "raw" format. 19:56:37 (There are done arguable problems, in that it can't distinguish "FOO x y" from "FOO x :y", or represent lines that are not valid in terms of the IRC protocol. But it is what it is.) 19:57:01 s/done/some/ 20:00:42 fizzie: I don't need the actual storage format, the IRC raw format is good enough 20:01:45 Yeah, I think it doesn't even lose in timestamp accuracy, looks like it's microseconds for both. 20:02:36 fizzie: and the logs are still not accessible on HackEso's file system, right? 20:03:23 Right. 20:03:32 I was thinking of making a `why command that looks up the context from the timestamp of a hg commit, for which I either need the logs on HackEso, or download them here and make a compressed database that represents just some of the timestamps to be able to find the right anchor 20:03:35 I was planning to make them accessible over HTTP from HackEso. 20:03:49 Probably with some sort of a search/query API. 20:04:01 that could work too 20:04:25 this command would need to look up one or sometimes two days per revision 20:06:48 I'd have to download the HTML formatted logs for this though, to make sure that the lines match 20:07:17 and even then hope that the daily logs has the same number of logical lines as the day's section in the monthly HTML 20:07:31 and that the anchors are always numbered sequentially 20:08:21 but those are probably true 20:08:45 Yes, all the HTML is generated on the fly so it should always match. 20:11:25 fizzie: you can probably add a link to https://esolangs.org/logs/ refing the new log website https://github.com/KrzysztofSzewczyk/esologs/ by the way 20:11:41 well, unless you think that one won't last for long 20:23:42 it's been up and running for around 3 months now 20:24:08 -!- hppavilion[6] has joined. 20:24:36 -!- kspalaiologos has quit (Quit: Leaving). 20:27:37 -!- hppavilion[2] has quit (Ping timeout: 265 seconds). 20:30:03 -!- kspalaiologos has joined. 20:31:23 -!- Frater_EST has left. 20:57:24 [[NFuck]] N https://esolangs.org/w/index.php?oldid=67030 * SoYouWantMeToDoSomethingButIWont * (+524) Created page with "== NFuck == Basically this is BrainFuck with N Dimensions. === Commands === {| class="wikitable" |- ! Command !! Description |- | + || Add one to current cell. |- | - || Remov..." 21:01:12 [[Language list]] https://esolangs.org/w/index.php?diff=67031&oldid=67026 * SoYouWantMeToDoSomethingButIWont * (+13) Added NFuck 21:14:02 -!- hppavilion[6] has quit (Ping timeout: 276 seconds). 21:36:52 -!- atslash has quit (Quit: This computer has gone to sleep). 21:42:22 -!- atslash has joined. 21:45:14 -!- hppavilion[6] has joined. 21:45:42 1186 hth 21:46:57 oh, that was fast 21:47:12 `olist 1186 21:47:12 olist 1186: shachaf oerjan Sgeo FireFly boily nortti b_jonas 21:47:16 `thanks fungot 21:47:16 b_jonas: that might be the case 21:47:17 Thanks, fungot. Thungot. 21:49:55 b_jonas: why do you persistently act like you can't distinguish fungot from Rich Burlew? 21:49:55 ais523: but valgrind is slow because it involves psyntax 21:50:57 it seems like an unlikely confusion to have, I rarely have trouble telling them apart 21:51:52 ais523: no no, Rich draws the comics, fungot only publishes them 21:51:52 b_jonas: i can only see my own messages. 21:52:15 and I can't thank Rich here, he's not on this channel 22:36:27 ais523: I rarely have trouble telling "thanking fungot for olist" apart from "being unable to distinguish fungot from Rich Burlew". 22:36:27 shachaf: it doesnt matter which direction you hold the ' increase red' key for evilwm 22:39:59 I wrote a program to color the output of a program red or green depending on whether it's stdout or stderr. 22:40:16 I wish it was possible to do the interleaving correctly. 22:43:31 NetBeans does that (well, black for stdout, red for stderr) 22:43:35 it also gets the interleaving wrong 22:43:55 I think getting it correct would involve somehow hooking the OS scheduler? 22:44:07 [[///]] https://esolangs.org/w/index.php?diff=67032&oldid=66076 * Odog8 * (+156) yEEe I made something good for once 22:44:13 (e.g. by ptracing the program and halting it whenever a write call occurred, until your own program could get scheduled and read the output) 22:44:19 Maybe I should settle for getting it right for a single-threaded single-process program. 22:44:28 Where you could just ptrace, right. 22:46:33 [[///]] https://esolangs.org/w/index.php?diff=67033&oldid=67032 * Odog8 * (+12) 22:46:38 oh, I'm being stupid: you ptrace the program and when it does a write() call, you don't even bother reading the resulting filehandle, you just read the data right out of the argument it gives to write :-P 22:47:03 [[///]] https://esolangs.org/w/index.php?diff=67034&oldid=67033 * Odog8 * (+11) /* Thue-Morse sequence */ 22:47:03 (you still have to read stderr/stdout if it's a pipe to prevent it clogging up, but maybe you could just use /dev/null) 22:47:37 Well, no reason not to read it. 22:47:47 alternatively, less general but less efficient: LD_PRELOAD alternative read()/write() routines 22:48:21 LD_PRELOAD isn't so good because the official API in Linux is system calls, not libc calls. 22:49:16 indeed 22:49:56 hmm, perhaps the dynamic linker should have an option to replace "syscall" (and "int $0x80") with calls to some particular hook code, that'd avoid the context switch in this case 22:50:13 (the obvious downside is how do you fit that into two bytes?) 22:50:40 How would it do that? 22:51:13 I think Linux should probably let people override system calls in userspace in a better way than ptrace. 22:51:37 ais523: that gets tricky though, because you have to interpret like ten other syscalls besides write, just in case the program uses them 22:53:47 plus you may have to handle different syscall types that coexist on x86_64 22:54:05 b_jonas: yes, at least the number of syscalls is finite and small enough to go through all of them 22:54:30 also, in the case of stderr/stdout, the program writing to them probably doesn't expect them to be seekable, that cuts down the number of possibilities somewhat 22:55:02 actually, in retrospect, I think it's a design flaw for streams and seekable files to be given the same API, the set of operations that can be performed on them is so different 22:55:23 I think the Windows thing where there's no syscall API, just a dynamically linked OS library, has some benefits. 22:55:25 ais523: for fixing interleaving, couldn't you just use pipes for stdout and stderr, and set their capcity to as low as possible, so that they always block on a second write? 22:55:42 using fcntl F_SETPIPE_SZ on linux (and there's a call on windows too) 22:56:05 that's still not perfect, because you still can't tell the order between one stdout and one stderr write 22:56:11 hmm 22:56:53 shachaf: the x86_64 abi started by saying that libc is the recommended syscall interface 22:57:00 libc is scow 22:57:05 but of course everyone wants to call the syscall directly, because it's faster or something 22:57:08 so we can't have that 22:57:11 and I for one agree 22:57:19 libc has like ten layers of wrapper around even simple syscalls 22:57:27 b_jonas: Someone pointed out that in Linux, epoll will tell you the order that fds became readable. 22:57:58 shachaf: if Windows actually were like that, it wouldn't be too bad, but the OS library that's dynamically linked doesn't have a documented/defined API, so you need to use a libc as a wrapper anyway 22:58:07 moving the arguments from where a function expects them to where a syscall expects them, errno check, possible restart on signals (or is it the kernel that's doing that now?), 22:58:16 ais523: Hmm? You don't have to use libc for Windows. 22:58:35 shachaf: what dynamically linked OS library are you thinking of? 22:58:37 ReadFile is maybe not a system call, but it's an OS interface that isn't libc. 22:58:49 I'm thinking of kernel32.dll, I think. 22:59:05 msvcrt is a libc (and one you're not officially meant to use, at that!); user32/kernel32 have an incredibly large, and mostly undocumented, API surface 22:59:07 Maybe you're thinking of ntdll.dll. 22:59:33 Well, don't use the undocumented parts, I guess? 23:00:39 anyway, modifying the program that outputs to stdout and stderr is probably the easiest if the order of its outputs matter 23:01:29 Windows has something called OutputDebugString. I'm not really sure what it is. 23:03:17 hmm, so it does seem like the API surface is documented in some cases, but only incidentally, e.g. https://docs.microsoft.com/en-gb/windows/win32/api/winuser/nf-winuser-messageboxexw 23:03:48 this is documented as being part of winuser.h, a C header file, and it's only mentioned at the bottom of the page that the function exists in user32.dll 23:03:55 What's incidental about that? 23:03:59 ais523: but there's a documented library too, so why does it matter if there's an undocumented library behind it? 23:04:12 b_jonas: which documented library are you thinking of? 23:04:24 shachaf: well, it means that the use via user32.dll isn't part of the API contract 23:04:25 the one that has the windows api calls 23:04:37 ais523: It's certainly part of the ABI. 23:04:44 in particular, Microsoft could change the calling convention without violating anything written there 23:04:53 I don't know what that library is called, the compiler just links it into windows programs automatically, so I never tried to find out 23:04:59 I agree that it can't be changed in practice because the .exe files will be linked against a particular calling convention 23:05:05 If you write a program and it calles MessageBoxExW, you'll need to link it with the import library user32.lib. 23:05:13 b_jonas: OK, the reason I asked is that this is more complex than you're expecting 23:05:21 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”). 23:05:23 the library in question normally has a name of the form msvcrt* 23:05:32 Microsoft considers this to be part of the compiler, not part of the operating system 23:06:06 in particular, there are a number of different msvcrt* files, which you are supposed to ship along with your application, and they have non-open-source licensing that limits what you can do with them 23:06:53 There are multiple parts of msvcrt, as I understand it. 23:07:04 -!- unlimiter has joined. 23:07:04 ais523: right, they ship with the compiler, as well as with operating systems starting from Win10 via patches, and if you install programs compiled by a new compiler onto an older OS, you have to install the runtime library 23:07:10 there is also an msvcrt.dll with no version number that does ship with Windows, this is officially undocumented (and does some weird things like implementing functions with the same name as C standard library functions, but different behaviour), and you aren't meant to use it, but at least it will exist on a user's computer and thus you can link against it fairly safely if you know what it does (and with no licensing issues) 23:07:11 Part of it is things like fopen, which implements the C standard library and you can use if you want to, or not. 23:07:53 And another part is things like memcpy (maybe?) that the compiler just generates calls to automatically, that you have to reimplement yourself if you don't link the official msvcrt. 23:07:57 in practice, if you're compiling on Windows using an open-source compiler, you're probably using msvcrt.dll as it's the least problematic of the various "you can't use these" APIs 23:08:08 Neither of these has to do with the OS ABI, which applies to everyone, not just people programming in C. 23:08:29 shachaf: the second part isn't a huge problem, the compiler normally has a fix for that (e.g. gcc has libgcc) 23:08:38 If you write a program in assembly that opens a MessageBox, you still link to user32.lib/user32.dll, because that's just the API the OS presents. 23:09:06 I agree that the question is "how do you use the OS ABI", and the answer is "either directly or via a glue library, and neither appears to be officially supported unless you use a Microsoft compiler" 23:09:14 In what sense is this undocumented? 23:09:23 It says user32.dll and user32.lib right on the page you linked to. 23:09:48 ais523: sure, but that's because the non-microsoft compilers for windows are sort of in a sad state 23:09:52 for multiple reasons 23:09:59 in the literal sense that, AFAIK, there are a large number of APIs in those libraries which are not documented 23:10:23 for one, gcc on windows implements a C ABI that is so incompatible with the MS compiler that even sizeof(long) differs 23:10:41 what Microsoft does is documents APIs that are used by some other mechanism, e.g. in the case of MessageBoxEx, via the windows.h header file, and incidentally mentions that you can find the implementation in user32.dll 23:10:43 But the ones that you're supposed to use *are* documented. What do the undocumented ones have to do with it? 23:10:56 you have no way to know which ones you're supposed to use or not! 23:10:58 it's not just that each MS complier used to have a different C ABI for a while, because those only differed in libc stuff like how FILE works, and in libstdc++ and other C++ stuff 23:11:11 you can still at least link pure C functions between them 23:11:16 there is nothing preventing msvcrt implementing a documented function in its C API via an undocumented function in user32.dll 23:11:21 You just linked to the documentation for MessageBoxEx. So clearly that's one that you're allowed to use? 23:11:22 but if you use gcc, you can only link pure C functions if they don't mention long 23:11:28 shachaf: yes 23:11:30 this is documented, but it's sad 23:11:34 I'm not sure if this is a complete set, it might be 23:11:58 I feel like if you're writing a program for Windows you just don't care about msvcrt that much. 23:11:59 a long time ago, on a different computer, I downloaded Microsoft's full set of low-level API documentation, but never really got into it that much 23:12:31 You have the documented OS ABI, which is some subset of kernel32.dll etc., and you just use that. 23:12:42 I used to look at the API documentation at https://docs.microsoft.com/en-us/previous-versions//hh447209(v=vs.85)?redirectedfrom=MSDN , but now it says that "We're no longer updating this content regularly" and doesn't say what supersedes it 23:12:49 so now I'm not sure where the windows API docs are 23:15:00 ais523: I'm not sure what distinguishes ExitProcess() being exposed in kernel32.dll -- documented in https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-exitprocess -- and SYS_exit being exposed in the Linux ABI. 23:15:10 Except that one is a function call and one is a syscall, obviously. 23:15:13 shachaf: I'm saying I don't know where I'd go to find a list of "this is all the functions in kernel32.dll you are allowed to use" 23:15:28 because that's not how Microsoft organises their API documentation 23:15:37 Oh, sure, that's an organization thing. 23:15:47 But if you need to exit the process, you can call ExitProcess(). 23:16:40 https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-api-list is probably the new documentation 23:17:08 here's an example: https://docs.microsoft.com/en-gb/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw 23:17:31 I found this by clicking the link to process and thread functions from your exit process link 23:17:41 ais523: isn't that because the same dll has functions for multiple different APIs mixed in it, sort of like libc has all sorts of junk in it too? 23:17:43 Hmm, does /en-gb use British spellings? 23:17:44 then clicking on a function I thought might be part of the standard library than the ABI 23:17:46 then editing the URL 23:18:22 a) the fact that I had to edit the URL means that the index listing isn't complete (and I just happened to know that most functions with a name ending in A have an equivalent with a name ending in W) 23:18:39 so instead there's a doc that documents all the functions of the Win32 API, which are supposedly enough to write anything in windows, and has functions like CreateFile, plus there's one that documents the libc api that comes with the compiler and has functions like fopen 23:18:40 b) the DLL is listed as advapi32.dll, and I have no idea whether that is part of the ABI surgace or not 23:18:43 *surface 23:19:30 I'm confused about what you're saying. That there's no comprehensive list of all the functions you're allowed to use? 23:19:57 That doesn't seem particularly necessary. Clearly this specific function is documented, because that's a documentation page for it. 23:20:42 shachaf: is it part of the ABI? 23:20:47 I can't get a clear yes or no answer from that page 23:21:04 I see CreateProcessAsUserW on the ExitProcess documentation page, by the way. 23:21:36 ais523: It's part of the advapi32.dll API, and the minimum supported client is Windows XP. 23:22:00 I don't see it; do you have an URL? maybe we're looking at different pages 23:22:09 https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw 23:22:12 shachaf: is advapi32 part of the ABI? I agree that it's part of the API 23:22:36 Part of which ABI? 23:22:39 b_jonas: that's the CreateProcessAsUserW page 23:22:43 shachaf: the Windows ABI 23:22:48 the equivalent to Linux system calls 23:23:19 ais523: right, so what function are you looking for instead? 23:23:31 b_jonas: I'm looking for the list that contains a link to that page 23:23:38 I didn't find the page via a link, I found it via URL editing 23:23:48 ais523: There's a sidebar on the ExitProcess page that links to that page. 23:23:52 (from a link to the -A version) 23:24:03 shachaf: oh, it must be because you have JavaScript turned on and I don't 23:24:05 I don't think there's a flat list, but it's probably in the tree of https://docs.microsoft.com/en-us/windows/apps/desktop/ 23:24:09 the sidebar doesn't show for me 23:24:15 -!- arseniiv_ has quit (Ping timeout: 252 seconds). 23:24:19 no wait 23:24:24 how about https://docs.microsoft.com/en-us/windows/win32/index 23:24:29 you need javascript for the sidebar, yes 23:24:52 ais523: I also see it on https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/ 23:25:00 Anyway, I don't know what advapi32.dll is, so I can't say. It seems to be part of the interface exposed by the OS, so probably? 23:25:05 -!- unlimiter has quit (Quit: WeeChat 2.6). 23:25:22 As a person targeting Windows, you should probably figure out what each of the DLLs you might be linking against is. 23:25:23 incidentally, after actually reading the docs on the function, i got alarmed at the actual semantics of cross-user process creation on Windows 23:26:08 "Typically, the process that calls the CreateProcessAsUser function must have the SE_INCREASE_QUOTA_NAME privilege and may require the SE_ASSIGNPRIMARYTOKEN_NAME privilege if the token is not assignable. If this function fails with ERROR_PRIVILEGE_NOT_HELD (1314), use the CreateProcessWithLogonW function instead. CreateProcessWithLogonW requires no special privileges, but the specified user account must be allowed to log on interactively. Generally, 23:26:08 it is best to use CreateProcessWithLogonW to create a process with alternate credentials." 23:26:31 and CreateProcessWithLoginW requires the plaintext password of the user you want to create the process as 23:27:00 that isn't an API that I would recommend for any situation other than a sudo-equivalent, and yet it's the recommended way to do things on Windows? 23:27:32 so "https://docs.microsoft.com/en-us/windows/apps/desktop/", find link "Win32", goes to "https://docs.microsoft.com/en-us/windows/win32/index", find link "Win32 API reference by feature", goes to "https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-api-list", section "System Services", link "Processes", goes to 23:27:37 "https://docs.microsoft.com/en-us/windows/win32/procthread/process-and-thread-reference?redirectedfrom=MSDN", link "Process and Thread Functions", goes to "https://docs.microsoft.com/en-us/windows/win32/procthread/process-and-thread-functions", section "Process Functions", link "CreateProcessAsUser" 23:28:43 b_jonas: which shows CreateProcessAsUserA for me, the version that's sensitive to which language version of the OS is installed 23:29:16 -!- oerjan has joined. 23:29:19 ais523: ok, but then I don't know which function you want instead 23:29:24 even Microsoft eventually realised that having the ABI differ from one country to another was a problem, that's one of the reasons why the -W variants of the functions were invented 23:29:28 and I'm not familiar with the windows api enough to tell what's best to use here 23:29:30 so CreateProcessAsUserW is the more sane version 23:29:48 there's a fairly simple rule: do not use functions whose name ends in a capital A ever 23:30:04 people just do it because it's convenient (and usually works if both you and your customers speak English) 23:30:04 Except when you can? 23:30:06 ais523: ok, but aren't they usually documented together? 23:30:20 the documentation of the two is almost identical 23:30:33 OutputDebugStringA("some text"); seems fine to me. 23:31:03 ais523: hmm, you're right, that page doesn't document the W version 23:31:08 let me see if I can find one that ends in a W 23:31:13 only difference appears to be in the title and "syntax" section 23:31:15 although there might not be one if this is an obsolete api 23:31:21 shachaf: the encoding of "some text" differs by which version of Windows you have 23:31:53 Is it not always compatible with ASCII? 23:31:59 there's almost certainly an API to discover what it is, then you could do an iconv to convert to the correct format at runtime 23:32:18 I guess if your program uses UTF-8 internally, it has to encode to UTF-16 whenever it calls a W function. Which isn't so bad. 23:32:18 I don't know whether it's always ASCII-compatible, my guess would be no though 23:32:35 in particular, I have a strong suspicion that the ASCII codepoint of \ is used for ¥ on Japanese versions of Windows 23:32:43 interesting, there is a CreateProcessAsUserW function too 23:33:01 the thing about the A/W split is that this is mostly hidden from the user via header files 23:33:03 I linked to https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/ already. 23:33:05 sometimes it's documented, sometimes it isn't 23:33:12 ais523: you're right, the doc is weird 23:33:33 there are tools to make it easy to write programs as a polyglot between the A and W APIs; this doesn't seem useful except for examples in manuals and for writing libraries, though 23:33:46 ais523: yeah, I know, and the libc functions have such a split too for some functions, also partly hidden by macros and typedefs 23:34:22 but I don't understand why the documentation doesn't link to the W version of this function from the path that I followed 23:35:20 I believe Microsoft's API/ABI policy is to intentionally blur the boundaries between userspace and kernelspace, from the user's point of view 23:35:21 there is another path, but it's probably not the main path: 23:36:07 (incidentally, there actually is a kernel ABI that user32.dll and kernel32.dll use to actually do things, but that's considered to entirely be internals; presumably a reverse engineer could use it directly but that would risk their program breaking on newer versions of Windows) 23:36:18 ais523: yes, that makes sense, because this way they can take an old system call and turn it to a libc wrapper in future versions of windows, so they don't have to have as many obsolete system call entries _in the kernel_ as linux has 23:36:35 Yes, I think this is reasonable for that reason. 23:36:46 Linux also does a small amount of this with the vdso. 23:36:59 and the actual syscall abi was supposed to have been internals on linux too, with a few specific exceptions 23:37:06 you're supposed to call the libc functions to call system calls 23:37:12 on x86_64 that is, not on x86_32 23:37:35 it's just that that won't work, people want to call the system calls directly, so they'll do, and some old documentation won't stop them 23:37:46 No, the kernel explicitly keeps the system call ABI stable. 23:37:46 b_jonas: I agree that it's a defensible policy, although it does have a major downside to the Linux way of doing things: it makes it impossible to statically/dynamically analyse what a program can/is ask/asking the kernel to do, because you don't know where all the kernel entry points are 23:38:08 shachaf: which kernel? 23:38:12 Linux. 23:38:15 exactly 23:38:16 I believe Linux's policy for system calls is "use the libc wrapper unless you're doing something weird, in which case use the syscall directly" 23:38:41 also, "the libc wrapper is meant to approximately obey POSIX, the syscalls aren't and may act differently" 23:38:57 For the most part the Linux system calls are more reasonable than the libc wrappers. 23:39:06 although in practice the syscalls normally have more useful semantics than POSIX (I guess being less useful wouldn't work) 23:39:23 shachaf: except for _exit. fucking _exit. 23:39:33 it used to exit the process, but then they changed it. 23:39:49 so now there's a group_exit system call to exit the process, and libc's _exit and _Exit function calls that 23:39:55 `` asmbf <<<"mov r1,0/div r1,0" <-- i've fixed that so you can just do `asmbf yourcodehere 23:39:57 and if you try to call the actual _exit syscall, you're screwed 23:40:53 oerjan: I thought we'd use bin/! to do that part of the wrapping 23:42:42 ais523: anyway, "https://docs.microsoft.com/en-us/windows/win32/index" as above, then link "Win32 API reference by header", goes to "https://docs.microsoft.com/en-us/windows/win32/api/", then in sidebar, link "System Services", goes to "https://docs.microsoft.com/en-us/windows/win32/api/_base/", then link "processthreadsapi.h", goes to 23:42:47 "https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/index", then link "CreateProcessAsUserW", goes to "https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw" 23:43:00 but I don't know why the other path doesn't lead to this function too 23:43:01 b_jonas: yes, that was mentioned earlier 23:43:08 although it seems weird to organize an ABI by C header file? 23:43:12 ais523: yes 23:43:18 it should be linked from both places 23:43:25 I don't know why it isn't 23:43:39 maybe because it's an obsolete function, maybe it's just another doc bug 23:43:56 it's not the first apparently accidental omission from MS docs that I've seen 23:43:58 `? lfloor 23:43:59 b_jonas: we're not consistent, also asmbf isn't an interpreter, it's a converter. 23:43:59 lfloor? ¯\(°​_o)/¯ 23:44:16 oerjan: hmm yes, that's a good point 23:44:46 `? lrint 23:44:47 The lrint and lrintf functions (of C99 and C++11) are actually supported by the MS compiler (starting from the 2013), only strangely undocumented. 23:44:48 yes, that one 23:45:12 although I think they fixed that a few compiler versions later 23:47:15 b_jonas: anyway, I suspect that there are more obsolete kernel APIs in Windows than there are in Linux, even though Windows should theoretically be able to remove them without breaking backwards compatibility: 23:47:30 s/APIs/ABIs/ 23:47:39 a) Linux only has a few syscalls total, most of which aren't obsolete 23:47:41 ais523: linux can also remove some of them without breaking backwards compatibility 23:47:43 *few hundred 23:48:03 Hmm, quite a few Linux system calls are obsolete. 23:48:22 b) Microsoft's main value to their customers is backwards compatibility, and Windows devs are infamous for doing really weird things that require kernel-side workarounds to avoid breakage 23:48:28 in particular, they are planning to eventually remove x86_32 userspace compatibility from x86_64, which would save a lot of syscall stuff that actually requires glue code in the kernel to handle 23:48:44 ais523: Linux also works very hard on backward compatibility. 23:49:00 Linux the kernel, that is. Userspace breaks all the time for no good reason. 23:49:06 shachaf: I agree, but I don't think that's the main selling point of Linux 23:49:13 (precisely because userspace breaks all the time) 23:49:16 It's one of the main selling points of any platform. 23:49:26 Linux-the-userspace is just not a good platform. 23:49:54 Fortunately you can statically link executables, unless you're doing graphics or something. 23:51:02 shachaf: Mac OS X is planning to require executables to be notarised to run, this has the side effect of breaking backwards compatibility for all old un-notarised executables 23:51:44 (notarising consists of sending your executable to Apple, who do static analysis on it to make sure it isn't malicious or does other things they don't want programs to do, and they then produce a signature saying it's been notarised; I think that's part of the program, it conceptually is at least) 23:51:58 that's pretty much the opposite of having backwards compatibility as a selling point 23:52:39 in general I don't think backwards compatibility is a major selling point for Mac OS X, or even a design goal 23:53:47 Probably not nowadays? 23:54:00 When they switched from Mac OS 9, they did a lot of work on backward compatibility. 23:54:30 This notarization thing is obviously very hostile to developers and users. 23:54:33 I've been trying to discover when notarisation first became possible (as opposed to required) 23:54:40 but I'm not very good at searcihng 23:54:46 my leading theory is that it was 2019, though 23:57:31 anyway, I don't think it's obvious that backwards compatibility, especially of executables, will automatically be a concern to an operating system or comparable platform 23:57:46 there are clear reasons why it would help, but some companies may decide that the tradeoff isn't worth it 23:58:36 -!- Frater_EST has joined. 23:59:21 I guess a lot depends on what your model for deploying software is