< 1730678710 18815 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :imagine being the first programming language to provide signal-safety while still having fully-featured signal handling < 1730678720 93342 :Thelie!~Thelie@2a0a-a543-6c1d-0-5217-e5e2-16c8-3101.ipv6dyn.netcologne.de QUIT :Quit: Leaving. < 1730678731 354605 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(and being a pain to use, but we digress) < 1730678960 478110 :X-Scale!~X-Scale@89.214.116.231 QUIT :Quit: Client closed < 1730678965 28477 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I don't want to handle signals. I want to politely ignore their existence. < 1730678984 449813 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Or, if I have an event loop, then I want signals to politely wait their turn. < 1730679498 416529 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :oh okay so you're not into challenges, got it < 1730679575 441742 :X-Scale!~X-Scale@89.214.116.231 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730680137 74263 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Indeed, I think that secure distributed computing should not be difficult. As a special case, I think that single-user single-machine computing should not be difficult. < 1730680191 201477 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net 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 < 1730680573 359639 :X-Scale!~X-Scale@89.214.116.231 QUIT :Ping timeout: 256 seconds < 1730680704 195213 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :why not make signal handling secure? < 1730681041 739620 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I realised a while back that asynchronous signals are, in effect, a form of user input < 1730681094 742690 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which is why handling them in the event loop makes sense < 1730681117 824102 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Soni: Signals create "stale stack frames", so to speak; they interrupt a computation in a way that leaves cleanup unspecified. < 1730681122 808929 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I can see potential exceptions for things like lease breaks in noninteractive code, though < 1730681142 820173 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :korvo: stack frames aren't real < 1730681168 765664 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :it's all global state < 1730681175 979130 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :like, say you're reading and processing a really large file, and then the OS tells you that some process is about to change the file while you're reading it, and if you don't stop reading it in 2 seconds you will get undefined behaviour < 1730681176 18786 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Soni: How is an object supposed to preserve internal invariants if it can be interrupted at any moment and possibly never restored? < 1730681218 762280 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I can see wanting to handle that without a full event loop < 1730681237 79237 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :korvo: there's an easy answer to that actually! how do you pre-poop your pants? < 1730681291 179073 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : Soni: How is an object supposed to preserve internal invariants if it can be interrupted at any moment and possibly never restored? ← clearly by using only atomic changes < 1730681293 319919 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :you could make said object completely inaccessible ("leaking is safe") < 1730681355 699174 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah yes, "anything that is interrupted leaks" can also be a reasonable way to make things work sometimes, although if that rule is applied too blindly you end up leaking the entire computer < 1730681363 979194 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which is safe but not particularly useful, or even particularly easy to define < 1730681373 123280 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(and you should. the allocator? yeah, can't touch that anymore. you're welcome!) < 1730681413 967312 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I know that event loops just came up, but we're not talking about politely pausing computation on an isolated actor and synchronizing its state using some sort of global orthogonal persistence. We were talking about UNIX-style signals. < 1730681446 211746 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: asynchronous UNIX-style signals can and should be handled in an event loop as long as you can make sure it runs often enough < 1730681449 378575 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :how do processes manage preempting-safety < 1730681471 286408 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yes, that's the right answer. < 1730681510 269217 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :But at that point they're not signals, but some sort of magic FD or magic syscall. < 1730681511 314506 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :okay, give us an event loop that can handle SIGSEGV :v < 1730681530 849231 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the main exception is for noninteractive processes, where the correct behaviour is a little harder to define – you may need a "signal pump" specifically for interacting with signals, when the program doesn't take input normally < 1730681536 929596 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Soni: SIGSEGV is a synchronous signal < 1730681555 49048 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :normally, at least (it is possible to send a process a synthetic SIGSEGV but doing so is very rare) < 1730681561 117703 :int-e!~noone@int-e.eu PRIVMSG #esolangs :and not one that you'd ordinarily handle < 1730681578 117072 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :SIGSEGV is the main reason to use signals < 1730681580 778705 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: handling synchronous SIGSEGV isn't a totally weird thing to do, there are libraries for it < 1730681591 66063 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :e.g. https://www.gnu.org/software/libsigsegv/ < 1730681607 916700 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ACTION finds it ironic that the person who wants to eliminate globals is now asking to tackle a mechanism that's objectively worse cleanly. < 1730681612 468855 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but at that point, it is happening in known locations of your code so it doesn't act at all like an asynchronous signal any more, just a weird sort of if statmenet < 1730681626 960051 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Event loops really should be run on top of GC, but I can imagine wanting to handle them in the underlying runtime, and this sort of library < 1730681646 359403 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :most high-performance language VMs use it < 1730681648 472925 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: I still think it's not something you'd usually do. < 1730681649 211728 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: what do you mean by "on top of" here? < 1730681672 716954 :int-e!~noone@int-e.eu PRIVMSG #esolangs :But maybe I'm naive to think that. < 1730681714 89340 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: it's not something I'd normally do because I prefer the technique of allocating huge amounts of address space, in such a way that the physical memory backing it is allocated lazily < 1730681722 612122 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(luajit, JVM, V8, wasm2c, ...) < 1730681723 971458 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that way there are fewer calls into the kernel < 1730681735 692041 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I'm not sure how many OSes support that < 1730681780 668245 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :int-e: sometimes we shouldn't ask if we should, but if we can. and we think we can.] < 1730681782 22632 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Like, the actual message-handling actions should not have to do any manual allocation. Google's Native Client is a good historic example of how it just can't be made secure. < 1730681787 697090 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Soni: VMs aren't your usual application code. < 1730681790 438758 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is very useful to have some way to allocate memory lazily, though, and making use of the page fault if you access a paged-out page of memory is one of the better ways to do it < 1730681827 979195 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: are you talking about allocating memory in signal handlers? < 1730681840 155858 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :int-e: unless you're in #esolangs :p < 1730681852 139034 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that was a huge problem for me in NH4 – malloc traditionally doesn't work in signal handlers and it took a while to figure out how to work around the issue < 1730681864 265695 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Eh I'd rather piggy-back on an existing VM than write my own. YMMV. < 1730681876 531442 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Huh, effectively, I guess yeah. I wasn't thinking of it that way. < 1730681906 618915 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm pretty sure that it is possible to write an async-signal-safe malloc, at least in some programming languages (I think it might not be possible in Rust, though) < 1730681917 539013 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(at least, not without inline asm) < 1730681972 968118 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :ais523: we don't want it < 1730681987 461649 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :who's "we"? < 1730681995 161954 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I want an async-signal-safe malloc, at least < 1730682011 355348 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Soni's pluralizing themselves all the time. < 1730682028 139054 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah, I see < 1730682034 426082 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :we want this more than anything https://docs.rs/stdworld/0.1.1/src/std/lib.rs.html#1-156 < 1730682065 696432 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :because why should a signal handler be able to use the allocator when the allocator isn't signal-safe < 1730682157 3832 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :why solve a problem when you can just avoid it instead < 1730682159 8460 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this is easily fixed using capabilities, I think? being able to allocate memory is a type of capability < 1730682169 538675 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you can make it available to most code, but not to signal handlers < 1730682188 620795 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :being able to allocate memory implies access to a &mut GlobalAllocator < 1730682220 891336 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :just gotta tie that &mut to regular code and forbid it from crossing into a signal handler < 1730682230 368725 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the GlobalAllocator object is a type of capability, in that ase < 1730682231 855618 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* case < 1730682238 489259 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(just like Send and Sync prevent crossing into threads) < 1730682246 671738 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :code that has it can allocate, code that doesn't have it can't < 1730682260 244019 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :yeah < 1730682276 28552 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :and unsafe code can make their own :v < 1730682294 350459 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :but why stop at allocators < 1730682312 611864 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you don't, of course < 1730682325 136152 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :what happens if we move the entire global context and state into an object you carry around and pass into stuff < 1730682341 418932 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Soni: I've been meaning to write a blog post on how to make doing that ergonomic < 1730682342 13532 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :that is to say, what if global state were a type(state) < 1730682378 58938 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is clearly an improvement, if you can find good syntax for it < 1730682397 392246 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :*nod* < 1730682402 892103 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's not just global *state*, though, also things like global permissions < 1730682409 223981 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :how do you find good syntax for it without experimenting with it < 1730682411 667235 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :"ability to send messages to the printer", for example < 1730682418 86812 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :eh < 1730682424 497190 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :we don't need permissions < 1730682426 421789 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this is not a state, it contains no bits of information < 1730682435 958612 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it is something that should be guarded the same way < 1730682456 711530 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :especially because sometimes these things can't be done re-entrantly < 1730682458 655473 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :did you read the comments in stdworld? < 1730682465 378680 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I skimmed some of htem < 1730682482 809098 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it seems like it's still in its early stages < 1730682504 988291 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :is this useful extra context? https://users.rust-lang.org/t/new-signal-safe-std-replacement-looking-for-contributors-to-help-reimplement-all-of-std/117063 < 1730682562 943284 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(also yes we propose just making implicit) < 1730682607 566982 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Indeed, thinking of the computer as a robot, all of the ways that the CPU can signal the robot to act in the outside world are each their own capability. Discovering and wrapping these is known as *taming*. < 1730682616 729096 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, I think it is important that global state and permissions and capabilities are all managed by a system like this – it is pointless reimplementing all of std to just get working unloading and signal-safety, when capability-safety is probably more important in practice and also requires implementing all of std < 1730682658 241820 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have considered going further, making things like loops that can't be proven finite require a capability to do < 1730682665 773829 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I think that permissions and capabilities should be handled by the operating system, though < 1730682666 676831 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :if we have this we effectively have capabilities, even if we don't use them ourselves < 1730682670 538479 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although you can't do that within most existing langauges < 1730682684 742222 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :ah yes solving the halting problem lol < 1730682697 632116 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :"can't be proven finite" doesn't require solving the halting problem < 1730682711 514355 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, well, I meant "haven't been proven finite", you don't have to prove that there's no proof < 1730682747 545343 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :we don't wanna go anywhere near halting problem stuff tbh < 1730682788 474434 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :zzo38: They are, kind of. In seL4, allocators and arenas are OS-managed handles, like file descriptors. It's something the OS has to be built around, though. < 1730682798 338861 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the problem with what you're doing is that you have a project that a) will take a lot of work to complete and b) has a precisely limited scope that makes it useful only for a few applications and not for otheres < 1730682809 986014 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Soni: have you tried woodcarving < 1730682811 464554 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I hear Fuschia is cool, although I didn't take it seriously due to the Googliness. < 1730682822 699191 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it would be a more useful project if the scope were larger, especially given how much work it would take, because it would then be useful to more peopel < 1730682838 786290 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :the useful thing about worlds is preventing mistakes, while everyone who says the word capabilities is thinking about control < 1730682841 301853 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: I feel like permissions and capabilities kind-of need the programming language and OS to cooperate < 1730682870 886262 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :capabilities can also prevent mistakes (e.g. simultaneous overwrites of the same file) < 1730682893 242273 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but they're also very useful when, e.g. using untrusted dependencies < 1730682897 544669 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I think that the OS has to be built around, yes. And, I had some idea of making such operating system, and all I/O uses a "capability" object. < 1730682900 370492 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :also that it'll push you to artificially limit some loops to 2**128 iterations long instead of potentially infinite, so that you have a proof that they're finite < 1730682901 849368 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :unsafe code can make their own worlds < 1730682904 822310 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that could be untrusted in the sense of "I think this might do something malicious", and you use the capabilities to sandbox it < 1730682913 795970 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Soni: The computer doesn't know what a mistake is. It can't make that sort of moral judgement computationally. < 1730682920 369063 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it could also be untrusted in the sense of "I think this might be buggy", and you use the capabilities to limit the damage if it is < 1730682924 450102 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I had seen some stuff about Fuschia. I do not agree with all of the design, but a few of my ideas are similar < 1730682925 41904 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(and we make a point of supporting that) < 1730682958 497272 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :zzo38: Have you seen Capsicum? It's supported on one of the BSDs still, I think. All I/O happens through FDs and a single syscall. < 1730682961 418723 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: yes; I'm aware of the problem and suspect it's fixable but I don't yet know how < 1730682986 30438 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I had seen Capsicum too. < 1730683035 133751 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :we're here trying to fix the hexchat-plugin crate and nobody cares, everyone thinks we should just leave it unsound forever < 1730683039 165327 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I mean sometimes that's a good thing, though for smaller numbers. sometimes I deliberately put a limit, much smaller than 2**128, that I think the loop shouldn't reach, to catch infinite loop bugs earlier < 1730683080 846928 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :meh < 1730683080 937624 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, my view of things is a) the type system in statically typed programming languages is a really good way to model capabilities/permissions and ensure that mistakes in using them are caught at compile-time; b) the OS generally doesn't have a way to confirm that programs perform only operations allowed by a language type system, so it needs to redo the checks itself in such a way that it could catch a program doing malicious things outside the bounds of < 1730683082 331754 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the language it's allegedly written in < 1730683084 458231 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :My idea involves that messages consists of bytes and/or capabilities, and a program receives an initial message when it starts; a program that discards all of its capabilities will terminate (a program that waits for any single capability from an empty set also terminates, and is the usual way to do so) < 1730683097 46454 :int-e!~noone@int-e.eu PRIVMSG #esolangs :b_jonas: there's work on tracking resource bounds in types but I'm not sure any of that is practical. < 1730683109 578772 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: I did a PhD on this stuff < 1730683124 978858 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but mostly it was proving that the standard approach for doing it couldn't possibly work < 1730683142 745475 :int-e!~noone@int-e.eu PRIVMSG #esolangs :neat < 1730683146 242749 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :we wanna move on, this topic is too frustrating < 1730683150 365937 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Soni: No worries. It's easy to get overwhelmed with personal infrastructure when also trying to build big libraries for everybody else. Take it slow; there's no rush. < 1730683197 227270 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :not exactly a programming language but still cursed: do you know the difference between editing text in bash, writing a text editor in bash, and turning bash into a text editor? < 1730683197 574114 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :A program can also create its own capabilities (proxy capabilities), and programs cannot tell the difference of a proxy capability from any other one. Furthermore, such things as date/time and random numbers is also considered to be I/O, therefore programs can be made deterministic. < 1730683200 726821 :int-e!~noone@int-e.eu PRIVMSG #esolangs :most of what I've seen is struggling to establish bounds for small things... like sorting algorithms, up to relatively simple Okasaki style amortized cost things. < 1730683230 218852 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: I agree that something like that would be beneficial – I don't know whether or not you have the details right, but the general approach is fine < 1730683265 874758 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :ais523: Yes, that is a valid point, some of the details might be better to do differently; they are completely decided yet < 1730683288 994115 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :zzo38: Yes! And that's why actors end up getting reinvented; capabilities are essentially endpoints where messages are delivered, and also where messages are emitted, with some sort of partial order s.t. no observers disagree about ordering. < 1730683311 509174 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :actually, it strike me that in all the discussions about operating systems we've had over the years in #esolangs / (and previously #esoteric) < 1730683319 249270 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I have read about actor systems as well, and my idea is also similar than that too < 1730683322 701686 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :all the ideas I can remember are consistent with each other and look towards a similar approach for implementing it < 1730683336 977231 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :And yeah, you have to tame the system's ambient authority, including timers and entropy. Nix does this too, as do some other build systems. < 1730683366 58717 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this is quite amazing, given what the channel is about, and especially given that OSes typically *don't* work like that < 1730683374 815608 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :sigh we're gonna get dragged back into this < 1730683382 84126 :int-e!~noone@int-e.eu PRIVMSG #esolangs :. o O ( shouldn't they be called re-actors ) < 1730683384 138581 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's like everyone has independently decided "this approach is better" < 1730683387 965134 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :how do you use capabilities on a bare metal microcontroller in asm < 1730683408 561735 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, those don't have an OS < 1730683415 853615 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :yes < 1730683430 811155 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :so? < 1730683432 348721 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but the answer is probably "they exist in the language you're compiing into the asm from, and the compiler ensures there are no incorrect uses of capabilities" < 1730683435 376991 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I should go look for an seL4/Genode hardware compatibility list. I have a couple old Raspberry Pis... < 1730683443 119442 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :no no, in asm < 1730683443 169768 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so that if the compiler is correct, you know the program doesn't have capability violations < 1730683463 551608 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Soni: Machine code usually *isn't* capability-safe. < 1730683467 878600 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :what do you mean by "use capabilities" here < 1730683471 990740 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :machine code isn't asm < 1730683477 469170 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :My idea would be that it would also define how the system call interface in the machine code is working in each computer type, so you can use them in assembly language as well, and it will be capability-safe too < 1730683493 812287 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, statically typed asm should in theory be possible, you could add ZSTs to that < 1730683511 491672 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, lots of it would compile down to nothing and you wouldn't be able to see it upon disassembling the machien code < 1730683525 482004 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :However, the portable API would be defined mainly for C, and for the "Command, Automation, and Query Language" as well < 1730683543 177757 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :yes the entire point of typed asm is that it erases the types when assembling < 1730683561 432493 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :but it can still check constraints and other stuff < 1730683569 526360 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :invariants and whatnot < 1730683575 520786 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :There is a history of capability-safe machines. AIUI the oldest is the Burroughs B5000: https://en.wikipedia.org/wiki/Burroughs_Large_Systems < 1730683590 565541 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Yes, I suppose you could make static typed assembly but some things you might want to do in assembly language you might not always want it < 1730683607 549225 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :x86-64 has different commands to operate on SSE registers as floats and as integers, which is notable because it has different commands even when you're performing an operation like a copy that works the same way on both data types < 1730683609 170058 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :not with that attitude < 1730683612 657779 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :These basically embed file-descriptor indirections ("capability tables" or "cap tables" in cap lore) into the CPU's way of looking at memory. The CPU can tell whether you're allowed to do what you're trying to do. < 1730683631 8770 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and apparently, some processors have a slowdown if you use an integer operation on a register that was most recently read/written as a float, or vice versa < 1730683647 603554 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :why can't types be aware of such things as self-modifying code? < 1730683654 256836 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Today, look for CHERI for examples of this. Also The Mill would have similar tables, but complicated. < 1730683666 538852 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :self-modifying code doesn't work very well on modern processors < 1730683676 18707 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :they like to read ahead a long way and run lots of pieces of code in parallel < 1730683682 235067 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I think there is a program in uxn for doing something similar than static typed assembly, although I do not use it (and even if you do use it, you can use square brackets to suppress warnings about such things) < 1730683689 751850 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if code self-modifies, then either they ignore the modification or they have to discard a lot of work to incorporate the modification < 1730683693 882267 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :we're not talking about modern processors < 1730683725 379969 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :well you'd still want unsafe blocks probably, like in rust < 1730683757 579337 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(unsafe blocks in an assembler...) < 1730683769 236421 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I would also have that the kernel doesn't have "typed capabilities", although the rest of the system implements such things as typed capabilities. < 1730683784 139063 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: on the subject of loop limits, it may be possible to use run time as a way to prevent variables overflowing < 1730683799 1281 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :ais523: It's even odder than that -- Packed 32-bit integer and 64-bit integer xor are different instructions, I think. < 1730683804 98757 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :say you have 64-bit reference counts, and they are only ever increased and decreased by small integers < 1730683830 982353 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now a reference count cannot overflow, you cannot run 2**64/(small integer) incref instructions to overflow it, the program does not run for that long < 1730683839 888761 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so you can optimise out the overflow checks < 1730683860 441953 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :`asm vpxord %ymm0, %ymm1, %ymm2 < 1730683862 78308 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f1 75 28 ef d0 vpxord %ymm0,%ymm1,%ymm2 < 1730683865 961805 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :`asm vpxorq %ymm0, %ymm1, %ymm2 < 1730683867 316770 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f1 f5 28 ef d0 vpxorq %ymm0,%ymm1,%ymm2 < 1730683901 107149 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Is that just because the instruction encoding is regular, or is there a reason to stick with the same number of lanes across operations or something? < 1730683919 89288 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :shachaf: a quick check of the docs implies that this only happens with AVX512 encodings specifically < 1730683923 809161 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which makes it probably a case of regular encoding < 1730683940 198789 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxor %ymm0, %ymm1, %ymm2 < 1730683941 642325 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c5 f5 ef d0 vpxor %ymm0,%ymm1,%ymm2 < 1730683972 618701 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, no, the operations are acutally different < 1730683980 897072 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I had not used modern x86-64 assembly language, although I had examined the assembly code output from compilers < 1730683981 981782 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :AVX512 supports masks to operate only on a subset of the inputs < 1730683991 71923 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, well, to only write a subset of the values to the output register < 1730684003 68122 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Ah, interesting, these packed 32-bit/64-bit xor instructions are AVX512. < 1730684010 318928 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the D versus Q would affect the meaning of the mask, even though it doesn't affect the meaning of the XOR < 1730684033 201769 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord {k1} %ymm0, %ymm1, %ymm2 < 1730684034 561252 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: invalid char '{' beginning operand 1 `{k1} %ymm0' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk `} %ymm0' after expression < 1730684044 78750 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord %ymm0, {k1} %ymm1, %ymm2 < 1730684045 497243 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: invalid char '{' beginning operand 2 `{k1} %ymm1' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk `} %ymm1' after expression < 1730684049 268351 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord %ymm0 {k1}, %ymm1, %ymm2 < 1730684050 560394 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f1 75 29 ef c2 vpxord ymm0{k1},ymm1,ymm2 < 1730684053 618686 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there we go < 1730684066 189108 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so the meaning of k1 is affected by the d < 1730684068 249774 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Hmm, fair enough. < 1730684087 741931 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :It's still kind of funny that the unmasked instructions are different. < 1730684118 527452 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I haven't looked at the AVX512 encodings very closely. Maybe the unmasked instructions are just a special case of the masked instructions or something, so this happens naturally. < 1730684125 529057 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, but given how there are 15 times as many masked as unmasked variants, it doesn't really make sense to remove one of the unmasked versions, it'd hardly save any encoding space < 1730684175 246615 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Why 15 times? Is it 15 mask registers or something, and unmasked is just encoded as another mask register? < 1730684201 502298 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, no, I misremembered, it is 8 < 1730684208 402619 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I thought there were 16, one of which indicated unmasked < 1730684238 946694 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : Note that from this set of 8 architectural registers, only k1 through k7 can be addressed as predicate oper- ands. k0 can be used as a regular source or destination but cannot be encoded as a predicate operand. < 1730684289 12048 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so there are 8, in theory, but only 7 of them can be encoded into an instruction whose purpose is anything other than manipulating mask registers < 1730684303 896311 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Hmm, interesting. < 1730684332 447409 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :If you actually want fast unmasked xor on AVX512, you'd use vpternlog. < 1730684403 483932 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Well, if you're xoring more than two things, which is presumably pretty common. < 1730684414 118957 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord %ymm0 {k1}, %ymm1, %ymm2 < 1730684415 684584 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f1 75 29 ef c2 vpxord ymm0{k1},ymm1,ymm2 < 1730684418 48716 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord %ymm0 {k0}, %ymm1, %ymm2 < 1730684419 465388 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: unknown vector operation: `{k0}' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: `%k0' can't be used for write mask < 1730684435 178912 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord %ymm0 {k1}{z}, %ymm1, %ymm2 < 1730684436 784857 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f1 75 a9 ef c2 vpxord ymm0{k1}{z},ymm1,ymm2 < 1730684457 269396 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I still haven't found the part of the documentation which says that 000 encodes no mask < 1730684486 378655 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm .byte 0x62,0xf1,0x75,0x28,0xef,0xd2 < 1730684487 715559 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f1 75 28 ef d2 vpxord %ymm2,%ymm1,%ymm2 < 1730684505 961857 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :`asm vpternlogd $0x96, %ymm0, %ymm1, %ymm2 < 1730684507 260688 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f3 75 28 25 d0 96 vpternlogd $0x96,%ymm0,%ymm1,%ymm2 < 1730684513 112436 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord %ymm0, %ymm1, %ymm2{k0} < 1730684514 357055 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: unknown vector operation: `{k0}' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: `%k0' can't be used for write mask < 1730684517 420823 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpxord %ymm0, %ymm1, %ymm2{k1} < 1730684518 572843 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: unknown vector operation: `{k1}' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: mask not on destination operand for `vpxord' < 1730684539 988468 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I hate how long these instructions are < 1730684570 203741 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I've only written a small amount of AVX512 code. I didn't use the masking at all there. < 1730684576 7061 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`asm .byte 0x62,0xf1,0x75,0xa8,0xef,0xd2 < 1730684577 268669 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f1 75 a8 ef d2 vpxord %ymm2,%ymm1,%ymm2{z} < 1730684641 374470 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :`asm vgf2p8affineqb $0, %zmm0, %zmm1, %zmm2 # the other great instruction in AVX512 < 1730684643 229104 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 62 f3 f5 48 ce d0 00 vgf2p8affineqb $0x0,%zmm0,%zmm1,%zmm2 < 1730684649 461389 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :termlog and gf2p8affineqb are where it's at. < 1730684674 549310 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I use Intel syntax when writing SSEish/AVXish code, because with AT&T syntax I find it too hard to figure out which order the arguments are supposed to be in < 1730684682 269910 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I agree. < 1730684695 771380 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I'm used to AT&T syntax but I think I should just switch to Intel syntax everywhere for this reason. < 1730684712 551762 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I do like the % signs on registers to stop them clashing with variables, though < 1730684724 634285 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if someone adds a new register that has the same name as a variable you're using… < 1730684727 601422 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Or maybe I should switch to ARM or RISC-V syntaxes. < 1730684747 878814 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but people get angry with me when I use Intel argument order with % on registers, even though gas supports it < 1730684772 168684 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`asm vpxord %ymm2,%ymm1,%ymm2{z} < 1730684773 450205 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: zeroing-masking only allowed with write mask \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: zeroing-masking only allowed with write mask < 1730684779 348752 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ah. cool. < 1730684837 419092 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :PCLMULQDQ is a fun instruction, that I may even have used as VPCLMULQDQ < 1730684844 292294 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am not quite sure why it has an SSE encoding, I think it's newer than SSE is < 1730684863 288461 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(But what happens if you execute that 0x62,0xf1,0x75,0xa8,0xef,0xd2 on real hardware? Will it fault or execute as an unmasked vpxord? < 1730684883 148762 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpclmullqlqdq %xmm1, %xmm2 < 1730684885 490209 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: number of operands mismatch for `vpclmullqlqdq' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: number of operands mismatch for `vpclmullqlqdq' < 1730684896 752432 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpclmullqlqdq %xmm1, %xmm2, %xmm3 < 1730684898 695443 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e3 69 44 d9 00 vpclmullqlqdq %xmm1,%xmm2,%xmm3 < 1730684959 179035 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpclmullqlqdq %zmm1, %zmm2, %zmm3 < 1730684960 584950 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `vpclmullqlqdq' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `vpclmullqlqdq' < 1730684972 771896 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpclmullqlqdq %ymm1, %ymm2, %ymm3 < 1730684974 26183 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `vpclmullqlqdq' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `vpclmullqlqdq' < 1730685008 790337 :int-e!~noone@int-e.eu PRIVMSG #esolangs :how does that mnemonic work... low quad, low quad, double quad. < 1730685009 252025 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :huh, that should be encodeable with ymm registers < 1730685012 618669 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: right < 1730685037 830006 :int-e!~noone@int-e.eu PRIVMSG #esolangs :sorry, I have this habit of starting a question... and then looking up the answer and reporting it along with it :P < 1730685041 149072 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is an abbreviation/shortcut mnemonic which is somehow harder to remember and longer than the instruction it abbreviates < 1730685056 508795 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpclmulqdq %xmm1, %xmm2, %xmm3, 0x00 < 1730685058 157165 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e3 69 44 cb 00 vpclmullqlqdq xmm1,xmm2,xmm3 < 1730685099 550971 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`asm vpclmulqdq %xmm1, %xmm2, %xmm3, 0x11 < 1730685101 21331 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e3 69 44 cb 11 vpclmulhqhqdq xmm1,xmm2,xmm3 < 1730685135 858329 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm vpclmulqdq %xmm1, %xmm2, %xmm3, 0x23 < 1730685137 480936 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e3 69 44 cb 23 vpclmulqdq xmm1,xmm2,xmm3,0x23 < 1730685160 858601 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the disassembler is scared to abbreviate when you set some of the ignored bits in the immediate :-) < 1730685211 778872 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm pext ax, bx, cx < 1730685213 149850 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: too many memory references for `pext' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `pext' < 1730685221 23747 :int-e!~noone@int-e.eu PRIVMSG #esolangs :*reading* yeah apparently that's legal < 1730685223 889068 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm pext eax, ebx, ecx < 1730685225 234401 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e2 62 f5 c1 pext eax,ebx,ecx < 1730685259 406903 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Hmm, I might need to do a spot of the carryless multiplication soon to speed up a CRC thing. < 1730685263 322142 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(that's the INTERCAL select instruction) < 1730685282 403863 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fun to see a three-operand instruction that operates on the general-purpose integer registers < 1730685290 308679 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm pext eax, ebx, esp < 1730685291 902287 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e2 62 f5 c4 pext eax,ebx,esp < 1730685314 381853 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm pext eax, ebx, eip < 1730685315 617548 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: too many memory references for `pext' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `pext' < 1730685328 458754 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I didn't think you'd be able to do that one, but it was worth trying < 1730685346 595724 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Interesting, it uses a VEX prefix and puts the third operand there, I guess. < 1730685367 516403 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes < 1730685444 324306 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :C-INTERCAL compiles ~ into PEXT in some circumstances which I can't remember, it was too good an opportunity < 1730685445 793208 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :You can't use eip anywhere except as a memory offset, right? < 1730685451 855557 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :`asm pext rax, rbx, [rip] < 1730685453 359851 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e2 e2 f5 05 00 00 00 00 pext rax,rbx,QWORD PTR [rip+0x0] # 0x9 < 1730685457 661805 :int-e!~noone@int-e.eu PRIVMSG #esolangs :hehe that reminds me of "pop cs" that apparently worked on 8089 and 8086. < 1730685482 699087 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a return statement is actually just a pop of the IP < 1730685483 443445 :int-e!~noone@int-e.eu PRIVMSG #esolangs :before it was stolen as a prefix for encoding more instructions (0x0F) < 1730685486 709078 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it is given a different name < 1730685508 421992 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but yes, usually you can't use RIP except for IP-relative addressing < 1730685516 931599 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm pext rax, rbx, [0x0] < 1730685519 998919 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: c4 e2 e2 f5 04 25 00 00 00 00 pext rax,rbx,QWORD PTR ds:0x0 < 1730685545 334989 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`asm lea rax, [rip] < 1730685546 817150 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 48 8d 05 00 00 00 00 lea rax,[rip+0x0] # 0x7 < 1730685563 12250 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I was going to say lea is another three-operand instruction, but that's not true for rip, I guess. < 1730685578 719070 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :absolute-memory-address addressing (with no register) had two equivalent encodings in x86-32, one of them (the shorter one) was repurposed to mean rip-relative < 1730685595 171931 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm lea rax, [rbx + rcx + 0x4] < 1730685596 617174 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 48 8d 44 0b 04 lea rax,[rbx+rcx*1+0x4] < 1730685604 938921 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm lea rax, [rip + rcx + 0x4] < 1730685606 888718 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: invalid char '[' beginning operand 2 `[rip+rcx+0x4]' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: `[rip+rcx+0x4]' is not a valid base/index expression < 1730685640 829304 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but you can't put RIP into anything other than "[RIP + constant]" because of that < 1730685702 439296 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the longer encoding was a consequence of encoding consistency: < 1730685716 778621 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm lea rax, [rbx + 0x4] < 1730685718 309554 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 48 8d 43 04 lea rax,[rbx+0x4] < 1730685726 218683 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :err, not that one < 1730685730 418514 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm lea rax, [rbp + 0x4] < 1730685732 53189 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 48 8d 45 04 lea rax,[rbp+0x4] < 1730685736 131717 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm lea rax, [rsp + 0x4] < 1730685737 609680 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 48 8d 44 24 04 lea rax,[rsp+0x4] < 1730685740 118680 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there we go < 1730685745 238439 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I wrote an encoder for all this ModRM/SIB business once. < 1730685748 901968 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`asm lea rax, [rbx*2 + 0x4] < 1730685750 622092 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0: 48 8d 04 5d 04 00 00 00 lea rax,[rbx*2+0x4] < 1730685770 759413 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :But I've mostly forgotten it already. < 1730685888 97398 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :We should have `asm for ARM. < 1730685897 446189 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :`cat /hackenv/bin/asm < 1730685898 476947 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​#!/bin/sh \ echo "$1" > /tmp/asm.s; for o in ',' '-msyntax=intel -mnaked-reg,-M intel'; do if as ${o%,*} /tmp/asm.s -o /tmp/asm.o 2>>/tmp/asm.err; then objdump ${o#*,} -d --insn-width=20 /tmp/asm.o | sed -e "1,/0000000000000000/d" | perl -pe 'if (/^\s*(\w+:)\s*((?:\w\w )+)\s*(\S.*)$/) { ($a,$b,$c) = ($1,$2,$3); $_ = "$a $b ".($c =~ s/\s+/ /rg)."\n"; }'; exit; fi; done; cat /tmp/asm.err < 1730685956 788573 :int-e!~noone@int-e.eu PRIVMSG #esolangs :. o O ( `asmr ) < 1730685991 136511 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Maybe just `arm < 1730686007 331615 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :perhaps `arsm? < 1730686012 15118 :int-e!~noone@int-e.eu PRIVMSG #esolangs :shachaf: but that's less confusing :P < 1730686029 774758 :int-e!~noone@int-e.eu PRIVMSG #esolangs :TBH `arm was my first thought < 1730686038 535250 :int-e!~noone@int-e.eu PRIVMSG #esolangs :I'd rather avoid ars* < 1730686138 754375 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(there could also be a `amd64 alias for `asm to make `arm feel more systematic) < 1730686143 21990 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Can GNU as cross-assemble by default? < 1730686180 486259 :int-e!~noone@int-e.eu PRIVMSG #esolangs :I don't know. I guess not. < 1730686223 484540 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I think llvm-as can? But it doesn't seem to be installed. < 1730686353 305835 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I was recently thinking about how LDAPR works, and I was confused at first, but now I think it makes sense and is kind of elegant. < 1730686422 247068 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :(Or rather about how LDAR works, I guess.) < 1730686449 433474 :X-Scale!~X-Scale@89.214.116.231 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730686656 964912 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`` echo $(as --help | awk '/=CPU/ { x++ } (x == 1) { print }' | sed 's= *= =g') # full output at https://hack.esolangs.org/tmp/paste/paste.28966 < 1730686658 448212 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​-march=CPU[,+EXTENSION...] generate code for CPU and EXTENSION, CPU is one of: generic32, generic64, i386, i486, i586, i686, pentium, pentiumpro, pentiumii, pentiumiii, pentium4, prescott, nocona, core, core2, corei7, l1om, k1om, iamcu, k6, k6_2, athlon, opteron, k8, amdfam10, bdver1, bdver2, bdver3, bdver4, znver1, znver2, btver1, btver2 EXTENSION is combination of: 8087, 287, 387, 687, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, sse4, avx, avx2, avx5 < 1730686707 826051 :int-e!~noone@int-e.eu PRIVMSG #esolangs :so just x86 things < 1730686757 631799 :int-e!~noone@int-e.eu PRIVMSG #esolangs :and I guess the `sed` isn't needed < 1730686915 102222 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Interesting, GNU as has a -mfence-as-lock-add option. < 1730686930 85047 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :"encode lfence, mfence and sfence as lock addl $0x0, (%{re}sp)" < 1730686936 36095 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Is that always correct? < 1730686946 595040 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I ask because mfence is significantly slower than a locked instruction like that. < 1730686978 946404 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :At least in my tests. < 1730687102 509321 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I suspect it isn't < 1730687106 522617 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :`fetch /hackenv/tmp/fence.c https://shachaf.net/tmp/fence.c < 1730687109 117252 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :2024-11-04 02:25:08 URL:https://shachaf.net/tmp/fence.c [1589/1589] -> "/hackenv/tmp/fence.c" [1] < 1730687169 971742 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Ah, can't do perf in HackEso. < 1730687309 721454 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :Also, generating lock addl $0, (%rsp) generates a false dependency on (%rsp) < 1730687333 819872 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I recently read a post suggesting doing it on an address in the red zone below (%rsp) instead, to avoid that. < 1730687354 58714 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :ais523: Do you know the specific differences? < 1730687377 826490 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :I like this Intel pseudocode for mfence: "Wait_On_Following_Loads_And_Stores_Until(preceding_loads_and_stores_globally_visible);" < 1730689502 590276 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :"64-bit reference counts, only ever increased and decreased by small integers, cannot overflow" => yes, I am aware of that trick < 1730689559 741999 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it can be useful for things other than reference counts too < 1730690533 191182 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :"I still haven't found the part of the documentation which says that 000 encodes no mask" => try to find the part in the Intel 64 and IA-32 Architecture Software Developer's Manual that defines how the REX prefix modifies the registers encoded by ModR/M bytes as described in vol 2 ch 2.1.5 and B.1.4. < 1730690711 351448 :baldibacak!~baldibaca@151.250.10.250 JOIN #esolangs * :[https://web.libera.chat] baldibacak < 1730690851 507417 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :shachaf: at a guess, write-combining memory probably works differently < 1730690867 222275 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't know the actual answer though < 1730691187 219885 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :this is why we have both the Intel and AMD manual, gnu binutils, yasm, Agner's objdump, and qemu. if some information about instruction encoding is unclear or missing in one manual, you can look them up in the other five. < 1730691225 195398 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :s/objdump/objconv/ < 1730691263 466037 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :that's six independent sources of information, each of which should completely specify the instruction encodings < 1730691291 231524 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :(binutils has both an assembler and a disassembler, but I don't think the two count as independent) < 1730691372 601471 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :plus of course there are real CPUs to test with < 1730691419 187189 :baldibacak!~baldibaca@151.250.10.250 PRIVMSG #esolangs :there was so much garbage file in my home dir so i rm -rf homedir now i erased every single config < 1730691429 484608 :baldibacak!~baldibaca@151.250.10.250 PRIVMSG #esolangs :and no cominmg back < 1730692397 589658 :baldibacak!~baldibaca@151.250.10.250 QUIT :Quit: Client closed < 1730692429 350638 :babakarazaqo!~babakaraz@ip199.ip-188-165-135.eu JOIN #esolangs * :[https://web.libera.chat] babakarazaqo < 1730692455 752536 :babakarazaqo!~babakaraz@ip199.ip-188-165-135.eu PART :#esolangs < 1730694174 378513 :craigo!~craigo@user/craigo QUIT :Ping timeout: 260 seconds < 1730699443 587209 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Is it possible in Linux to disable address space randomization for a specific program (without affecting other programs)? < 1730700117 170055 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: yes, call personality(ADDR_NO_RANDOMIZE) from the process that spawns it, between the fork and exec < 1730700283 590019 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am not sure if that affects randomization done by the dynamic linker too, or just by the kernel < 1730700313 960638 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :OK. The man page for "personality" on my computer does not mention what argument is expected by that function < 1730700363 829918 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Is it usable together with other stuff in order to be able to save/restore the program's memory (if it is not necessary to save/restore file descriptors, signals, etc, and the program does not use multiple threads)? < 1730700438 440315 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: yes, but there's a better way to do it; see PR_SET_MM in prctl(2) < 1730700478 269695 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there's actually quite a lot of kernel support for checkpointing and restoring a program's memory < 1730700501 246932 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and existing programs to do it for you, so you don't need to rewrite it from scratch; I think CRIU is one of the better-known ones < 1730700582 92162 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :turning off ASLR is still useful if you need the program to run reproducibly < 1730700768 547099 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I do not seem to have PR_SET_MM on my computer < 1730700775 896856 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(maybe I need a newer version of Linux) < 1730700883 163782 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Also, the program that should be saved/restored would be one that is meant to be able to do this, so it not just any arbitrary program. If this requires special linker options it is OK too) < 1730701804 930293 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer > 1730701880 563636 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=144889&oldid=144875 5* 03Ractangle 5* (+1) 10/* Some things i found */ < 1730704051 214938 :shachaf!~shachaf@user/shachaf PRIVMSG #esolangs :You can also do it in the ELF file, can't you? < 1730705479 569335 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730706328 487222 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 252 seconds < 1730706397 929211 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord > 1730709224 701179 PRIVMSG #esolangs :14[[07User talk:Superstitionfreeblog14]]4 10 02https://esolangs.org/w/index.php?diff=144890&oldid=143607 5* 03ZCX islptng 5* (+435) 10 < 1730711242 748006 :X-Scale!~X-Scale@89.214.116.231 QUIT :Quit: Client closed < 1730711951 952298 :ais523!~ais523@user/ais523 QUIT :Quit: quit > 1730713433 349838 PRIVMSG #esolangs :14[[07RECT4n=GLE14]]4 10 02https://esolangs.org/w/index.php?diff=144891&oldid=139113 5* 03JJRubes 5* (+690) 10interpretation explanation rewrite < 1730713525 369835 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730713841 386207 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730714447 713585 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net JOIN #esolangs amby :realname < 1730719687 623262 :chiselfuse!~chiselfus@user/chiselfuse QUIT :*.net *.split < 1730720150 451208 :chiselfuse!~chiselfus@user/chiselfuse JOIN #esolangs chiselfuse :chiselfuse < 1730720996 448548 :X-Scale!~X-Scale@89.214.116.231 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale > 1730721318 27681 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144892&oldid=144869 5* 03Ractangle 5* (-44) 10/* Syntax */ > 1730721354 111729 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144893&oldid=144892 5* 03Ractangle 5* (+12) 10/* Hello, world! */ < 1730721505 462282 :Everything!~Everythin@178-133-220-38.mobile.vf-ua.net JOIN #esolangs Everything :Everything < 1730721645 398860 :X-Scale!~X-Scale@89.214.116.231 QUIT :Ping timeout: 256 seconds < 1730723741 659330 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :ais523: compile-time virtual memory < 1730724231 530292 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730724757 352114 :Guest60!~Guest60@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] Guest60 < 1730725363 919113 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :oh wait, not around < 1730725450 751025 :Everything!~Everythin@178-133-220-38.mobile.vf-ua.net QUIT :Quit: leaving > 1730725553 90803 PRIVMSG #esolangs :14[[07SML14]]4 10 02https://esolangs.org/w/index.php?diff=144894&oldid=143587 5* 03Froginstarch 5* (+19) 10/* Hello, world! */ > 1730725644 600831 PRIVMSG #esolangs :14[[07User:EvyLah/public stack14]]4 10 02https://esolangs.org/w/index.php?diff=144895&oldid=131013 5* 03Gggfr 5* (+469) 10/* commands */ < 1730725679 383751 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :aaah im bored < 1730725686 709310 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :give me spmething to turn into an esolang > 1730725739 438799 PRIVMSG #esolangs :14[[07User:EvyLah/public stack14]]4 10 02https://esolangs.org/w/index.php?diff=144896&oldid=144895 5* 03Gggfr 5* (+71) 10/* commands */ < 1730726132 367464 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu JOIN #esolangs * :[https://web.libera.chat] baldibacak < 1730726156 357560 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :'=( < 1730726181 760605 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :hellllllo < 1730726188 585212 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :hello < 1730726199 705218 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :you gud? < 1730726203 410573 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :y < 1730726224 75300 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :btw how do we setup password on liberal chat < 1730726226 806482 :Guest60!~Guest60@94.147.203.75 QUIT :Quit: Client closed < 1730726284 351092 :Guest60!~Guest60@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] Guest60 < 1730726287 942745 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :idk < 1730726307 410335 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :want to read an esolang? < 1730726545 611293 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :cuz i have smth for you to read! < 1730726699 507080 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :baldibacsk this is for you < 1730726703 665469 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :? < 1730726704 350502 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas < 1730726721 536887 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :*baldibacak < 1730726745 73323 :Guest60!~Guest60@94.147.203.75 PRIVMSG #esolangs :so? < 1730726883 133228 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: apparently the Turing-complete computation in M:tG is making rounds on the internet, though here it appears with a very deceptive wording, both because it's missing the parenthesis in "deck can be used to (deal damage iff mathematical conjecture is true)": https://www.astralcodexten.com/p/links-for-november-2024 (search for "Isochron < 1730726883 618716 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :Scepter") < 1730726945 71043 :Guest60!~Guest60@94.147.203.75 QUIT :Quit: Client closed < 1730726998 351876 :wWwwW!~wWwwW@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] wWwwW < 1730727130 625002 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :hello < 1730727157 938377 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :i was guest60 lol < 1730727180 740928 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :ais523: ik its a loong time but somebody made an interpreter for RECT4n=GLE and explained it better is if you where interestd then you can see it now < 1730727751 489630 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :so what you was going to tell me < 1730727782 803584 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :i was going to if you said yyes show you this: < 1730727803 104412 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :https://esolangs.org/wiki/Bring_to_another < 1730727840 807667 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :what is it < 1730727852 222254 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :an esolang < 1730727893 855062 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :reverse enginnering an esolang < 1730727897 59420 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :seems interesting < 1730727915 432444 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :thx! :] < 1730728064 659886 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net QUIT :Ping timeout: 244 seconds < 1730728694 132455 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :have you red/are readingf th hackMD doc? < 1730728732 908276 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :nah < 1730728742 524160 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :lol < 1730728750 369206 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :i am gonna make an end to end encrypted chat app < 1730728766 894820 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :waht tf < 1730729023 119891 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :just for fun i am gonna make an chatapp includesend to end encrypted meaning i cant read messages < 1730729029 120027 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :i set all logic in my hand < 1730729036 934683 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu PRIVMSG #esolangs :i should start by learning sockets < 1730729367 466333 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730729402 87389 :wWwwW!~wWwwW@94.147.203.75 QUIT :Quit: Client closed < 1730729649 795951 :baldibacak!~baldibaca@ip199.ip-188-165-135.eu QUIT :Quit: Client closed < 1730729843 351899 :wWwwW!~wWwwW@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] wWwwW > 1730730898 242900 PRIVMSG #esolangs :14[[07Extended Brainfuck14]]4 10 02https://esolangs.org/w/index.php?diff=144897&oldid=139240 5* 03None1 5* (+38) 10 > 1730731474 946804 PRIVMSG #esolangs :14[[07Brainfuck extended14]]4 10 02https://esolangs.org/w/index.php?diff=144898&oldid=140254 5* 03None1 5* (+124) 10 > 1730731532 55832 PRIVMSG #esolangs :14[[07Brainfuck extended14]]4 10 02https://esolangs.org/w/index.php?diff=144899&oldid=144898 5* 03None1 5* (+45) 10 > 1730731552 768424 PRIVMSG #esolangs :14[[07Extended Brainfuck14]]4 M10 02https://esolangs.org/w/index.php?diff=144900&oldid=144897 5* 03None1 5* (-1) 10 > 1730731654 685501 PRIVMSG #esolangs :14[[07Brainfuck extended14]]4 M10 02https://esolangs.org/w/index.php?diff=144901&oldid=144899 5* 03None1 5* (+131) 10 < 1730731824 901415 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730732280 956050 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :huh ... apparently that uses a card https://scryfall.com/card/dsk/241/zimone-all-questioning that refers to prime numbers explicitly in its rules text. that's cheating! < 1730732797 352681 :wWwwW!~wWwwW@94.147.203.75 QUIT :Ping timeout: 256 seconds < 1730733133 763939 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730735951 350877 :wWwwW!~wWwwW@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] wWwwW < 1730736446 454941 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730736670 92414 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730737861 310037 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User > 1730737974 401185 PRIVMSG #esolangs :14[[07Son of a BitCh14]]4 N10 02https://esolangs.org/w/index.php?oldid=144902 5* 03ZCX islptng 5* (+613) 10Created page with "Son of a [[BitChanger|BitCh]] is an esolang with 2 instructions, created by islptng. As the title says, it is heavily inspired and based on BitChanger. The program itself, has not only a tape, but a state storage, which the value is always one of diojn< > 1730738661 782136 PRIVMSG #esolangs :14[[07Son of a BitCh14]]4 M10 02https://esolangs.org/w/index.php?diff=144903&oldid=144902 5* 03ZCX islptng 5* (+140) 10Examples > 1730738818 383198 PRIVMSG #esolangs :14[[07Deadfish with gotos and input14]]4 M10 02https://esolangs.org/w/index.php?diff=144904&oldid=144853 5* 03ZCX islptng 5* (+21) 10Added my AHF to this page because it has the same idea as mine. > 1730739749 371625 PRIVMSG #esolangs :14[[07User:EvyLah/public stack14]]4 10 02https://esolangs.org/w/index.php?diff=144905&oldid=144896 5* 03Ractangle 5* (+25) 10/* program */ > 1730739759 843437 PRIVMSG #esolangs :14[[07User:EvyLah/public stack14]]4 10 02https://esolangs.org/w/index.php?diff=144906&oldid=144905 5* 03Ractangle 5* (-9) 10/* program */ < 1730739823 350480 :baldibacak!~baldibaca@151.250.10.250 JOIN #esolangs * :[https://web.libera.chat] baldibacak < 1730740808 892539 :baldibacak!~baldibaca@151.250.10.250 PRIVMSG #esolangs :can we send images here < 1730740827 567580 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed < 1730741152 228715 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net JOIN #esolangs amby :realname < 1730741191 471748 :baldibacak!~baldibaca@151.250.10.250 QUIT :Quit: Client closed > 1730743191 589305 PRIVMSG #esolangs :14[[07MarkupL14]]4 10 02https://esolangs.org/w/index.php?diff=144907&oldid=144888 5* 03Ractangle 5* (-181) 10/* MarkupL syntax */ > 1730743598 932769 PRIVMSG #esolangs :14[[07Bake14]]4 10 02https://esolangs.org/w/index.php?diff=144908&oldid=143158 5* 03Ractangle 5* (-14) 10/* Syntax */ > 1730743607 379982 PRIVMSG #esolangs :14[[07Bake14]]4 10 02https://esolangs.org/w/index.php?diff=144909&oldid=144908 5* 03Ractangle 5* (-2) 10/* Cat program */ < 1730744773 199911 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730745309 395888 :wWwwW!~wWwwW@94.147.203.75 QUIT :Ping timeout: 256 seconds > 1730745504 67844 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03QOALO 5* 10New user account < 1730745512 348250 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User > 1730745867 240187 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03AES256-Always secure Encrypeter 5* 10New user account < 1730747179 362005 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt QUIT :Ping timeout: 256 seconds > 1730747550 846878 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144910&oldid=144893 5* 03Ractangle 5* (-436) 10 > 1730747566 752501 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144911&oldid=144910 5* 03Ractangle 5* (+0) 10/* Syntax */ > 1730747570 835612 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144912&oldid=144911 5* 03Ractangle 5* (+1) 10/* Hello, world! */ > 1730747620 565 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144913&oldid=144912 5* 03Ractangle 5* (-25) 10/* Implementation */ < 1730748949 475506 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca QUIT :Ping timeout: 260 seconds > 1730749120 573662 PRIVMSG #esolangs :14[[07User:EvyLah/public stack14]]4 10 02https://esolangs.org/w/index.php?diff=144914&oldid=144906 5* 03EvyLah 5* (-2) 10/* current stack */ ya gotta change the stack when you change the program < 1730749865 432161 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730750018 965563 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca JOIN #esolangs zzo38 :zzo38 < 1730750435 455094 :craigo!~craigo@user/craigo JOIN #esolangs craigo :realname < 1730750877 208528 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt QUIT :Quit: Ping timeout (120 seconds) > 1730751686 400162 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144915&oldid=144913 5* 03Ractangle 5* (+37) 10/* Syntax */ > 1730753451 678038 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144916&oldid=144915 5* 03Ractangle 5* (+21) 10/* Examples */ > 1730755178 14128 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144917&oldid=144916 5* 03Ractangle 5* (+9) 10/* Quine */ < 1730755195 451127 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) > 1730755292 208680 PRIVMSG #esolangs :14[[07List of quines14]]4 10 02https://esolangs.org/w/index.php?diff=144918&oldid=139630 5* 03Ractangle 5* (+44) 10/* $_$ */ > 1730755370 237049 PRIVMSG #esolangs :14[[07List of quines14]]4 10 02https://esolangs.org/w/index.php?diff=144919&oldid=144918 5* 03Ractangle 5* (+64) 10/* /// */ < 1730757154 375535 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730757400 675053 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730757510 615494 :Everything!~Everythin@178-133-220-38.mobile.vf-ua.net JOIN #esolangs Everything :Everything < 1730759344 680565 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730760135 861381 :Everything!~Everythin@178-133-220-38.mobile.vf-ua.net QUIT :Quit: leaving > 1730762813 208599 PRIVMSG #esolangs :14[[07lang14]]4 10 02https://esolangs.org/w/index.php?diff=144920&oldid=143523 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+45) 10/* Java Interpreter */ > 1730762853 300316 PRIVMSG #esolangs :14[[07Txet14]]4 10 02https://esolangs.org/w/index.php?diff=144921&oldid=140918 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+4) 10/* Cat program */ > 1730763050 883589 PRIVMSG #esolangs :14[[07Nope.14]]4 10 02https://esolangs.org/w/index.php?diff=144922&oldid=144512 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+48) 10/* Tile */ > 1730763708 811843 PRIVMSG #esolangs :14[[07Talk:Text14]]4 10 02https://esolangs.org/w/index.php?diff=144923&oldid=132832 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+12012) 10/* txeT */ > 1730763731 504185 PRIVMSG #esolangs :14[[07Talk:Text14]]4 10 02https://esolangs.org/w/index.php?diff=144924&oldid=144923 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (-71) 10/* 99 bottles of beer on the wall */ > 1730763738 484049 PRIVMSG #esolangs :14[[07Talk:Text14]]4 10 02https://esolangs.org/w/index.php?diff=144925&oldid=144924 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+69) 10/* txeT */ < 1730764062 943925 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname > 1730764080 11972 PRIVMSG #esolangs :14[[07914]]4 10 02https://esolangs.org/w/index.php?diff=144926&oldid=144719 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (-5) 10/* Operators */