01:19:48 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement). 01:38:29 [[~ATH implementation attempt]] https://esolangs.org/w/index.php?diff=159697&oldid=159677 * TheMCoder * (-3) H3LL0 T3R3Z1 01:39:00 [[~ATH implementation attempt]] https://esolangs.org/w/index.php?diff=159698&oldid=159697 * TheMCoder * (+3) 02:55:01 [[Finity]] N https://esolangs.org/w/index.php?oldid=159699 * Silver * (+3217) created 02:57:05 [[Language list]] M https://esolangs.org/w/index.php?diff=159700&oldid=159692 * Silver * (+13) added Finity 03:00:46 [[Finity]] M https://esolangs.org/w/index.php?diff=159701&oldid=159699 * Silver * (+103) categories 03:02:08 [[Finity]] M https://esolangs.org/w/index.php?diff=159702&oldid=159701 * Silver * (+32) first paragraph formatting to match other pages 03:02:53 [[User:Silver]] M https://esolangs.org/w/index.php?diff=159703&oldid=86807 * Silver * (+13) added finity 03:03:15 [[User:Silver]] M https://esolangs.org/w/index.php?diff=159704&oldid=159703 * Silver * (-1) pronouns 03:04:02 [[Finity]] M https://esolangs.org/w/index.php?diff=159705&oldid=159702 * Silver * (+57) mention optimiser implementation 03:34:21 [[Nonstraightforward]] M https://esolangs.org/w/index.php?diff=159706&oldid=159605 * RaiseAfloppaFan3925 * (+863) Added the tiers of immutability since they can be quite confusing + updated interface syntax to match C8 03:37:30 [[Talk:Calculation]] N https://esolangs.org/w/index.php?oldid=159707 * BestCoder * (+65) Created page with "Wait this is turing complete, how, this only has 26 max variables" 03:48:11 [[Talk:Nonstraightforward]] N https://esolangs.org/w/index.php?oldid=159708 * RaiseAfloppaFan3925 * (+1203) Asking if Nonstraightforward counts as pseudonatural 03:49:49 [[Nonstraightforward]] M https://esolangs.org/w/index.php?diff=159709&oldid=159706 * RaiseAfloppaFan3925 * (-19) This page is NOT a stub anymore and was never a stub, why did I think it was a stub lol 03:54:00 [[Tired]] N https://esolangs.org/w/index.php?oldid=159710 * BestCoder * (+86) Created page with "in [[Tired]], every program prints go to sleep because you are looking at this at 2 am" 04:02:31 [[Triolang]] N https://esolangs.org/w/index.php?oldid=159711 * BestCoder * (+446) Created page with "[[Triolang]] is an esolang that has 3 commands =Specs= 0 - reverses the program, without moving the cursor 1 - adds the program to the end of the program 2 - removes all code before this command after all of these commands, inbetween, it moves the cursor to the nex 04:02:52 [[User:BestCoder]] https://esolangs.org/w/index.php?diff=159712&oldid=144367 * BestCoder * (+18) 04:12:42 [[Light Switch]] https://esolangs.org/w/index.php?diff=159713&oldid=130878 * BestCoder * (+182) 04:18:26 [[Light Switch]] https://esolangs.org/w/index.php?diff=159714&oldid=159713 * BestCoder * (-2184) /* Example */ 04:46:32 -!- ais523 has quit (Quit: quit). 04:59:56 Hi 05:00:06 -!- Lord_of_Life has quit (Ping timeout: 252 seconds). 05:01:08 -!- Lord_of_Life has joined. 05:12:51 [[DVector]] N https://esolangs.org/w/index.php?oldid=159715 * None1 * (+1804) Created page with "{{lowercase}} '''dVector''' is an [[OISC]] invented by [[User:None1]] and inspired by [[Vector]], it uses a 3-dimensional vector. ==Data== As said above, Vector uses a 3D vector called ''A'', it is initially (0,0,0). A vector literal is represented by 3 real numbers sep 05:13:05 [[DVector]] M https://esolangs.org/w/index.php?diff=159716&oldid=159715 * None1 * (-2) 05:13:59 [[Language list]] https://esolangs.org/w/index.php?diff=159717&oldid=159700 * None1 * (+14) /* D */ 05:14:56 [[User:None1]] https://esolangs.org/w/index.php?diff=159718&oldid=158879 * None1 * (+91) /* My Esolangs */ 06:18:27 -!- Sgeo has quit (Read error: Connection reset by peer). 06:25:07 -!- ProofTechnique_ has quit (*.net *.split). 06:26:25 [[User talk:Gilbert189]] https://esolangs.org/w/index.php?diff=159719&oldid=159690 * Gilbert189 * (+147) 06:30:33 -!- ProofTechnique_ has joined. 06:45:07 "a closure is just sugar for an anonymous struct that implements FnOnce/FnMut/Fn" => ok, so if you try to put the impl FnOnce into the scope with your scoped generic, would it be able to access the value of your scoped generic when it calls eg. Default::default? 07:09:55 -!- tromp has joined. 07:15:18 that's the first part; the second part is if it could refer to the scope generic value somehow, can you hide it well enough that the type of the closure structure is such that the lifetime rules don't stop you from leaking it from the scope, or from starting a thread or scoped thread with it 07:17:44 "just sygar for an anonymous struct" only helps if you follow through with the translation, and I don't know how that would work with rust scoped generics, and I also don't know how a scoped impl works 07:19:52 I think I don't even understand rust's lifetime rules enough when it comes to types with lifetime parameters. I only understand the special case when you can have local variables with some of their recursive struct member fields borrowed or mut borrowed, but no references or mut references appear inside struct/enum types 08:37:40 -!- Everything has joined. 09:10:39 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 09:14:53 -!- Everything has quit (Quit: leaving). 09:36:02 -!- tromp has joined. 09:38:42 [[Special:Log/newusers]] create * Blah-bla-blah-1 * New user account 10:50:06 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 11:02:10 -!- wib_jonas has joined. 11:02:32 [[Vts]] N https://esolangs.org/w/index.php?oldid=159720 * JORE * (+5372) Created page with "== VTS Programming Language == '''VTS''' is a modification of python. It also makes code harder to read. {| class="wikitable" |+ Command Set |- ! VTS !! Python !! Description |- | n >> x || x=n || Assignment |- | n *> x || x=x*n context for the previous conversation: the potential language extension for Rust called scoped generics that ais523 was talking about is explained in http://ais523.me.uk/blog/scoped-generics.html 11:07:22 [[Vts]] https://esolangs.org/w/index.php?diff=159721&oldid=159720 * JORE * (+37) 11:07:45 [[VTS]] https://esolangs.org/w/index.php?diff=159722&oldid=158680 * JORE * (+37) /* Code Examples */ 11:10:59 why are those two pages with identical content? 11:26:36 I guess I'll have to wait a day to see if they'll be edited to differ significantly, to describe a pair of sister esoteric languages; if they aren't then just change one to a redirect to the other. 11:43:35 -!- tromp has joined. 11:55:30 -!- amby has joined. 12:04:30 [[Special:Log/newusers]] create * O * New user account 12:22:23 [[Unlambda]] https://esolangs.org/w/index.php?diff=159723&oldid=154977 * B jonas * (+2) /* External resources */ frickin' new homepage for IOCC broke links 12:42:55 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 12:50:03 wib_jonas: why...: I hope it's just ignorance about redirects 12:52:31 [[Vts]] https://esolangs.org/w/index.php?diff=159724&oldid=159721 * Int-e * (-5392) Surely a redirect is better than having the exact same page twice. 12:53:52 -!- Sgeo has joined. 12:55:13 [[VTS]] M https://esolangs.org/w/index.php?diff=159725&oldid=159722 * Int-e * (+0) "Python" is used as a proper name 12:56:25 [[User:I am islptng/Sandbox]] https://esolangs.org/w/index.php?diff=159726&oldid=159684 * I am islptng * (+8) 13:00:15 [[User:B jonas/List]] https://esolangs.org/w/index.php?diff=159727&oldid=157392 * B jonas * (+597) Brain-Flak, Mini-Flak 13:21:11 -!- wib_jonas has quit (Ping timeout: 272 seconds). 13:57:46 -!- tromp has joined. 14:05:59 [[User:Tommyaweosme]] https://esolangs.org/w/index.php?diff=159728&oldid=159196 * Tommyaweosme * (+571) 14:24:59 [[Talk:Calculation]] https://esolangs.org/w/index.php?diff=159729&oldid=159707 * PkmnQ * (+161) 14:29:51 -!- wib_jonas has joined. 14:35:19 -!- wib_jonas has quit (Quit: Client closed). 15:01:11 [[User:I am islptng/Sandbox]] https://esolangs.org/w/index.php?diff=159730&oldid=159726 * Hotcrystal0 * (+575) 15:08:53 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 15:10:54 -!- FreeFull has quit. 15:14:51 -!- wib_jonas has joined. 15:16:29 huh, the start page of Python documentation no longer says "keep this under your pillow" to describe the standard library documentation, they changed it from Python 3.10 to 3.11. did they get health complaints from the princess and the pea? 15:19:32 -!- FreeFull has joined. 15:34:53 wib_jonas: it was traded for "clarity": https://github.com/python/cpython/pull/116914 15:36:56 (Quotes mainly because I'm not interested in discussing whether this adds clarity or not; I don't care either way.) 15:38:11 I mean, was "keep this under your pillow" cute? Sure. Does it really add to the documentation? I don't think so. 15:40:36 no complaint from the princess then 15:49:04 -!- ais523 has joined. 15:49:30 b_jonas: so it took me ages to find, but the relevant rule seems to be "«T: 'a» means that all lifetime parameters of «T» outlive «'a»." 15:50:08 if a struct or the like wants to include a type that has a lifetime, then the lifetime of that type is lifetime parameter of the struct 15:51:29 this seems a bit weird when combined with contravariace – it implies that a contravariant struct can be non-'static but possible to coerce into something that is 'static 15:51:53 There's variance too, https://doc.rust-lang.org/reference/subtyping.html#r-subtyping.variance 15:52:24 int-e: yes, the thing that surprised me is that variance isn't directly relevant here, I thought it would be 15:53:11 Hmm I am surprised that there's no example of a contravariant lifetime... does that not happen? 15:54:02 it is possible, a struct can contain a function that takes it as argument 15:54:11 oh it des happen, https://doc.rust-lang.org/reference/subtyping.html#r-subtyping.variance.user-composite-types has an invariant lifetime example 15:54:20 (phew) 16:09:16 ais523: yes, in particular std::thread::spawn is declared similar to `fn spawn ...) + Send + 'static, ...>(f: F) -> JoinHandle<...>;` in which the `F: 'static` type parameter bound guarantees that the type of the starting closure `f` has a type that doesn't mention any scope on your call stack. So that starting closure can have 16:09:16 upvalues, and those upvalues could hold references to 'static values such as globals or leaked boxes. But `t` can't have a reference to the caller's stack, which makes sense because the thread may run in the background even after the calling function and its callers etc return. 16:12:54 https://doc.rust-lang.org/nightly/reference/trait-bounds.html#lifetime-bounds describes the lifetime bound syntax 16:19:44 -!- tromp has joined. 16:39:04 -!- ais523 has quit (Quit: sorry about my connection). 16:42:59 [[User:Tommyaweosme]] https://esolangs.org/w/index.php?diff=159731&oldid=159728 * Tommyaweosme * (+80) 16:59:48 ais523: ok, here's the thing. https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=f976adfc6792bbfa0d008347ea6ab090 17:00:23 this works, it has a closure that has an upvalue whose type mentions a non-static lifetime, but f still counts as having a 'static lifetime so you can run in another thread 17:03:56 so I think what you have to figure out is that when f has an upvalue whose type mentions a scoped const in such a way that it can access the scoped const value by eg. calling default, then what is the rule to determine the lifetime of f, or more generally what is the lifetime of any closure when scoped generics are involved 17:04:31 or maybe some such closures are just compile-time errors 17:06:36 but you want a backwards-compatible language extension, so it should still say that the above example is valid because the type of f is :'static 17:09:01 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 17:13:49 -!- wib_jonas has quit (Quit: Client closed). 17:15:47 -!- ais523 has joined. 17:16:51 int-e: invariant lifetimes are fairly common in Rust, contravariant lifetimes do exist but are rare (e.g. `fn &'a ()` is contravariant) 17:22:49 b_jonas: right, the non-scoped thread spawn has to require the new thread's main function to be 'static because it could outlive the calling thread 17:23:08 -!- tromp has joined. 17:25:43 in your example, the «fn(&mut i32)» in it is lifetime-generic rather than containing a particular lifetime, I think – so the lifetime isn't being sent between threads (as the function runs on the main thread) 17:27:58 b_jonas: here: https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=d70efd8b150f331b7ed30f29c10f5ab5 17:28:25 the function inside the mutex is being called with values of two different lifetimes, so it isn't hardcoded-lifetime but rather lifetime-generic 17:28:51 so the lifetime is never actually being sent between threads 17:51:46 [[Ultragolf]] N https://esolangs.org/w/index.php?oldid=159732 * JORE * (+47684) Created page with "'''Ultragolf''' is a golfing language made by JOrE. == Features: == * 16-bit System registers: R0, R1, R2, R3 * 10K 64-bit stack * 100K 32-bit memory * JLV for jumping * BSR (Big System Register) with a whooping 65536 bytes size!! (max. about 10e20000) * Also ASC 17:59:30 [[Ultragolf]] https://esolangs.org/w/index.php?diff=159733&oldid=159732 * JORE * (+278) 18:03:38 nah, what wib_jonas asked is still not the right question I think 18:04:51 ais523: yes 18:34:55 -!- impomatic has joined. 18:35:17 note to myself: the above not relevant example is simpler to write with a OnceLock instead of a Mutex: https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=659326de6ac6bc2043049c4eb2cc4c2f 18:35:37 under what possible circumstance would I want to type nullptr instead of NULL 18:37:55 oren: in C23 or in C++11? 18:38:38 oren: if it's in C++11 then nullptr has a bit more typesafety because `int x = NULL;` may compile without error but `int x = nullptr;` is an error 18:39:16 pointer to integer without a cast isn't an error? 18:40:58 oren: pointer to integer implicit conversion like `int a = "";` is an error in C++, but nullptr isn't a pointer so this is not exactly the same as the previous example 18:41:25 oren: NULL is not necessarily a pointer 18:41:33 it is valid for the system header files to contain #define NULL 0 18:41:52 in C, I think it is more common to see #define NULL (void *)0 18:42:01 but I'm not sure that definition is even valid in C++ 18:42:29 Going the other way around, I learned C++ in the era where we're supposed to write e.g. `virtual whatever = 0;` instead of `virtual whatever = NULL;` 18:42:34 oren: also with explicit cast `int a = (int)"";` may be an error in C++ if pointers are wider than intd 18:42:56 uhh... they should have just fixed the definition of NULL instead of adding a second way to say NULL 18:42:57 That looks wrong for some reason. Maybe I'm finally forgetting C++! 18:43:11 korvo: that's another thing again, there's no pointer nor integer involved there, the =0 is literal syntax 18:43:13 pure virtual functions have such strange synax 18:43:15 * syntax 18:44:41 b_jonas: I learned C++ on Windows 95/98, where int could be either 16 or 32 bits and pointers could be either 16 or 32 bits and they didn't always match, although it was more common for them to match than not 18:45:05 actually, function pointers could be a different size from data pointers, if int was 16 bits 18:45:31 (which is probably a major part of the reason why C doesn't necessarily allow casting between function and data pointers) 18:45:34 and either could be bigger 18:45:43 oren: the original definition of NULL was (void *)0 and that's still the definition used in C and probably won't change because it would break compatibility with some code that uses varargs. but that doesn't work in C++ because `int *a = (void *)0;` would be an error, so C++ redefined NULL. it probably shouldn't have, it should have used a different name instead of NULL, but it's too late now, C++ has 18:45:49 to define NULL as 0 for compatibility with code that writes that. 18:45:51 blame Stroustrup for this one 18:46:38 ais523: didn't that version of C++ allow `int x = (int)"";` even if "" is 32-bit wide though? 18:46:50 probably 18:46:59 I hadn't read the standards back at the time, I'd learned from textbooks 18:47:19 and the textbook I learned from recommended experimentally determining, e.g., whether you could write to the rightmost and bottommost lines of the screen 18:47:42 (it gave an example where writing to the edges worked, but writing to the bottom-right corner didn't – presumably that's because it made the screen scroll) 18:47:57 . o O ( How to PEEK and POKE in C++ ) 18:48:08 I assume it was also based around a nonstandard set of libraries, standard C doesn't have a way to write to absolute positions on the screen 18:48:17 BASIC was such a dirty language. 18:48:37 int-e: I think you just reinterpret_cast an int into a volatile pointer and write through it 18:48:56 this is of course UB but actual compiler/hardware combinations can define the behaviour if they want to 18:51:14 I suspect that poking absolute addresses is actually less likely to miscompile on modern compilers than writing to the program's own memory through weirdly obtained pointesr 18:51:46 that said, inline asm is probably best for this sort of thing, you are doing something very system-specific anyway so may as well generate the exact asm you want 18:52:28 The definition of `NULL` in C isn't `(void *)0`; an unadorned `0` is also allowed. 18:52:31 C11 7.19p3: "The macros are `NULL` which expands to an implementation-defined null pointer constant; --`, C11 6.3.2.3p3: "An integer constant expression with the value 0, *or* such an expression cast to type `void *`, is called a /null pointer constant/", emphasis added. 18:52:57 s/isn't/& necessarily/ 18:53:43 fizzie: yes, in the standard, but in practice it's (void *)0 because 0 can break legacy code involving C varargs 18:54:22 In C23, it may also be defined as `nullptr`. (C23 6.3.2.3p3: "An integer constant expression with the value 0, such an expression cast to type `void *`, or the predefined constant `nullptr` is called a /null pointer constant/.") 18:56:00 the standard lies because it wants to discourage you from writing that sort of dodgy code 18:57:34 fizzie: what does nullptr decay to as an argument to a no-prototype function or vararg argument? 18:59:25 Its type is `nullptr_t`, which (7.21.2p2) "is an unqualified complete scalar type that is different from all pointer or arithmetic types and is neither an atomic or array type and has exactly one value, `nullptr`." 19:00:53 fizzie: which regex syntax does that with a bare &, as opposed to \& or $&? 19:01:16 ais523: I think sed. 19:01:43 `` echo foo | sed -e 's/foo/& &/' 19:01:45 foo foo 19:02:32 basic regexes do that 19:02:46 $& is Perl 19:03:15 `` echo foo | /bin/sed -e 's/foo/& &/' # sed is a hackeso program so I don't trust it 19:03:17 foo foo 19:04:13 it seems to me that if you are writing new code you can #define NULL correctly yourself, and old code will not magically update to use nullptr instead of NULL, so the addition of nullptr solves nothing in C 19:04:59 except i suppose forward compatibility to C++? 19:05:07 maybe we should use a different PATH to look up commands for HackEso top level (right after the invocation backtick) than for shells so that you can override a command like sed or ls or paste or whoami only when you use it at top level 19:06:03 oren: redefining NULL would be a questionable idea because any macro in an old header that you include could refer to it 19:06:28 `` ls -l /hackenv/bin/sed 19:06:30 ​-rwxr-xr-x 1 1000 1000 101 Apr 7 2018 /hackenv/bin/sed 19:06:42 `` cat /hackenv/bin/sed 19:06:43 ​#!/bin/bash \ /bin/sed "$@" && if [[ $# == "3" && "/$1" == "/-i" ]]; then echo -n "$3//"; cat "$3"; fi 19:07:06 ais523: cat is also shadowed by a script so I don't trust it either 19:07:09 b_jonas: probably right to distrust it, I wonder what that override is doing 19:07:20 no wait, cat isn't 19:07:39 cat is fine, I'm just always afraid that someone will define it in some incompatible way some day 19:07:54 `` /bin/cat /hackenv/bin/sed 19:07:55 ​#!/bin/bash \ /bin/sed "$@" && if [[ $# == "3" && "/$1" == "/-i" ]]; then echo -n "$3//"; cat "$3"; fi 19:08:57 oh, I see – sed -i does inplace edits, the wrapper around sed detects that you are running sed -i and prints the resulting state of the file you edited 19:09:14 that does seem like a useful wrapper for hackeso use 19:09:30 I'm the most angry about shadowing paste , because the scripts shadowing sed and ls at least *try* to be mostly compatible with the unix utility, while ping and whoami are shadowing programs that would not be very useful on HackEso, but paste shadows a useful program with something completely incompatible 19:10:13 but I don't like any of these shadowings. 19:10:20 w is also in the same category as sed and whoami 19:11:21 `` /usr/bin/w 19:11:23 ​ 19:11:22 up 0 min, 0 users, load average: 0.00, 0.00, 0.00 \ USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 19:11:50 I think this isn't useful on HackEso because the sandbox prevent it reading any of the information it's supposed to return 19:11:58 fizzie: would it make sense to have a directory where HackEso looks up top-level commands first before it looks them up in PATH (but after it looks for a builtin)? 19:12:04 argh yes 19:12:11 correction, w is also in the same category as ping and whoami 19:12:27 `if 19:12:29 bash: -c: line 1: syntax error: unexpected end of file 19:12:29 err 19:12:31 `id 19:12:32 uid=1000 gid=1000 groups=1000 19:13:13 fizzie: also do you happen to know if most of the unwanted requests on the wiki come through IPV4? 19:14:12 It could make sense, though at least `paste` (the one that creates links, I mean) is pretty useful in a pipeline as well. 19:14:22 And yes, all scraping I've seen so far has been over IPv4. 19:15:18 Speaking of which, someone's doing a particularly bursty/spiky kind of scraping recently, leading to pretty severe lag spikes: https://zem.fi/tmp/spikes.png 19:15:38 Haven't done anything about it yet, since it hasn't been completely unreasonable. 19:15:52 those graphs look like the server is holding up even during the spikes 19:16:29 It's been going on from June 3 or so, at a similar not entirely predictable frequency. 19:16:33 fizzie: if the script that creates links is useful in a pipeline then is should have a new alias in the PATH that doesn't clash with an existing well-known utility 19:16:44 IPV4, thank you 19:19:46 I looked at one of the recent spikes, and it was quite different from the previous scraping, in that all requests were from a single IP (in the Google cloud), it may have been following robots.txt (or at least it definitely wasn't violating that), and it had a user agent linking to scrapy.org (which appears to be a "data extraction framework"). 19:22:21 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 19:25:48 -!- zzo38 has quit (Ping timeout: 272 seconds). 19:30:09 -!- lurker97 has joined. 19:30:27 -!- lurker97 has left. 19:36:34 it is nice to see a bot actually following the rules 19:46:52 I've used Scrapy quite a bit. It is built from Twisted Python; it's basically a minimum viable spidering library. The out-of-box defaults are a little aggressive, but it generally respects every community signal, including robots.txt. 20:03:03 -!- tromp has joined. 20:14:55 [[Special:Log/newusers]] create * Tand0x * New user account 20:27:46 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=159734&oldid=159656 * Tand0x * (+93) /* Introductions */ 20:28:46 -!- zzo38 has joined. 21:07:07 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 22:20:06 -!- ais523 has quit (Quit: quit). 22:27:25 -!- impomatic has quit (Quit: Ping timeout (120 seconds)).