< 1631059386 291287 :delta23!~delta23@user/delta23 QUIT :Quit: Leaving > 1631059504 398809 PRIVMSG #esolangs :14[[07Mogus14]]4 M10 02https://esolangs.org/w/index.php?diff=87930&oldid=87578 5* 03Oshaboy 5* (+27) 10Added Unimplemented Tag < 1631061568 927533 :sprock!~sprock@user/sprock JOIN #esolangs sprock :Maeve Sproule < 1631062929 598747 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :this 2015 article https://esolangs.org/wiki/Fungeoid says that it's kind of fungeoid's goal to have side-effects < 1631063104 97773 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :isn't funge-98 stack of stacks going the opposite direction? < 1631063142 956447 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :also threading with a separate stack < 1631063185 213252 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :and my idea of having nested isolated funge spaces < 1631063237 481281 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :also I don't agree with the "Goal" section < 1631063245 727268 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :unless I'm missing something < 1631063648 779784 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :one (maybe the only/) motivating idea of the original Befunge was to be as difficult as possible to compile < 1631063684 221946 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :with having a runtime allowing to split code into isolated toroids and giving them own stack (for example, it pops the N number of items to take from the top of the stack into a new zeroed one and then returns M from the new one to the parent) < 1631063692 544604 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :things like the stack stack (which was added later) seem like they would make the code easier to analyse, and thus maybe to compile, but you can use it for obfuscation in addition to using it for purity < 1631063731 91818 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :it would be possible to build a repository of common functions that won't have stack collisions with each other and would be used as building blocks easily < 1631063758 461170 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I guess there's two points of view, the point of view of a programmer who is trying to make their code easy to understand and is using the language features for that purpose < 1631063785 91249 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :and the point of view of a compiler, or a programmer who is intentionally making their code hard to compile, where the features might be used in unusual ways to make the code hard to understand < 1631063805 876673 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :to necessary easy to understand but easy to build < 1631063826 296038 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :I'm ok with write-only code as long as it does what it have to < 1631063865 6042 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I think write-only code only really works in environments where you know you'll never have to read it again < 1631063902 944662 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :one-off scripts, for example (and even then I try to do things like use meaningful variable names, just in case they somehow end up not being one-off after all) < 1631064416 959350 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :"I disagreed, saying that there are some languages out there where and interpreter is easier to write than a compiler." < 1631064424 266519 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :https://github.com/catseye/Befunge-93/blob/master/historic/bef-1.0rc1/bef.doc < 1631064517 874468 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :I guess it was a random fact about befunge -- that it had features hard to compile, but it wasn't the goal; the goal was: "It may go forward, or backward, or even LEFT OR RIGHT. : for fun < 1631064565 448903 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :hmm, so it looks like the motivating feature was to be harder to compile than interpret, not necessarily to be impossible to compile < 1631064572 692542 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :also this https://github.com/catseye/Befunge-93/blob/8fe4065c0415b6f6fa6f699798fa9b64737aadc1/historic/bef-1.0rc1/bef.doc#L27 tells that the self-modification was much earlier than the debate about compilers with his friend < 1631064584 268466 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :there are some programming languages which fulfil this requirement by being trivially easy to interpret < 1631064606 325963 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :but there were other motivations too < 1631064715 637051 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :I would call the complexity to compile befunge a goal if there was that debate and then he comes up with things made on purpose to prove his debate point; but it was the opposite -- he already had an idea of self-modification and then the debate just motivated him to release something < 1631064864 842124 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :Interestingly, Futamura conclusively showed that compilers arise from specialized interpreters, and their work implies that an interpreter is always easier than a compiler. < 1631064898 563994 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I do think that interpreters are generally easier, except in the case where a naive transpilation works < 1631064921 9719 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :(e.g. compiling BF by string replacement of "+" into "(*ptr)++", ">" into "++ptr", etc.) < 1631064945 379449 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :err, I'm using my post- and pre-increments inconsistently, I guess it doesn't matter in this situation but it still looks bad < 1631064946 764307 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :btw I don't see a problem compiling befunge if you create a 80x25 of pointers to void functions that would occasionally overwrite other pointers to point at the "library of function" that is a list of possible instructions < 1631065004 62365 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :this depends on what you consider a compiler to be < 1631065015 524540 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :you can compile any code by hardcoding the program into an interpreter < 1631065024 520089 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :ais523: But note that, in that case, we can kind of reverse-engineer ourselves a corresponding interpreter which is even "easier" in the sense that it can delegate even more work to the C compiler. < 1631065026 95821 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :but some people consider that cheating and not really a compiler < 1631065068 868071 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Corbin: well, running gcc is probably harder than writing the code you want it to compile into a file < 1631065072 296773 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :but, both are pretty easy < 1631065106 715416 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :ais523: I'm thinking specifically of what's delegated to the toolchain, because Futamura's point was that a good specializer can turn any interpreter into a good compiler. < 1631065126 7650 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :Hm, not the best way to put it. The specializer and interpreter both contribute to the quality of the compiler? < 1631065137 510555 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :the specializer would have to be /incredibly/ good < 1631065161 862706 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :given that there are optimizations that interpreters can't really do without getting halfway to being a compiler anyway, so given a naive interpreter, those optimizations would have to be done in the specializer < 1631065173 862185 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :and, I know that's the point of specializers, but it's hard to imagine one that's *that* good < 1631065191 48444 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :Yeah. I use RPython, for example, and there's a lot of work put into making those interpreters "easy" to write. < 1631065293 46790 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I guess you can apply the same argument to a specializer-virtual machine combination < 1631065299 238634 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :which should in theory give you an optimizing VM < 1631065304 751793 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :(RPython automatically generates a JIT compiler for a given interpreter. Backend configuration, instruction selection, memory management, etc. are all done with automatic codegen. It takes like 20min to generate a JIT but it's worth the wait.) < 1631065355 515347 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :Yeah. I think that this is an interesting antipattern in language design: We often pair a low-level intermediate language with a high-level user-friendly language, and require interpreters to compile from the latter to the former. < 1631065357 435702 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :that's interesting < 1631065364 761899 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :how are the interpreters specified? < 1631065409 76193 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :also, I'm not sure that's an antipattern, unless you're suggesting that the interpreters should work with high-level code more directly < 1631065420 909698 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :RPython interpreters are given in plain Python 2.7, using their support library for libc calls and FFI. The translator interprets the Python and then disassembles it in-memory, so codegen can be done in Python. < 1631065447 274415 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I was wondering about that (although being locked to Python 2 is something of a problem nowadays) < 1631065480 763574 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :I just think that it's signing folks up for extra work. Extra context, usually. Desugaring is simpler than an intermediate language. < 1631065488 145621 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :I think the measure of cheating can be calculated; my compiler idea above results in that the compiled programs would be different only in a place where the starting befunge code was injected as a 80x25 table, and the rest would be the same "interpreter"; while the "true compiler" that you might want to imagine is something that produces absolutely < 1631065488 197337 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :different program for every different input source code; so the amount of "variation" can be benchmarked on compiling different inputs and measuring the diff < 1631065569 840148 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Corbin: I agree with making the low-level intermediate language a subset of the high-level language, rather than necessarily a separate language < 1631065592 822150 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :but there are some cases where you want to relax restrictions in the downcompile < 1631065623 340865 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :but then, there are compilers that produce 1mb binary even for hello world -- all the hello worlds will have the same 99% of "interpreter" that is some static library < 1631065627 584617 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :a common example is when the IR has goto statements, but the high-level language you're compiling from doesn't < 1631065654 499959 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :ais523: Sure. I guess I'm saying that, in those situations, the IR should be explicit and narrow-waisted, rather than a required glue language. Like, Smalltalks put a tiny but real burden on implementations when they require bytecode compilers, e.g. in Python. < 1631065659 356907 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: right < 1631065675 817323 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :in fact, ld-linux.so is even described as an "interpreter" in its documentation, and that of the Linux executable format < 1631065691 535367 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :LLVM IR, GCC's GIMPLE, QBE, and libfirm's IR; they should all really commit to text formats and narrow-waist tools. This is one area where WebAssembly has done well. < 1631065713 118873 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :so pretty much all binaries on Linux are being run through an interpreter (although what it actually does is just interpret the code for loading, load the code, then jump to it and run it directly) < 1631065847 827126 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :what is a "narrow-waist tool" < 1631065924 608354 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :(I spent so many years being confused about what "waist" means before I realized the garment waist and the anatomical waist can be totally different!) < 1631065932 412505 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :I want to ask the same question, too < 1631065939 449489 :ais523!~ais523@109.249.181.25 QUIT :Quit: sorry about my connection < 1631065947 153720 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :keegan: A narrow-waisted design is a pattern which is meant to counter the Expression Problem by requiring either the input or output of every tool in a toolchain to be a single unified format. < 1631065954 586346 :ais523!~ais523@109.249.181.25 JOIN #esolangs ais523 :(this is obviously not my real name) < 1631065972 91886 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :one thing that I do think is an antipattern is where important metadata, that the compiler knows, gets removed when going down to lower levels of abstraction < 1631066000 769217 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :Corbin: oh, like netpnm? < 1631066007 177767 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :one example is that it would be very useful to have a way to say "the value in this register isn't needed any more" right down to at least the asm level < 1631066007 403639 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :e.g. pandoc can handle many different documentation formats. Normally this would evoke the Expression Problem and require a quadratic amount of code, but instead it's a linear amount of code because pandoc's IR acts as a narrow waist. < 1631066015 987637 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :ACTION nods < 1631066026 769953 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :where you convert anything-to-pnm or pnm-to-anything or manipulate pnm's < 1631066031 37952 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :it even sometimes helps performance at the *machine code* level, despite taking up bytes, because this is information that the processor cares about too < 1631066039 25575 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :keegan: Yeah. Uncompressed containers are good candidates for narrow waists. < 1631066052 63378 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :or how many programming languages adopt UTF-8 as the one true internal string representation < 1631066058 83243 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :with other encodings handled at the edges < 1631066064 858405 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :ais523: Yes. I'm sure you've heard me rant about The Mill before; their "belt" concept would be great for that. < 1631066075 290745 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :(Unicode was designed with this use case in mind, and would be substantially simpler without it) < 1631066090 793108 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :which is why we have assembly language commands like VZEROUPPER, and certain special cases of XOR < 1631066117 131998 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Corbin: I do like The Mill's approach, although it got me thinking about how I would do things and I came to different conclusions on some things < 1631066130 466403 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :(The Mill's belt is just the most recent eight results from the ALU. By default, values are usable for a few operations and then disappear forever.) < 1631066134 21079 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :e.g. I think it would be more useful to flip the belt the other way round: commands say when their output is going to be used, not when it was generated < 1631066152 298150 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :also I didn't realise it was as short as 8, I was assuming it would be much longer < 1631066187 479896 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :I think farbfeld is better than pnm, although it is the same kind of idea it is a good one. Fortunately, ImageMagick now supports both formats (and my own Farbfeld Utilities also has encoders/decoders for netpnm formats, too). < 1631066251 365578 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Corbin: widely-applicable intermediate representations are something we could do with having in a range of fields (and if they're easily interconvertible it probably also doesn't matter if we have too many) < 1631066260 227740 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :Oh, I think it's eight minimum? ISTR Ivan saying that belt space is very expensive because it's interconnected to so many functional units, so maybe sixteen-ish on high-end chips. < 1631066316 810048 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Corbin: so the great thing about a "when it's going to be used"-style belt is that the interconnect isn't too bad, because you can safely use a slow path if the value you see there is some high number of instructions < 1631066318 875738 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :ais523: Yes, although there's still a linear cost to maintaining each representation. I know that I will have to compile a few simple languages into Cammy for demonstration purposes, but I won't maintain optimizing compilers because there's usually no interesting source programs to optimize. < 1631066330 619291 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :and only need to fast-path the low-numbered choices < 1631066340 949601 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :it's information you get to know whether you need a fast algorithm or can do with a slow one < 1631066356 285060 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :what is Cammy? < 1631066362 428073 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :I dislike UTF-8 (or any Unicode format, or any other encoding) as the one true internal string representation. I think having byte strings is better, and you can still have functions that treat them as UTF-8 if wanted, as well as ones dealing with byte strings. (Converting between text encodings perfectly isn't possible, even though they try to say otherwise.) I dislike many modern programming languages that use Unicode. < 1631066378 838648 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :Aha, that's clever. Makes sense. Strange how time reversal sometimes dramatically changes what needs to be tracked. < 1631066417 321416 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net PRIVMSG #esolangs :ais523: Oh, [[Cammy]] on the wiki, just my current pet project. It's not yet Turing-complete, because I'm lazy and also Turing categories are hard. < 1631066427 888934 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: I believe that it's normally correct to have "bytestring" and "character string" as the two main string types internally < 1631066449 734910 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :and that with a character string, it's generally preferable for the internal encoding to not be user-visible, although UTF-8 makes for a good choice < 1631066467 206770 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :zzo38 I'll take you to my team of creators of a "cleaner unicode" < 1631066513 272617 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :one thing I dislike about UTF-8 is that it spends a lot of encoding space to get some fairly minor advantages < 1631066514 755051 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :ais523: Having separate types is better, yes, although there are often the deficiencies that many things will not work properly with byte strings, I find < 1631066527 848922 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :IIRC there are six byte values that can't legally appear in UTF-8 at all < 1631066582 341616 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :actually, I think even better would be to have typed byte streams that were parameterised by encoding, and probably the ability to parameterise character strings by encoding too < 1631066613 434279 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :(where "encoding" here would handle things like the form of escaping that had been used, what metadata beyond normal characters it could contain, etc.) < 1631066637 196816 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Actually, yes, I suppose that can be helpful. < 1631066715 502629 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :(Although, it will not always be relevant, sometimes it is helpful to be able to use such a feature (as an option, perhaps).) < 1631066723 209623 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :one thing I would like to see more languages provide is a standardised type for formatted text < 1631066726 88506 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :$ irb < 1631066726 166974 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :irb(main):001:0> "лол".encoding < 1631066726 166999 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :=> # < 1631066726 167008 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :irb(main):002:0> "лол".b.encoding < 1631066726 197773 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :=> # < 1631066746 883056 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :that seems wrong? < 1631066795 866265 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I would say that the /first/ one is a character string, and the /second/ one is the UTF-8 encoding of a character string < 1631066807 515503 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :String instances in Ruby are a struct of byte sequence on an encoding info to help other functions preprocess the sequence when needed < 1631066830 369891 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :*and an < 1631066851 806235 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :or if it genuinely is an 8-bit extended ASCII, perhaps ISO 8859-5, but that seems unlikely < 1631066869 302058 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Even when it is UTF-8, there are considerations what will be wanted. Sometimes you will want to store unpaired surrogates (which is WTF-8), sometimes you might want characters beyond Unicode range (UTF-8-E, etc), sometimes you might want null characters, and sometimes you might not want these things, depending on the application. < 1631066873 28072 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: in that case I think it's wrong < 1631066890 717673 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :if you hand a function a string, it shouldn't have to decode it itself whenever it wants to do anything with it < 1631066930 839673 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :> "лол".b < 1631066930 874366 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :=> "\xD0\xBB\xD0\xBE\xD0\xBB" < 1631066932 840041 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs : error: < 1631066932 908448 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs : • Couldn't match expected type ‘b0 -> c’ with actual type ‘[Char]’ < 1631066932 926102 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs : • In the first argument of ‘(.)’, namely ‘"лол"’ < 1631066933 731527 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: it'd be nice to have a standardised name for "UTF-8 except NUL is encoded as C0 A0" < 1631066962 414095 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :String#b here is a method that just changes the encoding attribute, it does not change the data < 1631066973 190385 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :ais523: Yes, I agree < 1631066992 154505 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :so this string for example becomes printed in wrong way because ascii can't do that < 1631067024 335941 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I guess what Ruby's doing is a leaky abstraction < 1631067046 703357 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :what's wrong with it? < 1631067075 261241 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :those japanese folks defeated unicode problems 15 years before python < 1631067110 600139 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Another encoding is TRON, although it is uncommon and has a different set of problems < 1631067145 262265 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :What I think is that no character encoding will be good for all purposes, although they can be good for some things (although still, improvements can be possible, sometimes) < 1631067147 88861 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I guess the problem is that it's using the same type for bytestring and character string, *and* has a way to look at the internal representation of a character string when that shouldn't matter < 1631067168 3054 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :and it wouldn't surprise me if it doesn't enforce that the bytes stored in a string actually match the given encoding < 1631067191 323294 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :all data are 0 and 1 < 1631067192 909505 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Perl also solved this problem substantially before Python did, and I don't think its solution is perfect, but I prefer it to Ruby's < 1631067201 214243 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :it does not matter how many types you declare < 1631067206 889980 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :yes, but that doesn't mean you have to present it to the user as 0 and 1 < 1631067239 558232 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :and sometimes, semantically there will be a requirement not to have 0s and 1s in particular places, and it's an advantage if the language can enforce that rather than making the user do it < 1631067261 261231 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :Ruby has only a String and you are free to change the encoding at any moment, just know what you are doing or you'll get an exception unless you pass the flags of ignore/replace explicitely < 1631067289 725866 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :fwiw, Perl's solution is that a string is conceptually an array of numbers, which could represent either codepoints or raw bytes, and for string-related functions you can specify what interpretation to use < 1631067306 692030 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :when you get the data from network for example it's ASCII by default and the internet really has no idea what encoding is -- it's your application job to say "here we expect this encoding" so you apply it < 1631067322 319327 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :internally, strings that contain values above 255 are stored in a slightly extended UTF-8, and strings that don't are sometimes stored just as raw bytes, but you're not supposed to know or care about that detail < 1631067345 470200 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: and if the string isn't valid for its claimed encoding? < 1631067410 651957 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :in Rust, there's &[u8] (byte slice) and &str (string slice – internally UTF-8 encoded); there's a fast-path function to reinterpret a &[u8] as a &str, but it still checks to make sure that the string is valid UTF-8 and refuses to produce output if it isn't (producing an error you have to handle, instead) < 1631067441 555256 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :and of course, if the byte slice isn't supposed to be UTF-8 you can still translate it to a string but there isn't a fast-path for that, as it'd need to be re-encoded into the internal UTF-8 representaiton < 1631067483 629863 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :&str does leak its UTF-8-ness in a few other ways, though, such as measuring length in bytes of UTF-8 for the purpose of taking substrings (I think this is a concession to performance) < 1631067494 408303 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :ais523 the invalidity is a thing that exists only when you are doing some final rendering, like printing or converting between the passed enc_a and enc_b; in those cases you use flags to ignore the encodnig and there are also some methods to clean up the mess prematurely like https://ruby-doc.org/core-2.4.0/String.html#method-i-scrub < 1631067578 354334 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :there are separate methods .size and .bytesize < 1631067587 610687 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Does Rust have all of the string dealing functions can work with byte strings too, in case you do not want to use Unicode strings (either sometimes or all the time, depending on the program)? Not all text is Unicode text (and not all can be converted to/from Unicode properly either; sometimes it is useful to try anyways, but sometimes it is better not to) < 1631067607 663470 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :and the fixing flags are here: https://ruby-doc.org/core-2.4.0/String.html#method-i-encode < 1631067608 310600 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: sort-of; they aren't polymorphic but they're duplicated between the string and bytestring cases < 1631067615 578011 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :except in cases which don't make sense < 1631067625 177807 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :One thing I like about C and PostScript is that it doesn't use Unicode. < 1631067672 822809 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :e.g. strings have both to_uppercase and to_ascii_uppercase, wheres bytestrings only have the ASCII version < 1631067682 891286 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Yes, sometimes some functions won't make sense for both, is reasonable. That is one example, yes < 1631067755 74164 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :it's surprising how useful the ASCII-specific functions are, actually, they're good for things like handling programming languages with case-insensitive keywords (because the keywords are generally recognised only if written with ASCII characters) < 1631067768 58200 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :(Although if they are stored internally as UTF-8 and known to be valid UTF-8, then it seems that some of them could be polymorphic, including to_ascii_uppercase since it is doing the same thing whether it is UTF-8 or ASCII presumably) < 1631067784 468932 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :hmm… now I'm wondering if there's a programming language with case-insensitive keywords and one of them contains the substring "ss" < 1631067801 374761 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :it'd be interesting to throw a ß at them to see if it would be recognised, I bet it wouldn't be < 1631067907 365776 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: it'd be hard to make to_ascii_uppercase polymorphic in Rust without a special safety override – the compiler would see bytes internally within a string being mutated directly by to_ascii_uppercase, which isn't allowed by default in case you change the internal representation in a way that makes it invalid UTF-8 < 1631067916 565143 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :so it's easier to just duplicate the code rather than using unsafe code < 1631067947 222704 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :you definitely *could* write a function to handle both but I don't think the compiler developers would want to < 1631067959 642170 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Maybe some might do that with "ss" depending on the implementation, in which case some implementations might be incorrect. < 1631067996 334963 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :> "лол".b.reverse.force_encoding("utf-8") < 1631067996 398905 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :=> "\xBBол\xD0" < 1631067997 775126 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs : error: < 1631067997 862136 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs : Variable not in scope: force_encoding :: [Char] -> a -> [a0] < 1631068007 742345 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :reversing the bytes broke it ) < 1631068037 694243 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :hmm, at least that function has a sufficiently scary name < 1631068056 309893 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Haskell would probably call it UnsafeForceEncoding or something like that < 1631068058 431572 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :(Also, maybe the language might need to be specified for Unicode case functions, since e.g. some languages will have dot and dotless "I"/"i" being separately, etc) < 1631068104 843221 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Rust's super-scary functions generally have very normal/unassuming-looking names, but you need to use a special keyword for calling them to say that you're recognising the danger < 1631068141 396194 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: I actually think Turkic case-folding might be the *only* case in which you can't infer the case-folding rules from the codepoints being used, but I'm not sure < 1631068154 855953 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :only for a particular definition of super-scary (might cause undefined behavior) < 1631068167 2139 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :I suppose there is a segfault thing in rust < 1631068172 528676 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :using 'unsafe' to encode other properties of reasonable API usage is frowned upon < 1631068177 78724 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :it would have simplified things if "Turkic dotless ı" and "Turkic dotted i" were different codepoints from "non-Turkic lowercase i" < 1631068218 178122 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :keegan: I guess, although undefined behaviour is by definition worse than anything else that might go wrong with a program < 1631068222 290537 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :but constructing a &str that points to invalid UTF8 can cause undefined behavior < 1631068236 612705 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :because other 'safe' &str APIs are free to assume that it is valid UTF-8 < 1631068271 262497 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :so any function which converts &[u8] to &str (or Vec to String, etc.) needs to either check that it's valid UTF-8, or be 'unsafe' to leave that up to the programmer < 1631068273 450104 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :yes, e.g. seeing an FD byte means it's safe to read three more bytes < 1631068318 117377 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :which it might not be, if the internal format isn't being statically analysed to be correct < 1631068358 182034 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :something that many UB models do, but Rust doesn't, is distinguish between values that are UB to use and values that are UB to even construct < 1631068387 294007 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :Rust currently has a misencoded &str as something that's UB to even construct, like it does with its other UB values, although It seems unlikely that it would be a problem in practice (still, there's no reason to actually do that) < 1631068434 453227 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I guess the advantage for the "UB to even construct" model is that it makes it easier to reason about things like signal handlers causing unwinds at unexpected points in the code < 1631068466 649556 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :(although, I believe Rust's model for panics is that it's safe to create regions of code in which a panic would be undefined behaviour as long as you can prove that there can't actually be a panic there) < 1631068475 4414 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :One thing that Unicode is especially bad for, I think, is arranging text on a grid-based text display. (This doesn't mean it is bad for everything. For some things, Unicode is OK, but could be better for those things.) < 1631068522 193175 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: I was writing a program to do that, but didn't get very far < 1631068539 270280 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :the furthest I got was working out how wide each character should be, and even then it isn't really specified in detail in Unicode < 1631068558 328811 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :in Ruby raw socket data encoding is ASCII while the built-in http retrievers are utf-8 by default; let me check... open("https://www.google.com/", &:read).encoding => # -- oh I'm not sure what it is < 1631068578 790519 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Yes, that is the greatest (but not only) problem with using Unicode for arranging text on a grid-based text display. Other encodings will be better. < 1631068593 827279 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :in HTTP, also in HTML, the convention is that the producer of the data (typically the server) states what encoding it is in < 1631068610 964026 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :although the recommendation is always to send UTF-8 with a label stating that it's UTF-8 < 1631068637 952606 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :hm, Chrome says www.google.com responds with content-type: text/html; charset=UTF-8 actually < 1631068645 123311 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :both HTTP and HTML provide separate mechanisms for stating what the encoding is; I think HTML's wins if there's a contradiction < 1631068650 285714 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :If I was designing to include the encoding with the string, I might use the 16-bit code page numbers, such as: 0 means no encoding, 367 means ASCII only, 1209 means UTF-8, etc. I also made a list of some of things that as far as I know don't have existing code page numbers, so I made up my own for them, e.g. TRON, CLC-INTERCAL EBCDIC, Powerline UTF-8, etc. < 1631068679 600354 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: they may both be right, nothing forces Google to respond in the same encoding every time < 1631068705 399774 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :yeah, ruby sens ruby's user-agent < 1631068708 247658 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :so idk < 1631068711 949806 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :*sends < 1631068726 959010 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :(I might also, in a terminal emulator, use one escape code to select the code page. If Unicode is implemented at all, the standard sequence to select UTF-8 might select the "Powerline UTF-8" code page, although I would think it better to use an encoding that doesn't confuse character widths and that stuff like Unicode does, instead.) < 1631068770 202521 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :huh, I just accessed google.com manually via telnet, asking for its homepage < 1631068789 720611 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs : 301 Moved

