< 1724716943 77500 :mtm!~textual@c-71-228-84-213.hsd1.fl.comcast.net QUIT :Ping timeout: 255 seconds < 1724717163 416928 :mtm!~textual@c-71-228-84-213.hsd1.fl.comcast.net JOIN #esolangs mtm :Textual User < 1724719398 705286 :troojg!~troojg@user/troojg JOIN #esolangs troojg :troojg < 1724721251 746270 :amby!~ambylastn@2a00:23c5:ce05:7801:67fc:c655:6672:7ca 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 < 1724721541 223225 :unjust!~unjust@user/unjust JOIN #esolangs unjust :insufficient pocket lint < 1724722168 874488 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: I haven't read it yet, but the relevant RFC is https://github.com/rust-lang/rfcs/blob/master/text/1909-unsized-rvalues.md which is partly implemented as an unstable feature in the compiler as https://doc.rust-lang.org/nightly/unstable-book/language-features/unsized-locals.html https://doc.rust-lang.org/nightly/unstable-book/language-features/unsized-fn-params.html < 1724723500 361054 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :my idea's a bit different – basically it's to have scoped constants that are only constant in a particular scope, and everything depending on them is lifetime-limited to that scope < 1724723564 281861 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :most of the proposal is pretty easy to implement, but generalising it to also be usable for array sizes isn't < 1724723743 307626 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: yes, that's rather more complicated, I'm just linking this because it's about copying VLAs < 1724723763 779319 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :or moving < 1724723775 390799 :troojg!~troojg@user/troojg QUIT :Ping timeout: 276 seconds < 1724724406 691898 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :as for “‘better enough’ than C”, I consider Rust as a better enough than C++, meanwhile zig is the possibly better enough than C language. The distinction is obvious enough: rust has types that have a destructor that is ran automatically when a variable goes out of scope, while zig explicitly does not want to have those. < 1724724495 492110 :unjust!~unjust@user/unjust PART :#esolangs > 1724724612 305888 PRIVMSG #esolangs :14[[07Collab14]]4 10 02https://esolangs.org/w/index.php?diff=136863&oldid=136850 5* 03PkmnQ 5* (+308) 10/* Commands */ Control flow time < 1724725030 569724 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :“memory wasted storing the same values repetitively, […] either requiring runtime checks [of consistency] even though that should be possible to determine at compile time” => that's probably one of those big unsolvable problems of programming, where even ten years from now we'll have a lot of practical cases that we can't prove to any compiler < 1724725167 976042 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I even have a mild case of it in the polyform enumerating program that I'm developing, where I know that all the polyforms in a large array have the same number of blocks, and the rest of the array representing it is zeroed out, but I can't really prove that to the compiler. < 1724725195 14152 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, the easy cases are a) solvable but b) unsolved in Rust currently, and probably lots of other languages too < 1724725208 206549 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I agree that there are probably some unsolvable hard cases < 1724725529 293299 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : as for “‘better enough’ than C”, I consider Rust as a better enough than C++, meanwhile zig is the possibly better enough than C language. The distinction is obvious enough: rust has types that have a destructor that is ran automatically when a variable goes out of scope, while zig explicitly does not want to have those. ← Rust's implementation of Drop is a mistake, possibly in more than one way < 1724725551 362829 :bookworms!~bookworms@user/bookworms JOIN #esolangs bookworms :bookworms < 1724725561 609406 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I think the correct solution is along the lines of "explicit destructors but the compiler verifies that you run them, and failing to destroy an object without an explicit mem::forget or the like is a compile error" < 1724725570 77795 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and it's unclear whether that's closer to C or C++ < 1724725585 380242 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in any case, Rust can be better enough than C despite being dissimilar to it < 1724725601 275283 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I don't see why that would be < 1724725645 113722 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :would you like people to write some explicit markup in the program for local variable where you have to run the destructor at the end of the scope? < 1724725646 501976 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, I consider C a better language than C++, and many of the things I dislike about Rust are places where it copied C++ < 1724725659 902535 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: if it has a destructor, yes, apart from Rc variants < 1724725696 922837 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and Box, I guess < 1724725699 484531 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :that sounds like you want zig < 1724725721 412802 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :no, I want Rust with Zig-style destructors < 1724725723 788996 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :not that I want to talk you into it, I like rust and its destructors < 1724725795 342500 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, well, I guess the way I'd put it is that I think destructors that have side effects beyond pure memory management are better explicit, because a) the program flow is obscured otherwise and b) often they want to take parameters, in which case the call would have to be explicit < 1724725835 881958 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :also, I think that destructors that just manage memory are inherently different from other sorts of destructor, and behave more like a garbage collector than, say, a destructor that closes a file < 1724726000 689559 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess the way I'd put it is, from a semantic point of view ignoring performance, often the clearest code would be produced by a mechanism in which the program behaviour is the same as if it were working entirely by-value, cloning an objects whenever you passed it to a function or method < 1724726057 876466 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and a significant number of features in a range of languages – borrows, Rc, garbage collectors – exist to try to emulate that behaviour, but with better performance (which they gain by not supporting the entire range of possible cases) < 1724726075 112305 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :destructors can be part of that, and if they're used for that it's fine for them to be implicit < 1724726140 427983 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :sure, that's how the C++ standard library containers started out, they all copy deeply by default < 1724726165 527110 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, for the type of object that has an identity, is mutable, etc., destroying it has semantic meaning and should generally be done intentionally, rather than with automatically determined timings like "when the last reference is gone" (and in fact, it's often semantically correct for it to be destroyed while there are still references, breaking the references) < 1724726212 488842 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. in NetHack, conceptually you want to destroy the object representing a monster when the monster dies, even though there are likely to still be existing references to it at that pointn < 1724726261 948572 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I just use C, even though there are some problems with it, Rust and Zig have their own different problems, I think. < 1724726264 368728 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and it uses a method of simulating weak references to make it work, using the DEADMONSTER flag < 1724726301 447785 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(there's a bug in 3.4.3 you can exploit to set the DEADMONSTER flag on the player, which leads to some interesting consequences) < 1724726320 400652 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(I also think that different programming languages can be good for different purposes, too) < 1724726330 656636 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :sure, but you can do such explicit destruction in any language that implements weak references, and you can implement all sorts of variants of that in rust, either the one in the standard library or other solutions < 1724726382 349555 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it gets even funnier in M:tG where effects can reference objects after the object is dead (usually because it's moved away from the zone or because it was a token or copy of a spell that the SBA destroyed because it's in the wrong zone) < 1724726443 137927 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right – but I basically see the world of objects as being "pure value-like things that you can put directly into an Rc without issue" and "things that need to be destroyed explicitly", and that doesn't leave much room for useful Drop-style autodestructors other than those concerned purely with memory management < 1724726493 207716 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: I agree about different languages being useful for different purposes; I still use languages like Perl and Makefile when appropriate, even though I think neither would be a good idea for a large project < 1724726679 244492 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :how about values like std::cell::Ref or std::sync::MutexGuard, where the drop has more side effects than just pure memory management, and, in the latter case, could even call a syscall in the contented case, but the effect is conceptually still localized to the process's internal state, unlike eg. closing a file descriptor or some other object that has high side effects on closing? < 1724726737 163706 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :dropping a MutexGuard feels like it needs to be explicit because the timing matters – in many cases you want to drop it earlier than the end of the scope < 1724726817 411956 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yes, luckily rust lets you just destroy any local variable earlier than when it would naturally go out of its lexical scope, so that's easier than C++ < 1724726857 57093 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it seems overly complicated to call `drop`, which then calls the destructor via a trait, rather than just simply calling the destructor directly < 1724726875 487923 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :though of course for the fully general case where you can destroy it from called functions you would need to wrap it in an Option that you pass by mut reference < 1724726921 266280 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, I normally use Cell rather than RefCell, and swap a placeholder value into the cell if I need to reference it < 1724726949 337313 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :with that implementation, the way you "drop the reference" is to swap a value back, i.e. to write to the cell < 1724726952 970121 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: but you need that for the invariant guarantees where the existence of a MutexGuard guarantees that you have the lock. if you don't want that invariant then you use an Option, or, if you don't want to prove safety to the compiler, a ManuallyDrop < 1724726958 483739 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so it feels inherently like dropping a Ref is a write operation that should take an argument < 1724726987 778244 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :sure, Cell has its place and it's often worth to use it, but sometimes you do want a RefCell < 1724727011 543966 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I'm using both in the same program < 1724727034 785351 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: no you don't, the existence still guarantees you have a lock even if you drop the lock via using an inherent method that takes `self` as a parameter < 1724727052 500716 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :but yes, I can understand if you say that dropping a MutexGuard or sync::Ref has enough side effects that you want to be explicit about it < 1724727077 174682 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for what it's worth, I am increasingly coming to view dropping a *mutable reference* as being an operation that has side effects < 1724727137 112384 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :if you call a method into which you pass MutexGuard by value and then that method returns then you no longer have a MutexGuard value. you could have an explicit method but it's not in the library because drop works just fine. < 1724727182 165554 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: right, but my point is that "it goes via drop" is a somewhat confusing implementation detail < 1724727198 984891 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it doesn't inherently need to go via drop, it could be any method that consumes its argument < 1724727201 159075 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :(I mean technically such a method could sneak the MutexGuard back to you as a side effect, but obviously the one that drops the lock wouldn't do that) < 1724727242 411940 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :What you mentioned about M;tG, it has many rules so it is different from most programming languages in many ways anyways. I think in Magic: the Gathering the "last known information" is effectively read-only anyways < 1724727246 520980 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :sure < 1724727247 875018 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there's a method on CondVar, I think, that temporarily unlocks a mutex (atomically with waiting on the condition variable), and relocks it when the wait ends < 1724727269 648785 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: I assume it would be possible for a card to change it, but think it's unlikely that such a card would be made < 1724727286 903424 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I guess you could implement such an interface for a guard, even by wrapping the current MutexGuard < 1724727291 459120 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and that method takes a MutexGuard by value and returns it again < 1724727319 632926 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :ais523: I suppose so, if the card explicitly says it changes the last known information of an object (I do not expect that anything else could change it, although I may be wrong; many strange things can be possible that were not expected) < 1724727340 665058 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :thinking about it, I'm not even sure that would be possible to implement without overriding MutexGuard's destructor somehow < 1724727490 211471 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yeah, mutexes do that < 1724727588 504894 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but in general, having a single destructor that always runs is a mistake, in case you need to implement a method that destroys the object in a weird way < 1724727604 645138 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :so maybe I wasn't quite precise in how that invariant works < 1724727635 804909 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :probably the best example is in the signature of Drop – it can't take the object by value even though it logically should, because then the destructor would run itself recursively when the value goes out of scope, forever < 1724727638 409243 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :maybe the MutexGuard only guarantees that the mutex is locked by the current thread at times when you could borrow it < 1724727672 190835 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(unless you deconstructed the object by pattern-matching on all its fields and moving out of them, which isn't allowed in current Rust but I've seen some very convincing arguments that it should be) < 1724727735 934590 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think the MutexGuard represents the fact that the mutex is currently locked – and that you can therefore lock the mutex via methods that create a MutexGuard and unlock the mutex via methods that destroy a MutexGuard – and that all of this is not inherently related to Drop at all < 1724727753 373864 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the only purpose of the Drop implementation is to make it difficult to accidentally leak a lock, via forgetting to unlock the MutexGuard < 1724727757 172571 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I think it is right sometimes it is helpful and/or necessary to destroy an object in a different way than usual. Sometimes it might not be necessary to destroy an object at all. Sometimes, depending on how it is allocated, you might be able to destroy many objects at once. Or, some data remembered by it is now remembered by something else, so the object should not destroy that data. < 1724727792 584626 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, this may result in the mutex being unlocked too early, and the bug not being detected by the compiler because it just auto-inserts a call to `Drop::drop` which unlocks it – unlocking it should be explicit < 1724727815 982921 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: yes, how Drop currently works, the destructor first calls your drop method, then destroys the fields of the struct or enum variant < 1724727872 980779 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: hmm... I think C++ has types that can't be destroyed, but I never used them and have no idea how they actually work < 1724727873 325534 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, and it's implemented like that because the concept of "a destructor that runs when an object goes out of scope by any means other than mem::forget or ManuallyDrop" is kind-of broken < 1724727883 203412 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :because their destructor is private or something < 1724727945 287837 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm… would «trait Drop { fn drop(ManuallyDrop); }» work as an API, assuming a) arbitrary self types and b) the ability to move the fields out of the contents of a ManuallyDrop by pattern-matching (I'm not sure whether or not that one is currently legal)? < 1724728007 133989 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the ManuallyDrop solves the recursive drop problem (unless you do an into_inner or the like, but that's basically equivalent to a manual recursive call) < 1724728134 144014 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :huh, ManuallyDrop has private fields < 1724728153 266679 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it strikes me as a good candidate for a type with a public field in its public API… < 1724728209 65436 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I think that object-oriented programming is useful for some things but not all things, although what you expect that an object will be can also be different for different uses. In C, the FILE object is very useful (GNU allows you to define your own implementation of its interface and I think BSD also does, although this is non-standard as far as I know) < 1724728215 479882 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: the current language rules don't allow you to create a union whose type has a non-trivial destructor, so that wouldn't easily work < 1724728236 2126 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :so ManuallyDrop currently contains some language magic < 1724728240 182240 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Some people like to use object-oriented programming with everything even though I think that is not helpful. Some programming languages such as Java expect and require you to do so. < 1724728241 976808 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, I was wondering "why not just make a union with one variant" but I guess that's why < 1724728265 708764 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :maybe this could be solved in future versions of the language, but some language magic is fine for now < 1724728291 103405 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think Java requires you to use object-oriented programming; it requires everything to technically be a method of an object or a static method of a class, but this is trivial to work around to write entirely procedural code if you want < 1724728309 18024 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it's still a valid abstraction as in it's type where if you already have ManuallyDrop then you could implement a differently named type that does exactly the same thing based on it, which is what I care about when language magic is involved < 1724728314 709719 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :In the file https://github.com/zzo38/freeheromesh/blob/trunk/exec.c the "objtrash" function is the usual way to destroy an object (actually "destroy" is usually called first, but that is not relevant here), but "annihilate" is used as a more efficient way of destroying everything at once. I think that is one example of why you might want multiple kind of instruction < 1724728325 354449 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is not uncommon to use a class simply as a namespace, containing static methods that work like procedures/functions, and where there is no way to construct an object of the class < 1724728344 991768 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :similarly to UnsafeCell, you can't implement it in first place without language magic, but the interface is such that you can wrap it to another type generic that has the same interface < 1724728385 350443 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :(there may be some unresolved issues about passing those types to extern functions by value, but that's just a problem of the specs currently not being clear enough, not some fundamental limitation) < 1724728407 649904 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I had used Java in the past. However, what I meant is that I think all of the standard functions will require you to do object-oriented programming; if you write your own code then yes I Suppose you can do what you said. I may be wrong, since I have not done much Java programming, but it is what it seem to me < 1724728415 228653 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: fwiw, the blog post I linked has a safe implementation of what's effectively Cell, although there are a couple of major drawbacks that make it mostly unusable in practice < 1724728426 787109 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I'm not sure if this "you could implement the same interface" idea has a name < 1724728464 943822 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :but usually most library types and functions try to be like that > 1724728473 26324 PRIVMSG #esolangs :14[[07Talk:Disan Count Pesudocode14]]4 10 02https://esolangs.org/w/index.php?diff=136864&oldid=136847 5* 03None1 5* (+364) 10 < 1724728474 670897 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have often wondered whether it would be an improvement for languages to just let you implement concrete classes as though they were traits/interfaces < 1724728482 680014 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :not just in rust, in many other languages < 1724728495 640446 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think it probably isn't in Rust but might be in other languages < 1724728496 382513 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :there are some that do break that abstraction, like the wantarray function in perl < 1724728568 147576 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :what do you mean by that? "concrete classes as though they were traits/interfaces"? < 1724728622 382713 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :like, I can implement all the methods of some standard library class/struct, and then use the resulting object in places where the standard library class/struct is requested < 1724728663 3638 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :basically creating a "drop-in replacement" with the same interface < 1724728666 647997 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yep < 1724728673 70789 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this is useful sometimes, but I fear it might make the program too hard to analyse < 1724728690 211577 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :(in rust or C++ that is) < 1724728693 73621 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Such thing is sometimes useful. (My own idea of operating system enforces this for security purposes, although only for objects that belong to other programs than the caller.) < 1724728716 315557 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :interestingly, Rust has some standard library functions with wantarray-style magic, but the relevant API is exposed to user code so it's possible to write working wrappers for them < 1724728734 551683 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :you could even unofficially call it a newtype < 1724728755 830588 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's the opposite of a newtype, isn't it? < 1724728769 228466 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a newtype acts the same way as the old type, but is treated by the compiler as different < 1724728774 46864 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: which ones do you mean? just the ones that extract backtrace information when they panic? < 1724728786 507829 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: right, backtrace, caller location, etc. < 1724728813 187995 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :sure, and if you wrap a library type with your custom type then the compiler will treat it as different. < 1724728825 701543 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :you can't just pass one type to a function instead of the other < 1724728833 582184 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, no – my plan was that you could < 1724728846 505925 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :what? < 1724728850 553003 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :how would that ever work? < 1724728866 740993 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 246 seconds < 1724728873 395969 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a middleground would be able to say in a function signature "any type that implements all the methods of «insert standard library type here»" < 1724728891 714284 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so that if you wanted to guarantee you got the "real" standard library type you could get it < 1724728916 514680 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord > 1724728920 475759 PRIVMSG #esolangs :14[[07Brainfuck/Esointerpreters14]]4 10 02https://esolangs.org/w/index.php?diff=136865&oldid=136303 5* 03None1 5* (+5926) 10/* Wenyan interpreters */ < 1724728932 119756 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't see how even the extreme version couldn't work, though, as long as objects (including standard library objects) are used only via their public API (including internally in the standard library) > 1724728995 33467 PRIVMSG #esolangs :14[[07Brainfuck/Esointerpreters14]]4 M10 02https://esolangs.org/w/index.php?diff=136866&oldid=136865 5* 03None1 5* (-5870) 10/* Textile interpreters */ internal link to interpreter < 1724729016 119587 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: so do you mean like every time you define a struct, you implicitly define something like a trait that contains all the interface of that type, and then you can make a function that accepts a dyn of that trait, which needs a vtable passed because the ABIs can be different? < 1724729021 688743 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and think it would generally be a good thing for standard library objects to generally not assume things about each others' internals < 1724729043 646423 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: yes – the original plan was intended for languages where all objects are passed as dyns anyway < 1724729065 49413 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which is what made me suspect it would probably be inappropriate for Rust < 1724729085 49653 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :where dyns are weird and unusual < 1724729093 395082 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yeah, you can do something like that in a language like python where an object always contains a pointer to its class, though not quite everything you want < 1724729097 21038 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(and less efficient than the normal calling convention) < 1724729117 817983 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is strange for an object-oriented language to *not* store a vtable in every object < 1724729118 627699 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it doesn't always work, but you can often pass the wrong type of object if you add enough magic around your custom reimplementation type < 1724729139 408860 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Sometimes such a thing is inefficient though. But, sometimes it is helpful < 1724729151 386125 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the only ones I can think of offhand are C++ and Rust < 1724729160 557068 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and even C++ tends to vtable quite a lot < 1724729164 174068 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :the problem isn't really that they're weird and unusual but that they have a significant runtime cost that you will often not be able to optimize away, especially for calls across compilation units < 1724729185 713885 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right; and most languages pay that cost on everything they do < 1724729216 155094 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :(technically it needn't be an actual pointer to the class, but the information about the type has to be there at runtime) < 1724729225 521901 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this may help to explain why Java is normally JIT-compiled and LLVM has lots of optimizations to try to devirtualise C++ < 1724729246 795921 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :doesn't Perl use a string containing the name of the class? > 1724729258 424530 PRIVMSG #esolangs :14[[07Brainfuck/Esointerpreters14]]4 10 02https://esolangs.org/w/index.php?diff=136867&oldid=136866 5* 03None1 5* (+59) 10/* Textile interpreters */ > 1724729275 492570 PRIVMSG #esolangs :14[[07Brainfuck/Esointerpreters14]]4 M10 02https://esolangs.org/w/index.php?diff=136868&oldid=136867 5* 03None1 5* (-2) 10/* Piet interpreters */ < 1724729279 706536 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I dunno. do you mean traditional perl or this modern OOP thing that they're trying to add now > 1724729282 141982 PRIVMSG #esolangs :14[[07User:PkmnQ/Alt Flow14]]4 N10 02https://esolangs.org/w/index.php?oldid=136869 5* 03PkmnQ 5* (+1593) 10Created page with "[[Alt Flow]] is a family of esolangs that consists entirely of control flow commands. == Commands == * SKIP n - SKIP the next n commands. (Undefined behavior if there are less than n commands after this one.) * COPY n - COPY the next n commands and append th < 1724729283 277129 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :It is what I thought, that especially for calls across compilaion units, it cannot easily be optimized. So, I generally will not use it except the FILE object anyways < 1724729305 652723 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I know basically nothing about perl's new features, I mostly abandonned following the developments < 1724729315 467310 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: the way Perl did it during the bulk of Perl 5's existence < 1724729328 696209 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I just use python3 for basically everything that I used to use perl for < 1724729357 365494 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Another issue with such a thing is that sometimes you will want to access the underlying object, and the programming language or the API in use might not have a way to do that. I had once said that I had wanted a "fgetcookie" function in GNU, since sometimes it is useful for this purpose. < 1724729362 974124 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I just use Perl in a relatively traditional way, and generally don't use OO in it except when I need to interact with a library written that way < 1724729445 777806 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Do you think "fgetcookie" is good? < 1724729458 980198 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :that varies a lot in my python programs. sometimes I store everything in plain objects of library types like arrays, sometimes I define simple classes for even trivial things, depends on how much I feel like trying to document the code < 1724729464 210972 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :when I write Rust, though, I use its OO-equivalent fairly heavily; I think that's because I like the compile-time guarantees, having more specific types gives you better guarantees, and if you're going to the trouble of making types anyway it can make sense to give them methods < 1724729472 299483 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :wrapping in custom types helps a lot to make the code self-documenting < 1724729489 924745 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: what does it return on a non-custom FILE * that was created from a file on disk using the standard APIs? < 1724729496 961803 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :because the class limits the interface of how I want to use the value > 1724729506 689324 PRIVMSG #esolangs :14[[07Wenyan14]]4 10 02https://esolangs.org/w/index.php?diff=136870&oldid=134521 5* 03None1 5* (-8652) 10Add headings < 1724729570 694616 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :my C is fairly object-oriented nowadays, e.g. I like to have accessor macros for C structs so tht I can change the internals (and in particular so that I can give them side effects) < 1724729600 257557 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :ais523: It would return an unspecified value (possibly null); you should not call fgetcookie in such a case (or pass the FILE* object to a function that does so), just as much as you should not call pclose on a FILE* object that was not obtained by popen. < 1724729619 784568 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I accidentally introduced a bug into 3.7 because I changed the quantity of an item without changing the weight to match – a good set of accessors would have made that mistake impossible < 1724729653 156869 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: why are they macros rather than inline functions? < 1724729682 727613 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :do you mean nethack 3.7? < 1724729685 535757 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: hmm, in that case the code knows that it's a cookie-file anyway, so you might as well create a structure that contains both the file and a cookie reference, mightn't it? < 1724729688 16111 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: yes < 1724729697 214596 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :sorry, I thought that but forgot to put it into the sentence as I was writing it < 1724729712 781230 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yeah, it's kind of hard with nethack because the source has so much old style code remaining < 1724729728 53119 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :one day someone will need to rewrite the whole thing < 1724729741 688570 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I do use inline functions for that sort of thing sometimes, but am still not really sure how much C99 support I want to assume in my C code < 1724729747 891715 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :as in reimplement it < 1724729780 354852 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and inline semantics are confusing in C – macros are easier to understand, and pretty much equivalent if you remember the extra parentheses and backslashes < 1724729791 871721 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :ais523: A reason why you might not is in case you want to pass it directly to fprintf, etc instead of having to keep track of the object separately (especially if the structure is not intended to be exposed). < 1724729817 920298 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :wait what? you don't want to assume even that part of C99? I can understand not assuming the runtime array length part, but C99 inline functions aren't that big of a magic < 1724729837 168194 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: they're implemented differently in gcc with default settings from the way they're implemented in the standard < 1724729857 212340 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I had mostly used gnu89 in my own C programs, although more recently I have used gnu99 because the ability to declare a variable in the heading of a for loop is sometimes useful in macros. < 1724729863 786964 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :need an implicit --std=c99 or the like to get the standard behaviour < 1724729871 64591 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and *both* behaviours are confusing < 1724729872 64714 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: isn't that mostly about whether inline implies static for a function declaration? < 1724729893 806617 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I don't use "inline" without "static" anyways < 1724729897 842986 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :that's a genuine difference between C versions, but you can abstract around it with (yes, I know) a macro like ECB_INLINE < 1724729898 528159 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's about the way you write the out-of-line definition, which I guess is the same thing < 1724729926 468530 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :which expands to either `inline` or `static inline` < 1724729932 924407 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess macros have the advantage that you know the out-of-line definition isn't needed < 1724729963 822725 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :also doesn't gcc default to that these days? maybe that's only for C++ < 1724729979 765594 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I thought the main confusion was related to "extern inline" which means two different things depending on version and I can't remember either of them < 1724730010 254154 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :nope, I'm wrong, that macro is called ecb_inline, and it expands to either `static inline` or `static` < 1724730032 977949 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :`static` is for old compilers that don't have C99 inline functions, `static inline` for C99 and C++ < 1724730035 239099 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :static`? No such file or directory < 1724730084 53548 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the problem with `static inline` is that it can generate a lot of duplicate out-of-line copies < 1724730102 6535 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :so can a macro < 1724730118 138170 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :no, macros can't have out-of-line copies < 1724730135 37625 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :sure, but it's still the same effect with lots of inline copies < 1724730146 141294 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the inline copies are supposed to be duplicates < 1724730164 471030 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :normally you'd do this in situations where an inline copiy is cheaper than a function call anyway < 1724730194 888759 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but that argument doesn't apply to the out-of-line copies because they still have to pay the function call overhead < 1724730270 318231 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so generally, you want the inline definition to appear in a header file that's included by everything that accesses the object, and the out-of-line definition to appear only once in the whole program, so that all the out-of-line calls go to the same place < 1724730328 690986 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, I should go to bed < 1724730331 240863 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :night < 1724730337 526296 :ais523!~ais523@user/ais523 QUIT :Quit: quit < 1724730342 555160 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yes, the C++ rules are probably better for this, C++ requires that if you have two classes with the same namespaced name across compilation units or two inline functions with the same namespaced name and prototype across compilation units then they are the same so dupes can be eliminated at link time < 1724731422 555833 :bookworms!~bookworms@user/bookworms QUIT :Remote host closed the connection < 1724731438 661092 :bookworms!~bookworms@user/bookworms JOIN #esolangs bookworms :bookworms < 1724733104 599491 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I had some ideas about abilities, hold item, moves, etc in Pokemon, such as: a move that is guaranteed to be executed if it has been successfully selected; it cannot be stopped by sleeping, paralysis, fainting, etc, although protecting from the move is still possible and it can still be prevented if the battle ends before it gets a chance to be executed. > 1724734337 643374 PRIVMSG #esolangs :14[[07User talk:PkmnQ/Alt Flow14]]4 N10 02https://esolangs.org/w/index.php?oldid=136871 5* 03Gggfr 5* (+137) 10Created page with "5 and 3 are the same cuz non-negative int = positive int. -~~~~" > 1724734763 288503 PRIVMSG #esolangs :14[[07Ultimate Golfing Simulator 300014]]4 M10 02https://esolangs.org/w/index.php?diff=136872&oldid=127474 5* 03Rdococ 5* (+39) 10/* Computational Class */ > 1724734780 162479 PRIVMSG #esolangs :14[[073ME14]]4 10 02https://esolangs.org/w/index.php?diff=136873&oldid=136686 5* 03Gggfr 5* (+5) 10the user part still must be visible. and what do you mean by not notable > 1724735402 299117 PRIVMSG #esolangs :14[[073ME14]]4 10 02https://esolangs.org/w/index.php?diff=136874&oldid=136873 5* 03Unname4798 5* (-5) 10I WOULDN'T REVEAL THE REAL NAME > 1724735531 299075 PRIVMSG #esolangs :14[[07User talk:PkmnQ/Alt Flow14]]4 10 02https://esolangs.org/w/index.php?diff=136875&oldid=136871 5* 03PkmnQ 5* (+338) 10difference between 5, 4, and 3 < 1724736606 207504 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1724738087 146724 :bookworms!~bookworms@user/bookworms QUIT :Quit: I give the F*%k up! Have a nice day! < 1724739706 305281 :Deepfriedice!~Deepfried@117-20-68-42.751444.bne.nbn.aussiebb.net JOIN #esolangs Deepfriedice :realname > 1724740740 885589 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=136876&oldid=136784 5* 03BCByte 5* (+25) 10/* Introductions */ > 1724741589 136975 PRIVMSG #esolangs :14[[07Turmin14]]4 10 02https://esolangs.org/w/index.php?diff=136877&oldid=136833 5* 03Ttulka 5* (+976) 10/* Computational class */ add CTS simulation > 1724741791 339200 PRIVMSG #esolangs :14[[07Turmin14]]4 M10 02https://esolangs.org/w/index.php?diff=136878&oldid=136877 5* 03Ttulka 5* (+0) 10/* Computational class */ links > 1724742977 472654 PRIVMSG #esolangs :14[[07BrainfXX14]]4 N10 02https://esolangs.org/w/index.php?oldid=136879 5* 03None1 5* (+3024) 10Created page with "'''BrainfXX''' is an esolang, or a family of 256 esolangs, invented by [[User:None1]]. ==Commands== The name of each language is Brainf00 to BrainfFF, the last 2 characters are hex digits. When converted to binary, each digit means whether the c > 1724743017 465429 PRIVMSG #esolangs :14[[07BrainfXX14]]4 M10 02https://esolangs.org/w/index.php?diff=136880&oldid=136879 5* 03None1 5* (-1164) 10/* Interpreter in Python */ > 1724743104 285577 PRIVMSG #esolangs :14[[07BrainfXX14]]4 M10 02https://esolangs.org/w/index.php?diff=136881&oldid=136880 5* 03None1 5* (+195) 10 < 1724743148 37877 :Deepfriedice!~Deepfried@117-20-68-42.751444.bne.nbn.aussiebb.net QUIT :Ping timeout: 248 seconds > 1724743200 270166 PRIVMSG #esolangs :14[[07BrainfXX14]]4 M10 02https://esolangs.org/w/index.php?diff=136882&oldid=136881 5* 03None1 5* (+0) 10/* Interpreter in Python */ > 1724743242 418062 PRIVMSG #esolangs :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=136883&oldid=136262 5* 03None1 5* (+15) 10/* B */ > 1724743278 101425 PRIVMSG #esolangs :14[[07User:None114]]4 M10 02https://esolangs.org/w/index.php?diff=136884&oldid=136313 5* 03None1 5* (+57) 10 > 1724743309 263197 PRIVMSG #esolangs :14[[07BrainfXX14]]4 M10 02https://esolangs.org/w/index.php?diff=136885&oldid=136882 5* 03None1 5* (+9) 10 > 1724743336 898459 PRIVMSG #esolangs :14[[07BrainfXX14]]4 M10 02https://esolangs.org/w/index.php?diff=136886&oldid=136885 5* 03None1 5* (+24) 10/* Equivalents to other languages */ > 1724744368 469928 PRIVMSG #esolangs :14[[07User talk:/w/wiki/index.php/Talk:index.php/Main page14]]4 10 02https://esolangs.org/w/index.php?diff=136887&oldid=134935 5* 03Unicodes 5* (+163) 10 > 1724744546 556589 PRIVMSG #esolangs :14[[07User talk:/w/wiki/index.php/Talk:index.php/Main page14]]4 10 02https://esolangs.org/w/index.php?diff=136888&oldid=136887 5* 03Unicodes 5* (+80) 10 < 1724745372 54862 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User > 1724745633 186215 PRIVMSG #esolangs :14[[073ME14]]4 M10 02https://esolangs.org/w/index.php?diff=136889&oldid=136874 5* 03None1 5* (+5) 10Undo revision [[Special:Diff/136874|136874]] by [[Special:Contributions/Unname4798|Unname4798]] ([[User talk:Unname4798|talk]]) Gggfr was right, userspace links should have User: visible < 1724745655 892422 :Deepfriedice!~Deepfried@117-20-68-42.751444.bne.nbn.aussiebb.net JOIN #esolangs Deepfriedice :realname > 1724745793 299863 PRIVMSG #esolangs :14[[07Mihaieso esomixup14]]4 M10 02https://esolangs.org/w/index.php?diff=136890&oldid=136859 5* 03None1 5* (+23) 10 < 1724745967 751183 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1724746047 727276 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02User:Ractangle/AREA10]] to [[User:Ractangle/JS-CODE]] > 1724746139 642522 PRIVMSG #esolangs :14[[07User talk:/w/wiki/index.php/Talk:index.php/Main page14]]4 10 02https://esolangs.org/w/index.php?diff=136893&oldid=136888 5* 03None1 5* (+466) 10 > 1724746505 688561 PRIVMSG #esolangs :14[[07User:Ractangle/JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=136894&oldid=136891 5* 03Ractangle 5* (+350) 10 > 1724746519 112603 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02User:Ractangle/JS-CODE10]] to [[JS-CODE]] > 1724746904 485606 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=136897&oldid=136895 5* 03Ractangle 5* (+196) 10 > 1724746934 125402 PRIVMSG #esolangs :14[[07Translated JS14]]4 M10 02https://esolangs.org/w/index.php?diff=136898&oldid=133147 5* 03None1 5* (+2) 10 > 1724746962 237367 PRIVMSG #esolangs :14[[07Translated JS14]]4 M10 02https://esolangs.org/w/index.php?diff=136899&oldid=136898 5* 03None1 5* (+49) 10 > 1724746973 907229 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=136900&oldid=136897 5* 03Ractangle 5* (-3) 10 > 1724747954 852145 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02JS-CODE10]] to [[Waretel BASIC]] > 1724747976 342805 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136903&oldid=136901 5* 03Ractangle 5* (+6) 10 > 1724748059 544513 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136904&oldid=136903 5* 03Ractangle 5* (+11) 10 > 1724748229 434562 PRIVMSG #esolangs :14[[07Talk:Disan Count Pesudocode14]]4 10 02https://esolangs.org/w/index.php?diff=136905&oldid=136864 5* 03Ractangle 5* (+1) 10None1 you forgot an another colon > 1724748293 886690 PRIVMSG #esolangs :14[[07Disan Count Pesudocode14]]4 10 02https://esolangs.org/w/index.php?diff=136906&oldid=136812 5* 03Ractangle 5* (+39) 10/* Disan Count */ > 1724748389 5691 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136907&oldid=136904 5* 03Ractangle 5* (-106) 10 > 1724748484 339854 PRIVMSG #esolangs :14[[07Translated JS/None114]]4 N10 02https://esolangs.org/w/index.php?oldid=136908 5* 03None1 5* (+2395) 10Created page with "Let's make [[Translated JS]] even worse! Take the semiproduct:
 Function evaluate () {int e=.Y `\n`;let o="",ln=y=p=C=p=C= + o,,V; ({p e) _con_ if ((! a + b)||p==[])continue;if(AV==0&&n=="==start testing " + a + y + "=="&& + St&&! (V={},P=C=p=a+! V))cont
> 1724749393 317178 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136909&oldid=136907 5* 03Ractangle 5* (+176) 10
> 1724749458 197554 PRIVMSG #esolangs :14[[073ME14]]4 10 02https://esolangs.org/w/index.php?diff=136910&oldid=136889 5* 03Unname4798 5* (-169) 10DON'T LINK MY USER PAGE AT ALL.
< 1724750080 154116 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User
> 1724750616 658760 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136911&oldid=136909 5* 03Ractangle 5* (+60) 10
< 1724751166 844981 :craigo!~craigo@user/craigo QUIT :Quit: Leaving
> 1724752869 693098 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136912&oldid=136911 5* 03Ractangle 5* (-9) 10
> 1724753011 514424 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136913&oldid=136912 5* 03Ractangle 5* (+4) 10/* Hello, world! */
> 1724753094 1199 PRIVMSG #esolangs :14[[07Hello world program in esoteric languages (T-Z)14]]4 10 02https://esolangs.org/w/index.php?diff=136914&oldid=136264 5* 03Ractangle 5* (+49) 10/* VTL */
< 1724753247 408574 :__monty__!~toonn@user/toonn JOIN #esolangs toonn :Unknown
< 1724753694 339542 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
< 1724755802 389365 :X-Scale!~X-Scale@31.22.144.239 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale
< 1724756141 364359 :X-Scale!~X-Scale@31.22.144.239 QUIT :Ping timeout: 256 seconds
< 1724758345 792136 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1724760161 648491 :mtm!~textual@c-71-228-84-213.hsd1.fl.comcast.net QUIT :Ping timeout: 244 seconds
< 1724760368 983462 :mtm!~textual@c-71-228-84-213.hsd1.fl.comcast.net JOIN #esolangs mtm :Textual User
< 1724760839 739516 :amby!~ambylastn@2a00:23c5:ce05:7801:1d3d:8c50:689b:f9df JOIN #esolangs amby :realname
< 1724761760 171864 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed
> 1724762120 231397 PRIVMSG #esolangs :14[[07Talk:Diexponae14]]4 N10 02https://esolangs.org/w/index.php?oldid=136915 5* 03Yayimhere 5* (+211) 10Created page with "this is... not a new computational class. just cuz it uses the quadratic formula doesn't mean its a new computational class ~~~~"
< 1724762310 318696 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
< 1724763124 155545 :bookworms!~bookworms@user/bookworms JOIN #esolangs bookworms :bookworms
< 1724763202 100525 :bookworms!~bookworms@user/bookworms QUIT :Max SendQ exceeded
< 1724763283 934261 :bookworms!~bookworms@user/bookworms JOIN #esolangs bookworms :bookworms
< 1724763748 318565 :wib_jonas91!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
< 1724763798 566129 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Killed (NickServ (GHOST command used by wib_jonas91))
< 1724763802 861250 :wib_jonas91!~wib_jonas@business-37-191-60-209.business.broadband.hu NICK :wib_jonas
< 1724764097 323680 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Ping timeout: 256 seconds
< 1724764303 258893 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User
< 1724764411 318902 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
> 1724764568 219030 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry10]] to [[User:]]
> 1724764568 272793 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/About Sandbox War10]] to [[User:/About Sandbox War]]
> 1724764568 302266 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/About more Categories10]] to [[User:/About more Categories]]
> 1724764568 326419 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/Discussion10]] to [[User:/Discussion]]
> 1724764568 346310 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/Sandbox10]] to [[User:/Sandbox]]
> 1724764568 365837 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/Sandbox/TEST10]] to [[User:/Sandbox/TEST]]
> 1724764568 381059 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/Sandbox/TEST210]] to [[User:/Sandbox/TEST2]]
> 1724764568 398139 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/Sandbox/There are some User are most contributions in this wiki.10]] to [[User:/Sandbox/There are some User are most contributions in this wiki.]]
> 1724764568 417608 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User:PrySigneToFry/w/talk/user/talk/language/language/sandbox/sandbox10]] to [[User:/w/talk/user/talk/language/language/sandbox/sandbox]]
> 1724764568 467571 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5*  10moved [[02User talk:PrySigneToFry10]] to [[User talk:]]
> 1724764587 344196 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:10]] to [[User:PrySigneToFry]] over redirect
> 1724764587 374349 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/About Sandbox War10]] to [[User:PrySigneToFry/About Sandbox War]] over redirect
> 1724764587 399248 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/About more Categories10]] to [[User:PrySigneToFry/About more Categories]] over redirect
> 1724764587 417994 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/Discussion10]] to [[User:PrySigneToFry/Discussion]] over redirect
> 1724764587 434186 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/Sandbox10]] to [[User:PrySigneToFry/Sandbox]] over redirect
> 1724764587 454741 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/Sandbox/TEST10]] to [[User:PrySigneToFry/Sandbox/TEST]] over redirect
> 1724764587 482064 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/Sandbox/TEST210]] to [[User:PrySigneToFry/Sandbox/TEST2]] over redirect
> 1724764587 499330 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/Sandbox/There are some User are most contributions in this wiki.10]] to [[User:PrySigneToFry/Sandbox/There are some User are most contributions in this wiki.]] over redirect
> 1724764587 532542 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User:/w/talk/user/talk/language/language/sandbox/sandbox10]] to [[User:PrySigneToFry/w/talk/user/talk/language/language/sandbox/sandbox]] over redirect
> 1724764587 579819 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move_redir10 02 5* 03Ractangle 5*  10moved [[02User talk:10]] to [[User talk:PrySigneToFry]] over redirect
> 1724764587 594036 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry10]] by overwriting: Deleted to make way for move from "[[User:]]"
> 1724764587 604525 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/About Sandbox War10]] by overwriting: Deleted to make way for move from "[[User:/About Sandbox War]]"
> 1724764587 615340 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/About more Categories10]] by overwriting: Deleted to make way for move from "[[User:/About more Categories]]"
> 1724764587 627403 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/Discussion10]] by overwriting: Deleted to make way for move from "[[User:/Discussion]]"
> 1724764587 638885 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/Sandbox10]] by overwriting: Deleted to make way for move from "[[User:/Sandbox]]"
> 1724764587 649655 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/Sandbox/TEST10]] by overwriting: Deleted to make way for move from "[[User:/Sandbox/TEST]]"
> 1724764587 658752 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/Sandbox/TEST210]] by overwriting: Deleted to make way for move from "[[User:/Sandbox/TEST2]]"
> 1724764587 680124 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/Sandbox/There are some User are most contributions in this wiki.10]] by overwriting: Deleted to make way for move from "[[User:/Sandbox/There are some User are most contributions in this wiki.]]"
> 1724764587 696553 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User:PrySigneToFry/w/talk/user/talk/language/language/sandbox/sandbox10]] by overwriting: Deleted to make way for move from "[[User:/w/talk/user/talk/language/language/sandbox/sandbox]]"
> 1724764587 707215 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete_redir10 02 5* 03Ractangle 5*  10Ractangle deleted redirect [[02User talk:PrySigneToFry10]] by overwriting: Deleted to make way for move from "[[User talk:]]"
> 1724765291 800451 PRIVMSG #esolangs :14[[07Waretel BASIC14]]4 10 02https://esolangs.org/w/index.php?diff=136956&oldid=136913 5* 03Ractangle 5* (+86) 10
< 1724765839 513699 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed
< 1724766003 128113 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
> 1724766643 6103 PRIVMSG #esolangs :14[[07Preface14]]4 N10 02https://esolangs.org/w/index.php?oldid=136957 5* 03Yayimhere 5* (+1060) 10Created page with "'''Preface''' is a esolang by [[User:Yayimhere]] because of a discord discussion about [[No-code esolang|No-code esolangs]].  == semantics == ignore program and take user input. the input will be the memory. the input is bounded to 256 chars but memory is unbounded. t
> 1724767149 50447 PRIVMSG #esolangs :14[[07Preface14]]4 10 02https://esolangs.org/w/index.php?diff=136958&oldid=136957 5* 03Yayimhere 5* (+1) 10
> 1724768629 792224 PRIVMSG #esolangs :14[[07Talk:Rozpach14]]4 N10 02https://esolangs.org/w/index.php?oldid=136959 5* 03Yayimhere 5* (+120) 10Created page with "is there a proof of it being TC? ~~~~"
< 1724769370 416495 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`? nitia
< 1724769373 538516 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :nitia is the inventor of all things. The BBC invented her.
> 1724770652 537517 PRIVMSG #esolangs :14[[07User:Yayimhere14]]4 10 02https://esolangs.org/w/index.php?diff=136960&oldid=136771 5* 03Yayimhere 5* (+14) 10
> 1724770740 86836 PRIVMSG #esolangs :14[[07Preface14]]4 10 02https://esolangs.org/w/index.php?diff=136961&oldid=136958 5* 03Yayimhere 5* (+93) 10
< 1724770746 380120 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User
> 1724770917 508939 PRIVMSG #esolangs :14[[07Esolang talk:Categorization14]]4 10 02https://esolangs.org/w/index.php?diff=136962&oldid=135229 5* 03Yayimhere 5* (+227) 10/* category:joke proofs */
> 1724771427 261537 PRIVMSG #esolangs :14[[07Nope14]]4 10 02https://esolangs.org/w/index.php?diff=136963&oldid=136692 5* 03Yayimhere 5* (+35) 10
< 1724772391 5027 :sprout!~sprout@84-80-106-227.fixed.kpn.net QUIT :Remote host closed the connection
< 1724772728 128361 :sprout!~sprout@84-80-106-227.fixed.kpn.net JOIN #esolangs * :sprout
< 1724773038 46687 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Well this island was a pain to get to (a monster's expedition; I don't think it's a spoiler since I've reset all the islands to a natural solved state) https://int-e.eu/~bf3/tmp/ame-tough-island.jpg
> 1724773079 754137 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User talk:10]]": redirect left behind after reverted move
> 1724773088 774350 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/w/talk/user/talk/language/language/sandbox/sandbox10]]": redirect left behind after reverted move
> 1724773097 724706 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/Sandbox/There are some User are most contributions in this wiki.10]]": redirect left behind after reverted move
> 1724773107 328829 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/Sandbox/TEST210]]": redirect left behind after reverted move
> 1724773115 356657 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/Sandbox/TEST10]]": redirect left behind after reverted move
> 1724773122 184550 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/Sandbox10]]": redirect left behind after reverted move
> 1724773129 307690 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/Discussion10]]": redirect left behind after reverted move
> 1724773137 288553 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/About more Categories10]]": redirect left behind after reverted move
> 1724773144 665564 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:/About Sandbox War10]]": redirect left behind after reverted move
> 1724773151 928244 PRIVMSG #esolangs :14[[07Special:Log/delete14]]4 delete10 02 5* 03Ais523 5*  10deleted "[[02User:10]]": redirect left behind after reverted move
< 1724776076 521560 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1724776779 575641 :Deepfriedice!~Deepfried@117-20-68-42.751444.bne.nbn.aussiebb.net QUIT :Ping timeout: 240 seconds
> 1724777090 163421 PRIVMSG #esolangs :14[[07Collab14]]4 10 02https://esolangs.org/w/index.php?diff=136964&oldid=136863 5* 03Qawtykit 5* (+558) 10added
> 1724778816 508994 PRIVMSG #esolangs :14[[07Talk:Diexponae14]]4 10 02https://esolangs.org/w/index.php?diff=136965&oldid=136915 5* 03BoundedBeans 5* (+451) 10
> 1724779388 878974 PRIVMSG #esolangs :14[[07Hyperheptefunge-9814]]4 10 02https://esolangs.org/w/index.php?diff=136966&oldid=136828 5* 03BoundedBeans 5* (-1) 10"thing"->"this"
< 1724779540 788099 :Deepfriedice!~Deepfried@117-20-68-42.751444.bne.nbn.aussiebb.net JOIN #esolangs Deepfriedice :realname
> 1724779768 309718 PRIVMSG #esolangs :14[[07Hyperheptefunge-9814]]4 10 02https://esolangs.org/w/index.php?diff=136967&oldid=136966 5* 03BoundedBeans 5* (+202) 10Make literal space followed by comments unambiguous
> 1724779945 996352 PRIVMSG #esolangs :14[[07Preface14]]4 M10 02https://esolangs.org/w/index.php?diff=136968&oldid=136961 5* 03PythonshellDebugwindow 5* (+23) 10Category
> 1724780105 820589 PRIVMSG #esolangs :14[[07Mihaieso esomixup14]]4 M10 02https://esolangs.org/w/index.php?diff=136969&oldid=136890 5* 03PythonshellDebugwindow 5* (+66) 10Categories
> 1724780151 631448 PRIVMSG #esolangs :14[[07Disan Count Pesudocode14]]4 M10 02https://esolangs.org/w/index.php?diff=136970&oldid=136906 5* 03PythonshellDebugwindow 5* (+50) 10Categories
> 1724780524 519811 PRIVMSG #esolangs :14[[07Special:Log/upload14]]4 upload10 02 5* 03ArsenicCatnip 5*  10uploaded "[[02File:Larry.png10]]"
> 1724780621 356977 PRIVMSG #esolangs :14[[07Larry14]]4 10 02https://esolangs.org/w/index.php?diff=136972&oldid=136668 5* 03ArsenicCatnip 5* (+25) 10Added picture of larry claaaaaaw
> 1724781306 448483 PRIVMSG #esolangs :14[[07Larry14]]4 10 02https://esolangs.org/w/index.php?diff=136973&oldid=136972 5* 03ArsenicCatnip 5* (+120) 10Added a link to a page about Larry Tesler
< 1724784291 107428 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User
< 1724784980 586720 :bookworms!~bookworms@user/bookworms QUIT :Quit: I give the F*%k up! Have a nice day!
< 1724789636 389289 :X-Scale!~X-Scale@83.223.250.33 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale
< 1724789665 690416 :craigo!~craigo@user/craigo JOIN #esolangs craigo :realname
< 1724789971 329318 :X-Scale!~X-Scale@83.223.250.33 QUIT :Ping timeout: 256 seconds
> 1724790638 46895 PRIVMSG #esolangs :14[[07Mihaieso esomixup14]]4 10 02https://esolangs.org/w/index.php?diff=136974&oldid=136969 5* 03Tommyaweosme 5* (-9) 10*coughs twice* forget the ____fuck?
> 1724790658 928024 PRIVMSG #esolangs :14[[07Mihaieso esomixup14]]4 M10 02https://esolangs.org/w/index.php?diff=136975&oldid=136974 5* 03Tommyaweosme 5* (+0) 10typo
> 1724791055 924881 PRIVMSG #esolangs :14[[07Command per command14]]4 N10 02https://esolangs.org/w/index.php?oldid=136976 5* 03Tommyaweosme 5* (+654) 10Created page with "{{lowercase}}command per command is an esolang designed to have the biggest possible self interpeter. == how it works == every program asks for input, and then every command after that is a marker for if that command is in the interpreter or not.  the co
> 1724791460 471328 PRIVMSG #esolangs :14[[07User talk:Page crapper from explain xkcd14]]4 N10 02https://esolangs.org/w/index.php?oldid=136977 5* 03Tommyaweosme 5* (+208) 10Created page with "omg are they gonna make a third one soon???? ~~~~"
< 1724792065 4204 :fowl!~fowl@user/fowl QUIT :Ping timeout: 260 seconds
> 1724792158 330125 PRIVMSG #esolangs :14[[07Blast protection14]]4 N10 02https://esolangs.org/w/index.php?oldid=136978 5* 03Tommyaweosme 5* (+993) 10Created page with "{{lowercase}}blast protection is an esolang based on obsidian and tnt. == blocks ==  o obsidian  r red tnt  b blue tnt  w wooden planks  c cobblestone  d dirt  g glass  # bedrock  % glitch block the tnt blows up to the right always == how the blocks interac
> 1724792248 727749 PRIVMSG #esolangs :14[[07User:Tommyaweosme14]]4 10 02https://esolangs.org/w/index.php?diff=136979&oldid=136405 5* 03Tommyaweosme 5* (-1812) 10Replaced content with "== minecraft enchantment saga == * [[dolfins grace]] * [[blast protection]] * [[fire resistance]]"
> 1724792271 845329 PRIVMSG #esolangs :14[[07Fire resistance14]]4 N10 02https://esolangs.org/w/index.php?oldid=136980 5* 03Tommyaweosme 5* (+84) 10Created page with "this esolang is scheduled to release to the public on august 29th!  see you then! :D"
> 1724792284 912682 PRIVMSG #esolangs :14[[07Fire resistance14]]4 10 02https://esolangs.org/w/index.php?diff=136981&oldid=136980 5* 03Tommyaweosme 5* (+14) 10
> 1724792575 725655 PRIVMSG #esolangs :14[[07User talk:MihaiEso14]]4 10 02https://esolangs.org/w/index.php?diff=136982&oldid=136858 5* 03Tommyaweosme 5* (+187) 10/* Mihai is unbanned! */
< 1724792805 898789 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
> 1724792965 432549 PRIVMSG #esolangs :14[[07User:Tommyaweosme/simpler playlist14]]4 N10 02https://esolangs.org/w/index.php?oldid=136983 5* 03Tommyaweosme 5* (+339) 10Created page with "simpler playlist (.smpl) is [[user:mihaieso]]'s simple playlist but simpler == all it is == all it is is just a list of song files. thats it. none of that comment shit or this metadata crap. just songs. == example ==  When-I-Met-You-in-The
> 1724792975 883113 PRIVMSG #esolangs :14[[07User:Tommyaweosme/simpler playlist14]]4 10 02https://esolangs.org/w/index.php?diff=136984&oldid=136983 5* 03Tommyaweosme 5* (+14) 10
> 1724793713 463036 PRIVMSG #esolangs :14[[07Fire resistance14]]4 M10 02https://esolangs.org/w/index.php?diff=136985&oldid=136981 5* 03PythonshellDebugwindow 5* (+33) 10Stub, category
< 1724796150 937628 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: in "http://ais523.me.uk/blog/scoped-generics.html" I think "improvved" is a typo and you wanted to write "improved" instead
< 1724796199 859930 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name)
< 1724796208 154744 :Deepfriedice!~Deepfried@117-20-68-42.751444.bne.nbn.aussiebb.net QUIT :Remote host closed the connection
< 1724796230 124323 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I suspect that too; "improvved" is actually a real word but I don't remember intending to use it while writing that blog post
< 1724796302 933829 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fortunately, I recently updated my blog software to the extent that I could actually fix posts after posting them
< 1724796305 962760 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so, the typo should be gone now
< 1724796328 814100 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: my question is, would this allow you write something like { let const b: (i32, i32) = (4, 5); let x: SparseBigInt = Default::default(); let y: SparseBigInt = Default::default(); } ?
< 1724796355 710365 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :not the way that I've currently designed it, although that seems like a reasonable extension
< 1724796703 942254 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :These scoped generics sounds like an interesting idea. I'm not entirely convinced that the mut reference part works, but it's probably worth to try to find out if it works and why not if it doesn't.
< 1724796949 920240 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :The other obvious question is that you don't mention in this blog entry is, how do languages like Haskell solve the kind of problem for which you need the full scoped generics in rust?
< 1724797508 633774 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't know enough Haskell to answer that, but it's an interesting question
< 1724797547 877181 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :this kind of problem comes up in other languages too where the type system is complicated enough that you want to prove consistency stuff like this
< 1724797563 277573 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and haskell does have ST that uses the unique lifetime magic part somehow
< 1724797613 56772 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and it has these question mark variable thingies too that might be relevant, but I also don't really know how they work
< 1724797692 260159 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I would be astonished if I'd somehow managed to come up with a type theory idea that didn't already exist as a Haskell extension :-D
< 1724797804 489075 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :hehe
< 1724798209 188221 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I'd also like to know about this extra magic where you can impl a trait on a type that depends on an extra scoped generic. I wonder if it has extra restrictions on when you can or cannot impl a trait this way.
< 1724798297 207123 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and what restrictions there are on using such a trait.
< 1724798319 633124 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :such an impl
< 1724798434 960378 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca QUIT :Ping timeout: 260 seconds
< 1724798771 330818 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :logically there shouldn't be
< 1724798797 559589 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :unless I'm missing something
< 1724798962 666529 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname
< 1724799242 456706 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :my problem here is that the example that you give is that if you impl Drop for a type with a scoped generic parameter then whenever your code wants to call the destructor of this object it'll know that it's still in the lifetime of that generic parameter and has access to the value associated with that scoped generic argument. even if that does work, this is a very bad example because Drop is a really 
< 1724799248 464706 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :restricted special trait: you won't find an unrelated crate that defines a generic fn foo(x: &mut T) where you have to figure out how to compile a call to this function, because Drop is never used as a generic bound like that. you'll need to show examples where the function may be used as a trait bound, and the argument might not be covariant on the lifetime of the scoped generic, etc.
< 1724799838 751407 :sprout!~sprout@84-80-106-227.fixed.kpn.net PRIVMSG #esolangs :ACTION remembers chat that Haskell can sidestep many issues in type theory by having invariant types on non-mutable data
< 1724799853 242594 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :If you take that example where your scoped generic value is a &mut Vec that lives for only as long as the scope, and you define a struct generic over this that stores an index into that vec, then can you just implement a Deref on it that borrows an element of the vector, and similarly DerefMut, and then just call a generic function from another create that takes such an index and borrows or mut borrows 
< 1724799859 251961 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it, or takes a mut ref to such an index and tries to allocate a new one (through a separate allocation trait)
< 1724799937 842058 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you can but there is a rule that you can't use other generics while borrowing a mutable-reference scoped generic
< 1724799964 582382 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so at any time you are actively accessing the mutable reference, you have no way to access a second copy of it
< 1724799978 186806 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :("other generics" here includes type generics in addition to scoped generics)
< 1724799978 593814 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and when you compile that, will the vtable pointer point to a vtable on the stack that contains the vector in a fixed position such that the methods can access that vector?
< 1724800009 302288 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :what vtable
< 1724800025 969153 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I said in my article that I don't know whether or not this works with trait objects
< 1724800034 651660 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and I don't think anything else has a vtable?
< 1724800101 678620 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :if another create has a generic fn foo(...), then when you compile a call to this from yoru crate, you have to pass a hidden argument that represents impl Deref for T, so that foo can call methods from that one. that hidden argument is what I call a vtable.
< 1724800109 754855 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :there's no dyn Trait objects involved here
< 1724800145 505662 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :normally the hidden argument that you pass is a constant, there's only one for each concrete type if you discount lifetime parameters in it
< 1724800157 168434 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I thought it just got monomorphised at compile time
< 1724800178 558344 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :hmm
< 1724800237 19313 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :maybe
< 1724800292 420562 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yeah, I guess it needs to do that
< 1724800342 421906 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :so then the resulting function would take a mut reference to that vector as an extra argument in this case
< 1724800438 828627 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right
< 1724801865 968802 :bookworms!~bookworms@user/bookworms JOIN #esolangs bookworms :bookworms
< 1724802207 560353 :__monty__!~toonn@user/toonn QUIT :Quit: leaving