301 Moved

The document has moved here. < 1631068813 432326 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I was shocked to see a "Google has moved" message, but I guess this what their webserver does for the human-readable part of a 301 < 1631068821 175240 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :it added www. to your request < 1631068831 338690 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :no, it told me to retry with a www. < 1631068832 912784 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :(I sent without) < 1631068853 42543 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :yeah I mean that, just said it wrong < 1631068874 512123 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :this is some weird HTML, though < 1631068901 201509 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :upper-case tags, apart from one very old-fashioned character set tag (which duplicates an HTTP header) < 1631068908 33049 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :no doctype, so it's quirks mode < 1631068918 551420 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :this reminds me the crazy guy back in 2006 who wanted to make his own instant messaging application that would send screenshots of text instead of the text < 1631068928 913954 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :he would defeat the encoding problem < 1631068973 623807 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :either this is a page that hardly ever gets looked at (which wouldn't surprise me – it does its job and is rarely seen by a human), or there's some advantage to writing it in that style (which wouldn't surprise me) < 1631069012 902730 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :It would, although that approach has different problems (such as taking up more space, and being unable to change the fonts). DVD subtitles work similarly; they store the text as pictures. < 1631069013 20969 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :It looks automatically generated, especially given that this is going to only be seen by the most primitive of Web user agents, and people who access websites without a browser for some reason < 1631069051 790565 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: maybe an interesting middle-ground would be to have a library of images of characters, and then encode the image by referencing them < 1631069065 6739 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :this would also solve the encoding problem for human-readability purposes < 1631069076 978621 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :but would be very bad for software accessibility, you're basically sending a CAPTCHA < 1631069101 731366 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :people often want to copy-and-paste out of messages into text fields, for example (and blind people may rely on a screen reader) < 1631069153 411171 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :hmm, I don't think the user agent has the ability to tell the server what character encoding it wants the server to send < 1631069181 887830 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :"a library of images of characters, and then encode the image by referencing them" -- isn't it a font file? ..D < 1631069183 931742 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :so you'd therefore expect Google to send the same character encoding to both Ruby and Chrome < 1631069210 127408 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: almost – font files are supposed to specify which codepoint is used for which of the images they contain < 1631069215 410432 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Character names is another thing that may be useful for some purposes and worse for others, such as how PostScript does when rendering fonts. < 1631069224 735437 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :whereas this would just be specifying the image to use by index into the file, which might have nothing to do with codepoints < 1631069244 837111 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :"people often want to copy-and-paste out of messages" -- now this is about my idea of the universally accepted "chat copypasta" format < 1631069260 39732 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :incidentally, some LaTeX renderers appear to render via using fonts that specify codepoints unrelated to the actual characters being used, which can create weird results if you copy-and-paste from the resulting PDF < 1631069296 913119 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: or visit a link in a message, which might not always (or usually) be done by copy-and-pasting but it's essentially the same problem < 1631069318 607629 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding < 1631069361 181470 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :ais523: The user agent doesn't *directly* indicate which character encoding the client expects, but empirical tests show that copying my Chrome UA into curl -A (but changing nothing else) does make a difference in the encoding of the result. < 1631069361 274708 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: that's the first one I tried < 1631069366 508113 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :but it's about gzip and the like > 1631069381 559482 PRIVMSG #esolangs :14[[07Cammy14]]4 M10 02https://esolangs.org/w/index.php?diff=87931&oldid=87614 5* 03Corbin 5* (+53) 10The reference implementation now has its own typechecker, rather than calling OCaml and parsing the type. < 1631069390 695588 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :fizzie: that's interesting, I wonder what its criterion is < 1631069391 639227 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Even if it is just a index into the file, supporting code page conversion with it can still be helpful. (Also, some glyphs might correspond to a sequence of code points instead of a single one, depending on the font and on the encoding; this is even true of Unicode, and in the case of Unicode at least it can even be ambiguous. So, even then the index into the file is insufficient even if you do have conversion.) < 1631069405 66902 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :wait I'm wrong that's wrong header < 1631069409 511723 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :I think I saw one < 1631069457 773873 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Apparently there *was* an Accept-Charset, but it is no more. < 1631069482 84705 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: what criteria do you think that programs should use to decide what encodings their inputs are in, and what encodings to produce outputs in? < 1631069526 862525 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I think the main options are "look at the locale environment variables (or OS equivalent)", "always use/assume UTF-8", and intermediate combinations of those < 1631069528 892371 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :ais523: Depends on the program. It may be one or more of: the file itself, the file format it deals with, command-line arguments, environment variables (such as LANG), etc. < 1631069535 647193 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :"specifying the image to use by index" -- reminds me inserting icons via CSS by addressing a shift and crop on a single png asset < 1631069565 862914 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :so the character addresses don't have to be a natural number but can be even an overlapping region < 1631069597 524306 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs : The Encoding standard requires use of the UTF-8 character encoding and requires use of the "utf-8" encoding label to identify it. Those requirements necessitate that the document's character encoding declaration, if it exists, specifies an encoding label using an ASCII case-insensitive match for "utf-8". Regardless of whether a character encoding declaration is present or not, the actual character encoding used to encode the document must < 1631069598 898575 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :be UTF-8. < 1631069652 977510 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :knowing HTML, it wouldn't surprise me if it discusses what to do if it isn't, regardless < 1631069705 413379 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :For example, a program that deals with JSON can assume UTF-8 for input, and using a switch to switch the output between UTF-8 and ASCII. Programs that just write descriptive text (such as status messages, error messages) should either assume ASCII or use the environment variables (and should never just assume UTF-8). For other things, other encodings are useful, or sometimes just ignoring encodings entirely and copying text as-is. < 1631069706 230931 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :"link in a message" -- maybe this is a thing to be changed in future; we are used to copypaste texts, then lazyness made us want to just click, maybe there are new ways to make a buddy visit your page, like forcing his software doing it without showing you the URL; also deeplinks < 1631069720 500119 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :interestingly, it also states that the encoding needs to be specified via one of a number of ways, but accepts BOM as one of those ways < 1631069741 167891 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :so it's standards-compliant to send an HTML page with just a UTF-8 BOM as the only thing saying it's UTF-8, but it wouldn't surprise me if browsers missed that case < 1631069784 329015 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :nakilon: I guess if you're sending images, you could send a QR code (although that just gets back into encoding issues again) < 1631069818 857095 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :ais523: FWIW, supplying a Chrome-like user agent changes a lot of other things too. For example, using plain HTTP will serve a redirect to HTTPS to Chrome, but not to an arbitrary user agent. And of course the content of the page will be entirely different too. (All that from external observations. I don't think I can comment on the actual criteria.) < 1631069824 432534 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: I was mostly thinking about text intended for humans; if the file format specifies an encoding, then obviously you need to use that one < 1631069901 74757 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :ais523: For status messages, either assuming ASCII or using the environment variables is the way to do it, I think. < 1631069910 697479 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :yes < 1631069920 437408 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I don't think I can assume ASCII because that makes my programs impossible to internationalize < 1631069938 216958 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :qr code is like an analogue radio < 1631069956 279074 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :even in Canada, many users will want non-ASCII characters like œ and á in their output because many Canadians primarily speak French < 1631069959 483490 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :you send the data all over the place via light rays depicting a black-white thingy < 1631070001 648083 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :that said, I think that if the environment variables ask for ISO-8859-1, the program should output that, at least for stderr output < 1631070051 299551 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :hm, I now wonder if you can measure a "power of signal" of the qr code as the distance from which the image is readable < 1631070052 363921 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I know I implemented locale-specific encoding code in ayacc, because I was trying to match the POSIX specification for yacc; although, I think most of the characters that yacc cares about are primarily stable between most commonly used encodings < 1631070058 763143 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :If you want international status messages, the file with the international text can be for a specific encoding, and if the environment variable specifies that language but with a different encoding than any of the files, it can convert it, I suppose. However, I don't internationalize command-line status messages in my programs (although I will accept documentation and GUI in other languages) < 1631070063 226918 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :so you could measure qr code in watts _<> < 1631070079 58717 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :When just copying the input to output though, you could just pass the text "as-is" without worrying about the encoding. < 1631070093 867043 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :right < 1631070115 753656 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :my experience with programs like xterm (which originally used that method) is that it's probably better to have the program do encoding conversion on output, though < 1631070139 673699 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :you shouldn't need separate translation databases for FR_ca.UTF-8 and FR_ca.ISO-8859-1 < 1631070200 420360 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :ugh, have my French locale files got uninstalled somehow? :-( < 1631070215 535356 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :apparently not < 1631070223 714773 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :That helps when you don't have the data in the proper encoding, but when you do, you should just use them, to avoid problems with conversion. < 1631070253 398619 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :I always generate the fi_FI locale on my systems, even though I never use it. < 1631070270 987004 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :I like to have a non-English locale around for testing locale issues, and partly just for fun < 1631070300 279936 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :zzo38: ah right, so the point is that you don't want to decode into codepoints and back into bytes if the data's in the correct encoding already < 1631070305 753809 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :wikipedia: "ISO-8859-1 was (according to the standard, at least) the default encoding of documents delivered via HTTP with a MIME type beginning with "text/"" < 1631070368 868481 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :aren't web browsers supposed to interpret "ISO-8859-1" as actually meaning Windows-1252, though? < 1631070401 127168 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :it says websites then switched to 1252 slowly < 1631070406 320118 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :as I understood < 1631070409 20548 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :ah, here we go: https://html.spec.whatwg.org/#determining-the-character-encoding < 1631070468 260707 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :the HTML spec actually says that the default encoding for unmarked webpages should be assumed based on the locale within which their web browser is running < 1631070541 860228 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :MediaWiki has a special language code "qqx" that shows the message name as the translated message content, learned of that recently. < 1631070554 345966 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :btw < 1631070577 522142 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :fizzie: oh wow, that would be so useful to have known about earlier (assuming it worked back then) < 1631070589 692945 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :attaching encoding as an attribute to byte sequence is like a header in image formats -- it has orientation, alpha correction, etc. < 1631070595 10015 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :From 1.18 onwards apparently. < 1631070606 625126 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :and there are plenty of bugs when software fucks up those headers < 1631070617 800900 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :*metadata < 1631070621 790246 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :for ages I resorted to (web-browser-equivalent-of) grepping Special:AllMessages, which became a lot more frustrating when it stopped fitting on a page, and would have false positives due to text duplicated between messages < 1631070655 555873 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :although, is "qqx" in the right namespace for private-use language codes? < 1631070746 185555 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :RFC 5646 implies the name should start "x-", but maybe MediaWiki doesn't like the hyphen < 1631070765 7456 :ais523!~ais523@109.249.181.25 PRIVMSG #esolangs :(amazingly, I actually guessed that the private use prefix was "x-", but wanted to look it up to be sure) < 1631072125 416118 :dbohdan!~dbohdan@user/dbohdan QUIT :Read error: Connection reset by peer < 1631072172 859776 :dbohdan!~dbohdan@user/dbohdan JOIN #esolangs dbohdan :ZNC - https://znc.in < 1631072198 809722 :ais523!~ais523@109.249.181.25 QUIT :Quit: quit < 1631072613 481848 :chiselfuse!~chiselfus@user/chiselfuse QUIT :Remote host closed the connection < 1631073493 649572 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Do you know which (if any) games other than Escape (by Tom7) can have bizarro world (like Escape does), and what its features are? I wanted to implement bizarro world in Free Hero Mesh, and should have the idea about its design. < 1631075890 759474 :Everything!~Everythin@37.115.210.35 JOIN #esolangs * :Everything < 1631077565 690435 :oerjan!oerjan@sprocket.nvg.ntnu.no JOIN #esolangs oerjan :Ørjan Johansen < 1631078455 947845 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :What is a bizarro world? < 1631078564 235879 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :When using any cipher in CTR mode (including ChaCha20), does the nonce and counter have to be separate? If it is long enough, then you can do both? < 1631078670 327585 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :I think you can combine them < 1631078686 973219 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :that is, start the counter at a random value and include that with the message < 1631078710 372832 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :assuming that your block size is big enough that you are unlikely to ever use the same keystream block twice in two different messages < 1631078750 30306 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Yes, it is how I mean < 1631079743 284590 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Does any cipher use CFB or OFB with a counter added? < 1631079953 180529 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :how would you add it < 1631080027 464839 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Probably XOR or addition with the input of input of each step < 1631080764 386622 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :I suppose there is three kind of functions that would be used: fixed->fixed (e.g. ChaCha20), (fixed,key)->fixed (e.g. most block ciphers), variable->fixed (e.g. most hash functions). There is also key whitening (XEX mode), and there is adding input to output like ChaCha20 does to make it difficult to reverse. < 1631080806 168380 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :It is easy to see with ChaCha20 that if the input is zero, then the output will also be zero. But, even if only one bit is set of the input (I tried this), then the output will be all mixed up. < 1631080835 41785 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :turns out it was GRPC compilation what was eating all the RAM < 1631080853 266925 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :it takes like 5 minutes and almost 500mb < 1631083605 74569 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :or rather 40 minutes already and does not finish, lol < 1631083767 83061 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :oh specifically it's a Google's OpenSSL: https://github.com/google/boringssl < 1631084490 76632 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1631084505 84041 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :" one (maybe the only/) motivating idea of the original Befunge was to be as difficult as possible to compile" => I'd like to preemptively state that that wasn't my goal when designing Consumer Society, it's just a necessary side effect < 1631085410 10230 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :the interesting part is that it also seems hard to translate Consumer Society to the existing high-level non-eso programming languages, even though many of them seem to have all the features necessary. this part is more an accidental side effect than necessary. < 1631085425 798889 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :ah, spam in finnish. (Although there seems to be an english version at the end.) it's been a while since the last one. < 1631085779 819823 :riv!~river@tilde.team/user/river JOIN #esolangs river :river < 1631086191 153313 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :ok I think the compilation will just never end < 1631086219 847526 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :because they assign this issue https://github.com/grpc/grpc/issues/26655 to pythonist who commit 3 days a week and already have 60 issues assigned < 1631086732 585738 :Corbin!~Corbin@c-73-67-140-116.hsd1.or.comcast.net QUIT :Ping timeout: 245 seconds < 1631086757 261127 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :oh looks like he supports all the languages at the same time, and they've already increased CI build timeouts from 60 minutes to 90 https://github.com/grpc/grpc/pull/27230/files > 1631087937 527865 PRIVMSG #esolangs :14[[07Ppencode14]]4 10 02https://esolangs.org/w/index.php?diff=87932&oldid=86861 5* 03YamTokTpaFa 5* (-2) 10/* Definition of Perl keywords */ '''I AM SORRY I FORGOT x''' < 1631088369 608393 :hendursa1!~weechat@user/hendursaga JOIN #esolangs hendursaga :weechat > 1631088401 641507 PRIVMSG #esolangs :14[[07Ppencode14]]4 10 02https://esolangs.org/w/index.php?diff=87933&oldid=87932 5* 03YamTokTpaFa 5* (+96) 10 < 1631088576 614663 :hendursaga!~weechat@user/hendursaga QUIT :Ping timeout: 276 seconds > 1631088894 287347 PRIVMSG #esolangs :14[[07Ppencode14]]4 10 02https://esolangs.org/w/index.php?diff=87934&oldid=87933 5* 03YamTokTpaFa 5* (+84) 10/* Definition of Perl keywords */ < 1631089327 551519 :Koen_!~Koen@96.250.88.92.rev.sfr.net JOIN #esolangs * :Koen > 1631089444 910317 PRIVMSG #esolangs :14[[07Ppencode14]]4 10 02https://esolangs.org/w/index.php?diff=87935&oldid=87934 5* 03YamTokTpaFa 5* (+222) 10/* Definition of Perl keywords */ WTF new news < 1631090290 520167 :joast!~rick@cpe-98-146-112-4.natnow.res.rr.com QUIT :Ping timeout: 240 seconds < 1631090645 886937 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas < 1631090727 567535 :joast!~rick@cpe-98-146-112-4.natnow.res.rr.com JOIN #esolangs joast :purple > 1631091084 640097 PRIVMSG #esolangs :14[[07Ppencode14]]4 10 02https://esolangs.org/w/index.php?diff=87936&oldid=87935 5* 03YamTokTpaFa 5* (+118) 10/* Definition of Perl keywords */ > 1631091314 660032 PRIVMSG #esolangs :14[[07Ppencode14]]4 10 02https://esolangs.org/w/index.php?diff=87937&oldid=87936 5* 03YamTokTpaFa 5* (+132) 10/* Definition of Perl keywords */ < 1631091380 780621 :imode!~imode@user/imode QUIT :Ping timeout: 252 seconds > 1631091396 552128 PRIVMSG #esolangs :14[[07Ppencode14]]4 10 02https://esolangs.org/w/index.php?diff=87938&oldid=87937 5* 03YamTokTpaFa 5* (+20) 10/* Definition of Perl keywords */ < 1631091608 108835 :daggy1234[m]!~daggy1234@2001:470:69fc:105::d315 QUIT :Quit: You have been kicked for being idle < 1631091915 443829 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I mostly agree with ais523 here. Python 3 does the string stuff right for a high-level language: there are separate types for byte string and unicode string, and you generally don't need to know how the unicode strings are represented. It's not perfect, ideally you'd want unicode strings to have an internal form where they store utf-8 and decode < 1631091915 907817 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :that only when necessary, since we do a lot of utf-8 IO, but it's still very good. Rust kind of has the approach right for a low-level language where you want to control the representation explicitly in the type system, but the standard library is somewhat lacking in string operations, so you might sometimes want to use extra libraries. But since < 1631091916 407746 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :it's a low-level language, it does expose enough API that you can do this and can still convert to the standard library APIs and call the standard library functions when they make sense. < 1631092147 774107 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :` hmm… now I'm wondering if there's a programming language with case-insensitive keywords and one of them contains the substring "ss"' => is "keyword" relevant here? those languages usually also have c-i user-defined identifiers. < 1631092149 937512 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​? No such file or directory < 1631092254 99953 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :there is no need in another class if all strings are just strings < 1631092371 143270 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :you think about them like about a sequence of codepoints and you don't care about the internal presentation < 1631092387 552550 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :‘ zzo38: I actually think Turkic case-folding might be the *only* case in which you can't infer the case-folding rules from the codepoints being used, but I'm not sure’ => that is the only case I know of too, but we'll have to check the sources of libICU to be sure. < 1631092479 381108 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :‘ it would have simplified things if "Turkic dotless ı" and "Turkic dotted i" were different codepoints from "non-Turkic lowercase i"’ => I don't think so. The turkish i is one of those cases where there's no good solution, it's all tradeoffs. In particular if you did that, then you'd have problems when you copy a latin script proper < 1631092479 885490 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :name into a turkish text and later try to uppercase it. < 1631092564 391534 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :The only solution that might work is to go back in time and convince/bribe/force Kemal Atatürk to not start that convention, but this might be dangerous or impossible for time-travel-related reasons < 1631092836 778153 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :‘hmm, I don't think the user agent has the ability to tell the server what character encoding it wants the server to send’ => there's an Accept-Charset request header in HTTP/1.1, but I doubt it does much in practice < 1631093093 980052 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :‘I think the main options are "look at the locale environment variables (or OS equivalent)", "always use/assume UTF-8", and intermediate combinations of those’ => there's also automatically guessing from the (beginning of) input, and of course explicit command-line options or environment variables, with intermediate stuff between the four. < 1631093221 515500 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :for example, I might write a script with a command-line option to set encoding of the input, a default that's either utf-8 or utf-16-le, and a warning if you keep the default utf-8 but the input is guessed to be utf-16 or vice versa, with the explicit input encoding command-line option silencing that warning. < 1631093526 665108 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :‘ I guess if you're sending images, you could send a QR code’ => I recently saw a large size ad poster where most of the poster was printed in high resolution, presmuably from a vector image, but it also contained a QR code that was blown up from a too small resolution bitmap that has antialiasing, and blowing it up to the huge size and < 1631093527 166180 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :high resolution printing of the poster made those artifacts show up as various 0.005 m sized gray squares on most of the borders of a 0.03 m sized QR code grid < 1631093621 568847 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :‘ ais523: FWIW, supplying a Chrome-like user agent changes a lot of other things too.’ => does that depend on just the user-agent, rather than other HTTP stuff such as other request headers? < 1631093633 861340 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :and eg. whether you send a HTTP/2 request < 1631093838 462296 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :" the HTML spec actually says that the default encoding for unmarked webpages should be assumed based on the locale within which their web browser is running" => that was the state of art, yes, but with an encoding setting in the menu of the browser client < 1631094016 31373 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :‘ although, is "qqx" in the right namespace for private-use language codes?’ => yes, https://en.wikipedia.org/wiki/ISO_639-2#Reserved_for_local_use < 1631094232 817511 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :oerjan: I regularly get a significant part of the spam in hungarian. Some of them in broken badly auto-translated hungarian, some in well-phrased hungarian. I don't find that too surprising. < 1631094258 982764 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :wib_jonas: the surprise is that i'm not finnish or in finland hth < 1631094297 404379 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :oerjan: yeah. I occasionally get spam in all sorts of random common languages. those are easier to discard because they're obviously spam. < 1631094353 594895 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :also, that i used to receive finnish spam ridiculously often some years ago. < 1631095208 962453 :oerjan!oerjan@sprocket.nvg.ntnu.no QUIT :Quit: Later < 1631098863 746555 :arseniiv!~arseniiv@136.169.204.31 JOIN #esolangs * :the chaotic arseniiv < 1631100388 459446 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :omg future is today < 1631100411 187509 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :self-driving taxi in Moscow starts operating this autumn < 1631100458 105807 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :(maybe correct idiom is "future is now") < 1631100787 801862 :int-e!~noone@int-e.eu PRIVMSG #esolangs :. o O ( yay, killer drones ) < 1631103653 736107 :Koen__!~Koen@96.250.88.92.rev.sfr.net JOIN #esolangs * :Koen < 1631103820 582226 :Koen_!~Koen@96.250.88.92.rev.sfr.net QUIT :Ping timeout: 260 seconds < 1631104050 334577 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`prefix < 1631104051 529914 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :prefix? No such file or directory < 1631104074 182772 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :?prefix < 1631104074 250913 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :Unknown command, try @list < 1631104606 170959 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`help < 1631104606 213168 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch [] " downloads files. Files saved to $HACKENV are persistent, and $HACKENV/bin is in $PATH. $HACKENV is a mercurial repository, "`revert " can be used to revert, https://hack.esolangs.org/repo/ to browse. $PWD ($HACKENV/tmp) is persistent but unversioned, /tmp is ephemeral. < 1631104644 984836 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :is `run the same as ```? < 1631104657 499183 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :^help < 1631104657 602980 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool < 1631104738 994264 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :?wiki wiki < 1631104739 42253 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :https://wiki.haskell.org/wiki < 1631104743 697012 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :nakilon: not quite. `run is a builtin that's hard or impossible to override by messing up commands in /hackenv/bin . it's probably redundant given that you can also do `/bin/bash -c but it can't hurt and will have to stay for compatibility. < 1631104743 821933 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :?gwiki wiki < 1631104744 935703 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :No Result Found. < 1631104775 934665 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :nakilon: also ``` pipes the output through a stupid meme filter that we should somehow get rid of but I don't dare to just remove it from the command < 1631104789 37570 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :meme filter? < 1631104802 90117 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :nakilon: yes. it's called rnooodl or something. < 1631104811 138096 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :check the source codes if you want to know < 1631104836 198169 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :it annoys me because it means any lines that aren't terminated by a newline byte are eaten if the command times out: < 1631104840 18999 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`cbt ``` < 1631104840 977749 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :cat: '/hackenv/bin/```': No such file or directory < 1631104852 130932 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :``` echo foo; echo -n bar; sleep 9999 < 1631104868 896850 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :nakilon: try with one less backtick < 1631104875 207425 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`cbt `` < 1631104876 219426 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​#!/bin/sh \ export LANG=C; exec bash -O extglob -c "$@" | rnooodl < 1631104881 967272 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :the first one is just the invocation character for HackEso\ < 1631104884 678999 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :oh, sure < 1631104887 635701 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :one is prepended < 1631104887 746580 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :No output. < 1631104898 875632 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :um < 1631104908 35066 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :why doesn't that show foo? < 1631104916 599094 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :maybe it's even more buffered than I thought? < 1631104918 887012 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`cbt rnooodl < 1631104920 157941 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :perl -pe 's/([Nn])ooodl/"$1@{[o x(3+rand 7)]}dl"/ge' < 1631104929 59033 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`/bin/sh -cecho foo; echo -n bar; sleep 9999 < 1631104930 45897 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/bin/sh: 0: Illegal option -h < 1631104942 150305 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :oh yeah, that's why you can't do that < 1631104946 966934 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`run echo foo; echo -n bar; sleep 9999 < 1631104982 697932 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :foo \ bar < 1631104982 819327 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`perl -eprint("one\ntwo");sleep 9999 < 1631104999 780177 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :can't set no buffer for perl cmd? < 1631105013 616117 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :No output. < 1631105032 363717 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :nakilon: that wouldn't be enough. you'd have to implement it properly to only buffer one character, and even that only if it's the "d" at the right context < 1631105099 900819 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :that would be possible but so far I was lazy to do it < 1631105108 286420 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :mostly because I hate rnooodl even besides the buffering < 1631105193 7390 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :compoundng commands here is a cool feature https://esolangs.org/wiki/Bfbot < 1631105248 784133 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :not sure why this bot is in [People] < 1631105262 68605 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :oh fungot too < 1631105262 382729 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :nakilon: also how can i know what you come up with to justify rolling my own... php witch i don't use it < 1631105299 487979 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :fungot I thought you are b_jonas until I reached the php < 1631105299 652463 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :nakilon: is he a total fnord versions. < 1631105320 578214 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :oh good < 1631105347 1781 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :although "PHP! Witch! I don't use that" does sound kind of like me < 1631105489 287194 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :why there is no php bot < 1631105551 97925 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :I remember on Rusnet the main bot on #programming and all related channels was one written in Delphi < 1631106673 826181 :oerjan!oerjan@sprocket.nvg.ntnu.no JOIN #esolangs oerjan :Ørjan Johansen < 1631106863 681393 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs : (maybe correct idiom is "future is now") <-- needs a "the" in front < 1631107003 777757 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :thanks < 1631107051 127055 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :`prefixes (i think you may have been looking for this) < 1631107053 50237 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Bot prefixes: fungot ^, HackEso `, EgoBot !, lambdabot @ or ? or > , thutubot +, metasepia ~, idris-bot ( , jconn ) , j-bot [ , bfbot =, velik \. < 1631107070 975097 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :exactly < 1631107075 46313 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :There's also an implicit cat in all the commands, if memory serves as a way to ensure the standard output stream does not look like a terminal. (Some programs adapt their output format, and the argument was, output suitable for pipes is more likely to be output suitable for IRC.) < 1631107078 647259 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :instead I went through wiki article < 1631107134 841289 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :lambdabot is prefix squatter < 1631107187 800772 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :technically it also squats :k and :t < 1631107227 868714 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :as well as its own name in some cases < 1631107232 277784 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :lambdabot, @run 2 < 1631107233 855567 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs : 2 < 1631107265 859944 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :but those are hard to do by accident and the list was getting too long < 1631107300 247692 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs ::k hm < 1631107301 429116 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :error: Not in scope: type variable ‘hm’ < 1631107345 104852 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs ::k Monad < 1631107346 149537 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :(* -> *) -> Constraint < 1631107357 163948 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Full disclosure: I've not removed EgoBot's ! from that list as a sneaky plan to squat ! for "official" commands handled by the `esolangs` bot, in case such commands ever start to exist. < 1631107431 600818 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :the bfjoust bots also use ! but only with specific commands following. < 1631107478 813706 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :and it worked because all the bots using ! were silent if there's not a command match < 1631107485 868668 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :oh and fungot too < 1631107486 145027 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :oerjan: i think that i aren t sarahbot are me? hm. < 1631107496 433140 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :!bf ,[.,]!Hi < 1631107501 698551 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :no wait < 1631107514 923138 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :^bf ,[.,]!Hi < 1631107515 430 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :Hi < 1631107524 848339 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :!logs < 1631107534 908975 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :that one used to respond in private < 1631107540 171288 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :fungot: Yeah, sarahbot isn't even a bot on this channel. < 1631107540 355978 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :fizzie: imagine this, means? completely just 1 < 1631107542 812790 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :by ... glogbot, i think < 1631107560 619398 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :(I think sarahbot was from #scheme.) < 1631107602 705481 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :well fungot is also silent on non-matching commands, that part was right < 1631107603 308965 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :oerjan: the chan serv answers to all comers at apple stores. :o fnord hours left before the next statement and write a bytechanger interpreter in asm, c, pascal, perl, pntr, refc, roma, and the < 1631107610 921421 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esolangs :^nosuchcommand < 1631107699 960455 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :fungot how much is fnord hours? < 1631107700 232554 :fungot!fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :nakilon: anyone knows where i can find out what extras those contain. < 1631107779 596858 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Heh, I wasn't aware Apple stores have ChanServ in (on?) them. < 1631108185 953646 :hendursa1!~weechat@user/hendursaga QUIT :Quit: hendursa1 < 1631108309 622025 :hendursaga!~weechat@user/hendursaga JOIN #esolangs hendursaga :weechat < 1631108600 905464 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed < 1631109132 377277 :Koen__!~Koen@96.250.88.92.rev.sfr.net QUIT :Remote host closed the connection < 1631109387 712444 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1631109537 901057 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas < 1631109564 458364 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :perlbot prefixes < 1631109565 7889 :perlbot!~perlbot@perlbot/bot/simcop2387/perlbot PRIVMSG #esolangs :wib_jonas: Bot prefixes: fungot ^, HackEso `, EgoBot !, lambdabot @ or ? or > , thutubot +, metasepia ~, idris-bot ( , jconn ) , j-bot [ , bfbot =, velik \. < 1631111641 70938 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` TZ=Pacific/Auckland python3 -c '"Getting the current wallclock time in the local timezone and UTC."; import datetime as g; n = g.datetime.now; [print(t.strftime("%Y-%m-%dT%H:%M:%S%z %Z")) for t in [n().astimezone(), n(tz = g.timezone.utc)]];' < 1631111644 399096 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-09T02:34:03+1200 NZST \ 2021-09-08T14:34:03+0000 UTC < 1631111659 259594 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :^ Python's datetime module is so nontrivial to use that I want to get these magic incantations to the channel log < 1631111704 393574 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :the TZ override is there only to make this a better test, since otherwise HackEso default to UTC timezone < 1631111757 988210 :sprock!~sprock@user/sprock QUIT :Ping timeout: 265 seconds < 1631112119 611373 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :by the way, < 1631112121 502952 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` TZ=uWIw/Dtca/FlSM date +%Z # esoteric way to strip the part of a filename after the first slash < 1631112123 999946 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :uWIw < 1631112180 484021 :APic!apic@apic.name PRIVMSG #esolangs :Cool ☺ < 1631112191 94998 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :it doesn't quite work for all filenames < 1631112328 985523 :dyeplexer!~dyeplexer@user/dyeplexer JOIN #esolangs dyeplexer :t b k ky jt h bc < 1631113943 678671 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :$ ruby -e '[Time.now, Time.now.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' < 1631113943 725594 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :2021-09-08T18:11:32+0300 MSK / 2021-09-08T15:11:32+0000 UTC < 1631113986 897028 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` ruby -e '[Time.now, Time.now.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' # does that work in this version of ruby? < 1631113988 526365 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-08T15:13:08+0000 UTC \ 2021-09-08T15:13:08+0000 UTC < 1631114000 123208 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` TZ=Pacific/Auckland ruby -e '[Time.now, Time.now.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' # does that work in this version of ruby? < 1631114001 474095 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-09T03:13:21+1200 NZST \ 2021-09-08T15:13:21+0000 UTC < 1631114002 978921 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :oh I forgot it's installed < 1631114071 918936 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` TZ=Pacific/Auckland; for r in "" -u; do date $r +"%Y-%m-%dT%H:%M:%S%z %Z"; done < 1631114072 914087 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-08T15:14:32+0000 UTC \ 2021-09-08T15:14:32+0000 UTC < 1631114082 449712 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` export TZ=Pacific/Auckland; for r in "" -u; do date $r +"%Y-%m-%dT%H:%M:%S%z %Z"; done < 1631114083 477950 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-09T03:14:42+1200 NZST \ 2021-09-08T15:14:43+0000 UTC < 1631114094 594489 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :looks good < 1631114253 134928 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`` ruby -rtzinfo -e 't = TZInfo::Timezone.get("Pacific/Auckland").to_local Time.now; [t, t.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' < 1631114254 490002 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- tzinfo (LoadError) \ from /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' < 1631114287 82146 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :this is the same just extracting timezone via standard gem tzinfo (that isn't installed)) < 1631114327 530609 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :so you could adjust timezone by a runtime var < 1631115001 750926 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` TZ=Pacific/Auckland perl -e'use Date::Manip::Date; $b = Date::Manip::Date->new(); for $r ([],["setdate","now,UTC"]) { print $b->new("now",$r)->printf("%Y-%m-%dT%H:%M:%D%z %Z\n"); }' < 1631115008 811593 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-09T03:30:09/09/21+1200 NZST \ 2021-09-09T03:30:09/09/21+0000 UTC < 1631115026 760324 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` TZ=Pacific/Auckland perl -e'use Date::Manip::Date; $d = Date::Manip::Date->new("now"); for $_r (0,1) { print $d->printf("%Y-%m-%dT%H:%M:%D%z %Z\n"); $d->convert("UTC"); }' < 1631115028 277951 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-09T03:30:09/09/21+1200 NZST \ 2021-09-08T15:30:09/08/21+0000 UTC < 1631115037 742101 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :either of these work with the Date::Manip module < 1631115412 69377 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :weird that perl is this longer here < 1631115459 659275 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`` TZ=Pacific/Auckland perl -e'use Date::Manip::Date; $d = Date::Manip::Date->new("now"); for $_r (0,1) { print $d->printf("%FT%T%z %Z\n"); $d->convert("UTC"); }' < 1631115461 402302 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Thursday, September 9, 2021T03:37:40+1200 NZST \ Wednesday, September 8, 2021T15:37:40+0000 UTC < 1631115468 128969 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :oops < 1631115643 742349 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :nakilon: more like it's not golfed. there were shorter ways to print these in perl if I wanted. < 1631115676 762223 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :plus that's just one of the datetime modules available in perl < 1631115701 315027 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :incidentally you can use the format "%O%z %Z" with Date::Manip. < 1631115732 713792 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :but my goal here isn't to print the date in this one format, but to show how to get a date object (with which I could do arithmetic) and then print it in any format I choose < 1631115739 327020 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :yeah I don't know how much space perl takes when it's not golfed < 1631115754 859937 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :the python statement does that too, if I just wanted to print the current time in that format it could be shorter < 1631115828 30929 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :`` TZ=Pacific/Auckland ruby -e 't = Time.now; p [t, t.class, t.zone]' < 1631115829 338236 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​[2021-09-09 03:43:48 +1200, Time, "NZST"] < 1631115958 663829 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :there are so many methods in classes Time, Date and DateTime -- impossible to remember them ..D < 1631115996 868371 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :not even saying about all the trash that is added by Rails < 1631116063 40711 :hendursaga!~weechat@user/hendursaga QUIT :Remote host closed the connection < 1631116076 53815 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :most of it is just the same under another name -- people invent some fancy methods, shortcuts, implement them in Rails, and then when it gets implemented in pure Ruby they don't throw it away from Rails, and it's just like a tumour < 1631116087 626957 :hendursaga!~weechat@user/hendursaga JOIN #esolangs hendursaga :weechat < 1631116099 947248 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :if you want something short, then try one of < 1631116106 110917 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :``` date +%FT%T%z\ %Z; date --rfc-3=s < 1631116107 313973 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-08T15:48:26+0000 UTC \ 2021-09-08 15:48:26+00:00 < 1631116147 305658 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :throw in a -u switch for UTC < 1631116156 325770 :oerjan!oerjan@sprocket.nvg.ntnu.no QUIT :Quit: leaving < 1631116160 38934 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :``` export TZ=Pacific/Auckland; date +%FT%T%z\ %Z; date --rfc-3=s < 1631116161 42260 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-09T03:49:20+1200 NZST \ 2021-09-09 03:49:20+12:00 < 1631116171 688392 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :``` export TZ=Pacific/Auckland; date -u +%FT%T%z\ %Z; date -u --rfc-3=s < 1631116172 665813 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-08T15:49:32+0000 UTC \ 2021-09-08 15:49:32+00:00 < 1631116239 281453 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed < 1631116242 638952 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :``` ruby -e '$><<`date +%FT%T%z\\ %Z`<<`date --rfc-3=s`' < 1631116244 126788 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2021-09-08T15:50:43+0000 UTC \ 2021-09-08 15:50:43+00:00 < 1631116252 120258 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :the latter does not work on macos < 1631116262 979188 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :date: illegal option -- - < 1631116280 721801 :nakilon!~nakilon@user/nakilon PRIVMSG #esolangs :i.e. on BSD I assume < 1631118672 830682 :Koen_!~Koen@96.250.88.92.rev.sfr.net JOIN #esolangs * :Koen < 1631120156 572533 :sprock!~sprock@user/sprock JOIN #esolangs sprock :Maeve Sproule < 1631120767 554953 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :nakilon: ... ok. you might need to install GNU coreutils for that. I don't use an OS X so I can't really help in that. (I could tell for Windows.) < 1631122640 784802 :scjosh!~scjosh@206.189.79.69 JOIN #esolangs scjosh :Josh < 1631122723 718742 :VilgotanL!~VilgotanL@84.23.137.213 JOIN #esolangs * :realname < 1631122725 459419 :VilgotanL!~VilgotanL@84.23.137.213 PRIVMSG #esolangs :h < 1631123139 928266 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :ais523: re https://logs.esolangs.org/libera-esolangs/2021-09-08.html#l2c ‘I actually think Turkic case-folding might be the *only* case in which you can't infer the case-folding rules from the codepoints being used’, I'm looking at the ICU sources right now. < 1631123146 389965 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :there's a enum in ucase.h that defines the constants UCASE_LOC_UNKNOWN UCASE_LOC_ROOT UCASE_LOC_TURKISH UCASE_LOC_LITHUANIAN UCASE_LOC_GREEK UCASE_LOC_DUTCH UCASE_LOC_ARMENIAN which ICU uses internally to know what casefolding rules to apply. I believe this isn't an exposed API. the correct constant is computed from the locale by ucase.cpp:ucase_getCaseLocale < 1631123155 333109 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :ucase.cpp also handles (at least some of the) actual locale-dependent case-conversion rules. there are comments like ‘// և ligature ech-yiwn uppercases to ԵՒ=ech+yiwn by default and in Western Armenian, but to ԵՎ=ech+vew in Eastern Armenian.’ < 1631123166 608600 :keegan!~beehive@li521-214.members.linode.com PRIVMSG #esolangs :oh my < 1631123178 107222 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :UCASE_LOC_LITHUANIAN has to do something with dots on i and j with accents but I don't quite understand what; UCASE_LOC_DUTCH something with "IJ", and UCASE_LOC_GREEK does some magic with ancient greek accented characters. < 1631123240 784473 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :so, at least as libicu is concerned, turkish case folding isn't the only locale-dependent one, but some of this might be an artifact of ICU wanting to implement both practical casefolding and strict conformance to unicode casefolding < 1631123283 909844 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :this is from ICU4C version 69.1 < 1631123286 156457 :VilgotanL!~VilgotanL@84.23.137.213 QUIT :Remote host closed the connection < 1631123298 452319 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :I don't think I want to delve into this deeper than that < 1631123306 659533 :b_jonas!~x@catv-176-63-3-104.catv.broadband.hu PRIVMSG #esolangs :to delve into the source code that is < 1631124646 629840 :Koen_!~Koen@96.250.88.92.rev.sfr.net QUIT :Quit: Leaving... < 1631125002 742931 :imode!~imode@user/imode JOIN #esolangs imode :imode < 1631125012 392128 :dyeplexer!~dyeplexer@user/dyeplexer QUIT :Remote host closed the connection < 1631125068 610133 :delta23!~delta23@user/delta23 JOIN #esolangs delta23 :delta23__ < 1631129300 573646 :sprock!~sprock@user/sprock QUIT :Ping timeout: 260 seconds < 1631131454 839651 :sprock!~sprock@user/sprock JOIN #esolangs sprock :Maeve Sproule < 1631132111 644450 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :I don't know how (or if) TRON handles case folding. I also think someone else on the esoteric programming IRC mentioned idea to have split codes with the language and glyph, that way you could also handle case folding properly, too < 1631132272 479366 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esolangs :Also, you can implement Turkish case folding with Turkish character encoding. > 1631134311 80478 PRIVMSG #esolangs :14[[07Talk:Mogus14]]4 N10 02https://esolangs.org/w/index.php?oldid=87939 5* 03ArthroStar11 5* (+1621) 10Created page with "== Attempt at an interpreter == Hi, I attempted to make an interpreter for this language [https://drive.google.com/file/d/1RotVm5i9xgDN94vK47tBUwHFiOGVAmLv/view?usp=sharing li..." < 1631134381 824938 :sprock!~sprock@user/sprock QUIT :Ping timeout: 252 seconds < 1631134580 984025 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1631134643 722320 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 252 seconds < 1631134740 726630 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 NICK :Lord_of_Life < 1631134768 453613 :Everything!~Everythin@37.115.210.35 QUIT :Quit: leaving < 1631136602 400321 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Bleh. I use this one place's free secondary DNS service, and they've been pretty laggy in the past in terms of responding to notifys to refresh the zone, so I've had to bump up the ACME dns-01 verification delay all the way to 300 seconds. But now they've gone and started to take like half an hour. So the certbot update of esolangs.org fails. :/ < 1631136613 881861 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Maybe I need to do that thing where I delegate the `_acme-challenge` names as a subdomain that's only hosted by the primary nameserver. Since if it's down, it's not like the dynamic update would work anyway. < 1631136624 840931 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Or else I should've just used the HTTP-based challenge like normal people. < 1631137180 786091 :sprock!~sprock@user/sprock JOIN #esolangs sprock :Maeve Sproule < 1631137501 293464 :riv!~river@tilde.team/user/river QUIT :Quit: Leaving < 1631139433 636727 :chiselfuse!~chiselfus@user/chiselfuse JOIN #esolangs chiselfuse :chiselfuse < 1631139527 792205 :arseniiv!~arseniiv@136.169.204.31 QUIT :Ping timeout: 252 seconds < 1631139583 131778 :lambdabot!~lambdabot@haskell/bot/lambdabot QUIT :Remote host closed the connection < 1631139639 881361 :lambdabot!~lambdabot@haskell/bot/lambdabot JOIN #esolangs lambdabot :Lambda_Robots:_100%_Loyal