Time Nick Message 03:54 hare_hare_yukai imagine a parody called MeinKraft 03:54 hare_hare_yukai with germany and nazi memes 03:54 hare_hare_yukai that would be funny eh lissobone? 04:00 [MTMatrix] <Blockhead256> https://www.youtube.com/watch?v=-1yzoiUIGGs 04:01 hare_hare_yukai https://vndb.org/v7316 04:01 hare_hare_yukai https://vndb.org/v19616 04:49 hare_hare_yukai https://files.catbox.moe/y3y8vx.png 12:21 erle luatic did you file the bad apple thing as a bug? 13:29 MTDiscord <luatic> no, but i may in about 2 days 13:53 erle luatic when enough dirt has accumulated? :D 14:10 MTDiscord <luatic> erle: hehe 14:10 MTDiscord <luatic> currently the memory doesn't like me (it segfaults) 14:11 MTDiscord <luatic> will make it easier to report though, i suppose 14:14 erle luatic what do you mean 14:14 erle luatic have you tried using ubsan or asan 14:14 erle or tsan or msan 14:14 MTDiscord <luatic> i haven't, but i will probably 14:15 MTDiscord <luatic> is there something like a compiler line you could drop me with all the sanitizers enabled? :D 14:15 erle no, because that is a stupid thing to do 14:16 MTDiscord <luatic> why? performance? 14:17 erle https://lists.llvm.org/pipermail/llvm-dev/2016-March/097144.html 14:18 erle luatic i suggest to read up on how the sanitizers work and you will probably figure it out yourself 14:19 erle it will also help you to interpret the output correctly 14:19 MTDiscord <luatic> I have a feeling that sanitizers are implemented poorly 14:20 erle is your spidersense telling you that? 14:20 MTDiscord <luatic> yes, it's tingling 14:20 MTDiscord <luatic> like i imagine i could write an interpreter for C which checks for all of these with maybe a ~10x interpretation overhead 14:21 erle in interpreter for C, curious 14:21 erle C, the famously interpreted language 14:21 MTDiscord <luatic> i've also seen detectable illegal behavior in zig and it doesn't make me choose between detecting some illegal behavior or detecting other illegal behavior 14:22 MTDiscord <luatic> so this seems like a shortcoming so far and i'm not sure what induces it; i will have to read up on it 14:22 erle what's detectable illegal behaviour? 14:24 MTDiscord <luatic> stuff that usually is just undefined behavior in C, but which in zig debug builds is well, detectable 14:24 MTDiscord <luatic> such as accessing an inactive variant of a union 14:26 erle look just start with ubsan right? 14:27 MTDiscord <luatic> ok 14:27 MTDiscord <luatic> still i will look into how sanitizers work and whether it could be done better ;) 14:27 MTDiscord <luatic> the "red zone" approach for example seems pretty rudimentary to me 14:27 erle how would you do it 14:29 MTDiscord <luatic> i'd roughly attach metadata (such as array bounds) to pointers, and then do bounds checks; propagating the metadata may prove tricky however 14:31 erle is that a thing you actually plan to do or is it about as real as SSCSMs? :P 14:33 erle i should probably add “progress is not possible without SSCSMs” to my list of common noob utterings hehe :D 14:33 MTDiscord <luatic> about as real as SSCSMs 14:33 lissobone I want to add an audiochat to minetest. 14:34 MTDiscord <luatic> erle: it's imo pretty true, though; if we want to grow up to be a real game engine, we need a fully scriptable client, and that can only be achieved well with SSCSMs 14:34 erle lissobone use mumble + 3d position CSM ig 14:35 MTDiscord <luatic> i considered writing snake in LÖVE and Minetest just to drive this point home, but after writing it in LÖVE in ~1h (mind you, i had not used LÖVE before), i had absolutely zero motivation to do it in Minetest too 14:36 erle try writing snake in svg 14:36 MTDiscord <luatic> it would have been possible somewhat half-janky using HUDs / dynamic media / nodes / whatever, but it would've been much more work yet much more jank - simply strictly suboptimal for this simple purely clientside game! 14:36 MTDiscord <luatic> erle: is svg turing-complete, or would i have to hardcode an obscene number of possible game states or abuse obscure features that are suspiciously useful for implement snake? 14:38 erle no idea 14:38 erle look at the source of this https://upload.wikimedia.org/wikipedia/commons/4/44/Balance_puzzle_SMIL.svg 14:39 erle or this lol https://upload.wikimedia.org/wikipedia/commons/4/4d/Subtraction_game_SMIL.svg 14:40 MTDiscord <luatic> lol 14:40 erle or this https://upload.wikimedia.org/wikipedia/commons/9/9b/SMIL_missile_demo.svg 14:41 erle i think “we need client side scripting” is not necessarily web developer brainrot, but surely inspired by it :P 14:42 erle you can do a lot without turing-complete input languages 14:42 MTDiscord <luatic> the rockets are not randomized... 14:43 MTDiscord <luatic> erle: it's generally more work though 14:43 erle surprise, not taking the ”everything turing complete” escape hatch is work 14:43 erle compare websites that have CSS layout with websites that do layout in JS 14:43 erle i mean, the latter are slow on every computer 14:43 erle no amount of CPU is going to beat accidentally quadratic bullshit 14:43 MTDiscord <luatic> yes, what should this work be made for? for security, it imo suffices to just (1) use a safe interpreter (write a simple scheme yourself if necessary); (2) validate all API calls very strictly 14:44 rubenwardy CSS layouting is done by a turing complete language 14:44 erle have you read the seven turrets of babel? 14:44 erle if not, read it 14:44 erle it's about turing complete *input languages* 14:44 rubenwardy also, CSS is turing complete 14:44 erle rubenwardy show and tell? 14:45 erle i saw that claim repeated, but i think it needs a turing complete user 14:45 MTDiscord <luatic> i definitely wouldn't bet on CSS layouting being linear 14:45 MTDiscord <luatic> (linear time) 14:45 MTDiscord <luatic> it's also much more intransparent than if i write code myself 14:45 erle lol 14:45 erle as olialina explained in her essay, a lot of systems become more powerful with a turing complete user 14:46 MTDiscord <luatic> i have to trust the CSS layouting algo to be decent, whereas if i write imperative code myself i can ensure my algo is decent 14:46 MTDiscord <luatic> yeah, SSCSMs would give modders a lot of power 14:46 MTDiscord <luatic> many of them, esp. the noobs, won't wield this properly, but that is not a reason to not give it to the experienced modders :) 14:46 erle lol 14:47 erle “surely i am pure and will not abuse this power, or write code that runs on my computer, but not on a slower one” 14:47 MTDiscord <luatic> indeed i am renowned for being the perfect programmer; it is virtually impossible that i write suboptimal code /s 14:48 erle great, can you write my code too? 14:48 MTDiscord <luatic> erle: if it's interesting enough, maybe 14:48 erle anyways, i have yet to see CSM code that is both very useful and would be sent by a server 14:48 MTDiscord <luatic> part of the problem is that our CSM API is shit 14:48 erle i think lizzys server ticks thing is probably the only one i can remember 14:48 erle and that one can very simply be added to the client 14:49 MTDiscord <luatic> as for "would be sent by a server": that's just for convenience so that we can continue our model of "you can just connect to servers and it works" 14:49 rubenwardy see https://github.com/minetest/minetest/issues/8057 14:49 erle luatic you know that it results in “you have to run this CSM or you are not allowed on this server” and then the CSM starts mining bitcoins or other room-heating activities 14:50 MTDiscord <luatic> i wonder whether i would be able to write a safe lua interpreter 14:50 MTDiscord <luatic> most probably not, but lua 5.1 is small enough that there's a tiny chance that it could work 14:50 erle the thing most often suggested is predicting movement client-side and i am pretty sure other engines just send like, a path to follow or so 14:50 MTDiscord <luatic> erle: mining bitcoins is legit CSM behavior imo :) 14:50 erle which btw minetest could also do 14:50 celeron55 erle: just like websites do? wait, none of them do, of the ones you actually want to use 14:51 erle celeron55 pretty sure that ”displaying obnovious ads” is also a thing that heats up my computer and makes it slow. i can not watch youtube videos on youtube on the thing i am writing from, but i can watch them on invidious or download them using youtube-dl and use mplayer. 14:52 erle like, the computer is obviously fast enough to display videos, but the youtube bullshit makes it crawl to a halt 14:52 MTDiscord <luatic> erle: The "engines" / "frameworks" (besides Minetest) I've used so far let you write client and server yourself. 14:54 MTDiscord <luatic> The default "mode of operation" for most actual engines I've seen is "you build a client-side game". You can add a server to that later on if you wish. 14:54 erle is that all web stuff? 14:55 MTDiscord <luatic> no, I'm mostly thinking Pygame, LÖVE here 14:55 celeron55 i still see it as a valid path in my mind to limit SSCSM into very small lua environments with very limited interfaces, only to allow doing stuff like vehicle specific physics and let's say custom 2D visuals or some such, which are then triggered by messages from the server 14:55 celeron55 i think everyone should consider this option 14:55 MTDiscord <luatic> Looking at perhaps the closest thing to Minetest - Roblox, which also does servers and clients for you - they also have client side scripting. 14:55 erle celeron55 the thing is, if it is that limited, then i'm pretty sure there is nicer solution 14:56 MTDiscord <luatic> (I don't know much about Roblox though. It's just that Roblox kids are a frequent occurrence on Lua forums now.) 14:56 celeron55 erle: the only way you can prove it is to design it yourself 14:56 MTDiscord <luatic> erle: well, it isn't that limited; we don't know what people want or will want to do with Minetest 14:56 celeron55 erle: no other engine faces the same challenge as MT does. they all run game specific code on the client for these purposes 14:57 MTDiscord <luatic> this ^ 14:57 erle i don't know everything about openRA but i am pretty sure they have a declarative format of “traits” that are specified in an engine-version 14:58 MTDiscord <luatic> Minetest's "the client is a sockpuppet of the server except for hardcoded features" is pretty unique in the engine space, I think 14:58 celeron55 erle: i'm pretty sure if you make a game in openRA, you have to have a specific client build of it in order to play 14:59 erle yeah, like with minetest 14:59 erle not? 14:59 erle the client has to understand the specific traits 14:59 erle maybe i am wrong here, but i mean like “what kind of order can i give to this unit” 15:00 celeron55 if you make the traits flexible enough, you essentially end up with tiny lua scripts 15:00 celeron55 that is what i am proposing 15:00 celeron55 make traits that are definable as small scripts 15:00 MTDiscord <luatic> here's another thing i wanted to run on the client: character animations; they're much jankier if serverside 15:00 celeron55 and send them as such over to the client 15:01 erle celeron55 the traits are more like “which hardcoded attack behaviour is used” or “can this unit teleport” or “which cursor is displayed when hovering over a valid target” https://docs.openra.net/en/release/traits/ 15:01 MTDiscord <luatic> CSMs may also allow offloading rendering work to the client. Consider your last mod, erle: It shouldn't be the server's business to render the text to a texture. Ideally the server could just send the text, and tell the client to render it. With a SSCSM, that would be possible. 15:01 erle it turns out that the traits in openra are amazingly flexible, as in that some mods are just a bunch of yaml files and assets and totally change gameplay 15:02 celeron55 totally change gameplay? i don't believe that 15:02 erle like, i implemented a submarine for example once 15:02 rubenwardy SSCSM combined with a new GUI/rendering API would allow for a wide range of possibiliities for GUIs 15:02 celeron55 that's not a total change in gameplay 15:02 erle by making an “activate” action and changing the activated state 15:02 erle so that the submarine is underwater (different texture) 15:02 celeron55 if you make a first person shooter or a visual novel with 3d animations in OpenRA, then i believe you 15:02 erle and in that state it has different detection capabilities and is invisible 15:03 celeron55 or at least a platformer 15:03 erle i concede and assert the opposite, a non-total change in gameplay 15:03 MTDiscord <luatic> first person shooters are a good example; they need much custom logic, and you want instant responses (client prediction) because everything tends to go fast in these 15:03 erle yeah so if i go along with your point, why is there no main menu CSM tab? 15:03 erle i mean that would at least be a starting point 15:03 erle to expose it to more users 15:04 MTDiscord <luatic> last time i tried to make a weapon mod i was fed up by even basically trivial things such as achieving a square HUD image with a scale relative to screensize being impossible 15:04 erle also CSMs on CDB when lol 15:04 rubenwardy because we want sscsm not csm 15:04 erle rubenwardy ah, the users do not own their computronium! 15:04 erle :D 15:04 celeron55 i propose deleting the current CSM and beginning from scratch, to only allow SSCSM in small environments 15:05 erle i do not see how SSCSM without an intermediate step of first-class CSMs can be viable, unless the wisdom of “how to design a CSM API well” falls from the sky somehow 15:05 celeron55 i can design all the apis, that's a total non-issue 8) but i won't implement it 15:06 erle celeron55 so why not expand the CSM API with downloadable CSMs from CDB and see what is actually used? 15:06 erle like “movement prediction CSM” or so 15:06 celeron55 because i think the current CSM API has a too large attack surface to be used for SSCSM without process level sandboxing 15:06 MTDiscord <luatic> that's turee 15:06 MTDiscord <luatic> throw it out the window 15:06 celeron55 i want to either get rid of it, or to have process level sandboxing 15:06 celeron55 only two options 15:06 erle i mean web browsers do it 15:07 erle stuff like <video> or <details> was added after flash or javascript added that 15:07 celeron55 CDB CSMs are not an option to me, it goes against the core point of MT 15:07 erle celeron55 sandboxing as in ”script can not affect the local environment” ? 15:07 celeron55 if everybody insist on them and they are implement, i'll let it pass, but i will not help 15:07 celeron55 implemented* 15:07 erle well CSMs have so far been used for a bunch of non-cheaty purposes. like encrypted chat messages (which are obviously not possible securely if the server can just replace the CSM) 15:08 erle or the thing where you see if someone targets you (by examining the view direction and figuring out if it intersects you hehe) 15:09 erle or building without cheating yourself the materials, i.e. you have all the cobble and so on and already made the blueprints 15:09 celeron55 leaving CSMs to be CSMs is fine to me also. but then people have to learn to distinguish between CSM and the-other-thing (let's call it programmable traits, or some such) 15:13 celeron55 i have made a proof of concept of this, it's here https://github.com/minetest/minetest/compare/master...celeron55:minetest:client_player_physics_script 15:16 celeron55 as you can tell, i am not in a hurry 15:18 erle celeron55 i see, it is for controlling, not only for prediction 15:18 celeron55 well that is only the player physics trait, if you let my borrow that term from you 15:19 celeron55 you obviously want to have the direct player input at your disposal, to get fast feedback to the player 15:19 celeron55 me* 15:20 erle the openra way here would probably be to preload the engine wtih a bunch of heavily-tested traits and only allow the server to specify which one 15:20 celeron55 but there would be similar mini environments for some sort of hud stuff, and animations, or however we would happend to decide on allocating the apis 15:21 erle with physics in particular i do wonder though what pitfalls exist for implementing this horribly 15:21 celeron55 maybe one for dynamic sound generation 15:21 celeron55 not sure what they would be, but that's the concept 15:21 erle that one is easy, you have a tight instruction budget, no branching and your code has to deliver one sample (or a bunch of them) per time unit. like shaders. 15:22 erle “easy” as in, easy to conceptually make it not very powerful for any other purpose than you want to have it 15:22 erle i.e. lock it down 15:22 MTDiscord <fatalisterror> What about sscsm? 15:22 erle i have to go. i'll be back in a few days ig 15:22 celeron55 shaders do have branching 15:23 celeron55 and if you want to disallow loops, you also have to disallow functions to avoid infinite recursion and such. i am open to discussing about that and figuring out a way to do it 15:23 erle sorry, i thought of no unconstraint loooping 15:24 erle branching is easy because you can employ math trickery anyway 15:24 celeron55 maybe lua isn't the right choice and a less flexible language would have to be used 15:24 erle regarding loops: on the hardware i use (intel GPU) all loops are unrolled lol 15:24 erle in shaders 15:24 erle which kinda makes sense, given there is an instruction budged 15:26 celeron55 the thing about these is, they wouldn't be run in any process sandbox or even a separate thread, which means they truly can block execution and ruin your day, if they have the capability to do so. if lua was used, then using threads would probably be required, in order to be able to catch infinite loops and stop them 15:26 celeron55 however if they run in a thread, you get additional delay 15:26 erle “be able to catch infinite loops and stop them” 15:27 celeron55 i would like it if they were synchronous and instantious. it would make them simple and provide instant feedback to the player, not some thread-delayed buffered feedback 15:27 erle i should re-read on computable numbers, with an application to the entscheidungsproblem 15:27 erle i think it would probably be a good idea to figure out how other engines do it 15:27 celeron55 there is no other engine with this problem like i already said, you will not find good examples 15:28 celeron55 minetest is completely novel in this aspect 15:28 celeron55 we're literally making an invention here, have been for a long time already 15:28 erle i am pretty sure i have seen a lot of roguelike stuff that is just dumb terminals, but i also think it does not count 15:29 erle anyway, i have to get that TGA stuff fixed first before i commit to anything else. because it can not stay insecure. also i have to go. was nice chatting, see ya in a few days! 15:29 celeron55 (and as with most inventions, we'll probably be dead by the time the invention actually gets widespread use) 15:30 erle the most things i want out of minetest is a) keep running on whatever computers i have that it already runs on b) not break my mods 15:30 erle feature-wise i'm probably happier than most, because i am a slob 15:30 erle my legos also don't have shaders 15:35 MTDiscord <fatalisterror> SSCSM would absolutely change gameplay celeron55. Vehicles? My mod, for example, 4dguns being perfectly smooth? If we had access to camera matrix we literally could have full control over the camera with perfect smoothness. If we added sscsms with an entity API (which likely wouldnt be difficult), it would absolutely change gameplay. I agree by itself it doesnt do a lot, but the lengths ive had to go through to make 4dguns, and 15:35 MTDiscord its this choppy still? Is ridiculous. Gunplay like in 4dguns with clientside support would be absolutely gorgeous. Can you imagine adding cars to MT? Bikes? Wall jumping? 15:36 MTDiscord <fatalisterror> Totally disagree that it wouldnt change anything 15:39 erle fatalisterror but would you prefer an engine that just gives you a vehicle trait so you don't have to worry about it? 15:39 erle where you can set the static capabilities? 15:39 erle (that does not enable walljumps most likely) 15:41 celeron55 i want to enable as much creativity as possible. engine-defined traits will never do that 15:42 celeron55 but it has to be within a reasonable secure framework. it wouldn't provide all the apis you can imagine. only very specific ones that give the most bang for the buck in terms of improving responsiveness 15:42 celeron55 and improving customizability 15:43 celeron55 anything that can be reasonable implemented using server side apis, would stay server side 15:43 celeron55 reasonably* 15:45 MTDiscord <landarvargan> My current interest in SSCSM is network optimization. AFAIK HUDs are really good at clogging up the server<->client packet stream, and things like CTF's sprint HUD could be done entirely in CSM, because it's just changing the HUD at a set interval on AUX press/release 15:47 celeron55 doing custom instantaneous graphics on the screen based on local input fits my requirements 15:48 celeron55 like, especially HUD stuff. it's super simple 15:49 celeron55 3D stuff might require a vast API that's questionable from a security standpoint 15:50 celeron55 2D stuff basically requires only a few primitives, and it would run every frame with no engine-provided object management 15:50 erle like SVG with templates for inserting stuff or so 15:54 celeron55 i don't know, like just functions for drawing pixels, triangles, images and text, and that's it. what's to be figured out is whether the mini environments would have a message exchange system between them or if they'd only accept custom messages from the server. there's a lot to design. don't do it now 15:56 erle i think you could probably prototype that as a CSM using the CSM server-client message channel? 15:56 erle no idea 15:56 erle anyway 15:56 erle see ya 15:58 celeron55 well you don't have the necessary apis available i believe 15:59 celeron55 and i believe it is not wise to start adding these onto the current CSM implementation, because it will get people stuck on that insecure platform 16:35 muurkha erle: shaders do have unconstrained looping, if by that you mean while loops 16:36 erle muurkha not on my hardware, they become very slow after a finite amount of loops! 16:36 erle limited instruction budget per frame i assume 16:38 muurkha luatic: you may be interested in the purecap build of CheriBSD for CHERI, which checks pointer bounds in hardware on Morello. the problem with fat pointers is that they break the ABI 16:44 muurkha there have been a series of fat-pointer implementations in GCC over the years, but with shared libraries you'd want to build the whole distro with them, and I haven't seen anybody do that 16:47 muurkha part of the issue is that the C standard legalizes kind of a lot of pointer arithmetic, including things more conservative languages wouldn't. given struct { int i[10], j, k; } x[10]; I believe it is valid to access x[2].j as x[0].i[&x[3].j - x[3].i + x[4].i - x[2].i], for example 16:47 muurkha you have to be able to memcpy structs, and I think you have to be able to recover pointers after casting them to and from intptr_t, if that's defined 16:49 jonadab C is inherently, by design, a systems language, meant for implementing things like boot loaders and kernels. 16:49 muurkha the preliminary CHERI report suggests that Morello uses about 15% more clock cycles, but that some fixes should reduce this below 5% 16:49 jonadab And it was meant to be able to do that decades ago, when computers had a LOT less memory (and system resources generally). 16:49 jonadab So it kind of had to be pretty low-level. Goes with the territory. 16:50 muurkha jonadab: that's sort of true, in that the criterion for its success was whether Thompson was willing to rewrite the kernel in it, but in 6th Edition Unix it was also the main applications language, and continued to be that up through the end of the millennium 16:51 jonadab It was and is used for that _also_ yes. 16:51 muurkha languages like C at the time were well-accepted for applications software, but not for boot loaders and kernels 16:51 muurkha the key innovation of C was that it was broadly enough applicable to also extend to most of the things you would normally write in assembly 16:51 jonadab But languages like lisp were _also_ used for application development. Not so much for boot loaders and kernels. 16:52 muurkha Lisp was not considered practical for application development by anything but a small lunatic fringe at the time 16:52 muurkha (who were also writing their boot loaders and kernels in it!) 16:52 jonadab Wait, really? 16:52 jonadab They wrote boot loaders and kernels in lisp? 16:52 muurkha yeah, the MIT CADR was maybe the most notable example, but then two companies spun off 16:52 jonadab How did I not know this? 16:53 jonadab Fascinating. 16:53 jonadab I stand corrected, and somewhat in awe. 16:53 muurkha Symbolics and Lisp Machine Inc. TI also made a product 16:53 muurkha they even wrote their microcode in Lisp 16:53 * jonadab boggles 16:53 jonadab Microcode. 16:54 muurkha regular working programmers at the time, at banks and stuff, were writing transaction processing systems in assembly languages 16:54 jonadab Next you'll be telling me somebody has written a 3D graphics engine in postscript. 16:54 muurkha I've written a parametric CAD system in PostScript but it's 2D 16:54 jonadab Yes, I'm aware of the larger role assembly language had in the early days. 16:54 jonadab Mainly due to a general dearth of higher-level languages on most platforms. 16:55 muurkha I would say it was due to a dearth of better *low*-level languages like C. 16:55 jonadab Because they still needed to be developed. 16:55 jonadab I meant higher-level than assembly. Which C _arguably_ is. 16:55 muurkha When I started working as a programmer in 01996 there was still the mentality that Serious Software was written in C (or C++) 16:56 muurkha garbage collection became reasonably efficient in the mid-90s but most programmers had no idea of this until about 02002 when Java finally beat out C++ 16:56 jonadab Heh. 16:56 jonadab Java performance was pretty poor in the nineties. 16:56 jonadab At least on consumer-grade hardware of the time. 16:57 muurkha yeah, but all the C++ programmers I worked with in '96 were convinced that it was going to be the next big language for application software 16:57 muurkha we built the Web on the back of Perl (garbage-collected in a particularly lame way) but it took a long time for that to get accepted 16:57 jonadab Java isn't just high level though, it's also VM-based. 16:57 jonadab You can have a language with higher-level data structures than what C normally uses, and still compile it to machine code. 16:57 muurkha Yeah, although there is a lot of blurriness there 16:58 muurkha Android software written in Java gets compiled to native binaries these days, and GCJ has been around since the 90s 16:58 jonadab Not sure I'd really consider reference counting to be garbage collection, although it serves much the same purpose. 16:58 jonadab It doesn't have cycles, though. 16:58 muurkha Garbage collection researchers do. 16:58 jonadab Hmm, ok. 16:58 muurkha And a lot of Smalltalk VMs used it exclusively in the 80s 16:59 muurkha the JVM doesn't have a normal bytecode interpreter any more 16:59 muurkha what it calls the "interpreter" is actually a super dumb JIT compiler to native code 16:59 muurkha I mean the HotSpot JVM in the JDK 16:59 jonadab I have no experience with and little knowledge of Smalltalk, though of course I've heard about it. 16:59 muurkha and an awful lot of Java software in the early 02000s was running on Jazelle 17:00 muurkha which was ARM's "set a bit in the CPU and now JVM bytecode is your machine code" thing 17:00 jonadab I mean, a _lot_ of Java code was running on the browser plugin. 17:00 muurkha Jazelle is unfortunately not very well documented 17:01 muurkha yeah, the browser plugin was HotSpot-based from the mid-02000s, but it never really took off the way server-side Java, Dalvik, and client-side JS did 17:02 muurkha Jazelle only really implemented the simpler JVM bytecodes in hardware; it trapped to "millicode" implementations for the more complex instructions, similar to how Linux implements virtual memory 17:02 jonadab I'm glad browser-plugin Java has mostly faded into obscurity. 17:02 muurkha access the wrong page of memory and your program's execution is suspended for a few thousand cycles while the kernel fixes up your memory map 17:03 jonadab Although by the end, performance was no longer its problem. 17:03 muurkha Anyway, I think it's reasonable to say that C *now* is best used only for things like kernels and bootloaders. Wrong, but reasonable. 17:04 jonadab For new projects, I think I would lean that way. 17:04 muurkha But it's totally ahistorical to claim that that was what it was designed for. 17:04 jonadab But of course there are gazillions of existing projects written in it that need to be maintained for the forseeable. 17:05 jonadab I mean, it wasn't designed _exclusively_ for that stuff. But it was designed to be _able_ to do that stuff, I still think that's true. 17:06 jonadab Though it's possible there was less of a distinction between low-level and systems programming versus application development back then. Likely even. 17:06 muurkha Yes! But the mainstream belief at the time was that high-level languages like COBOL and PL/I were often too inefficient to write application software in, prior to the shift to C. 17:07 jonadab COBOL is too inefficient (with programmer time if nothing else) to write anything in. 17:07 muurkha That wasn't the argument, and it's a lot more efficient with programmer time than assembly! 17:07 muurkha "Systems programming" included things like compilers, which aren't inherently low-level, though you can certainly write them in low-level languages. 17:08 jonadab In principle, you _can_ write anything in a low level language, down to and including machine code. It's just a question of whether there's a better option. 17:17 muurkha Right, and I'm talking about what people generally thought in the 70s and early 80s, which is the period of time in question. It was a period of time when the opinion that writing application software in a high-level language rather than assembly was starting to become widespread. 17:18 muurkha Fred Brooks famously advocated this point of view in his book in 01975, but C didn't really displace assembly for that purpose until the late 80s. 17:18 muurkha In IBM mainframe shops, it never did; they were writing new applications code in assembly until the late 90s or early 2000s 17:19 muurkha Though IBM itself wrote DB2 in PL/M 17:20 muurkha and there have been *some* applications written in high-level languages as long as there have been interpreters; Brief Code is from 01949 17:23 muurkha So it's true that being able to write kernels and bootloaders in C was what C was designed for; but it was coming into that space from above, so to speak, a language that advanced and ambitious people might use for applications whose applicability could even extend down into the kernel space. Not the other way around, a language for kernels whose applicability could extend up into the applications 17:23 muurkha space. 17:23 muurkha The predecessor of C, B, compiled to an interpreted stack bytecode similar to the JVM bytecode, but untyped. 17:42 jonadab Hmm. 17:42 jonadab I knew of the existence of B but didn't know anything about it. 17:43 jonadab Other than its name (such as it is). 19:06 erle_on_ice what is it with everyone and codeberg? 19:06 muurkha erle_on_ice: did you see my notes yesterday about 3-D rendering algorithms? 19:06 erle_on_ice yes, probably 19:06 erle_on_ice i opened your page 19:06 erle_on_ice but on another computer 19:07 erle_on_ice i also realized that i should probably put a check in tga_encoder so it actually can not encode the evil images 19:07 erle_on_ice because right now it is trivial to do so 19:08 muurkha which page? 19:08 erle_on_ice the one with some javascript canvas rendering 19:08 erle_on_ice i am on a train, i will get the logs 19:11 erle_on_ice the irrlicht maintainer has already answered, but seems confused https://irrlicht.sourceforge.io/forum/viewtopic.php?t=52925 19:12 erle_on_ice i opened this page i think http://canonical.org/~kragen/sw/torus 19:12 muurkha aha, yes. that's the one that shows polygon rendering with flat shading (not scanline rendering, but a form easily adapted to it) 19:13 erle_on_ice lol everything looks cooler with trails 19:13 muurkha yes 19:13 muurkha but I think you might be more interested in the SDF raymarcher 19:13 muurkha which was another page of mine from that conversation you could have opened ;) 19:13 erle_on_ice muurkha i am not a smartie, but here, have some ghetto orbital mechanics http://daten.dieweltistgarnichtso.net/src/schwrkrft/ 19:13 erle_on_ice they have trails too 19:14 muurkha nice 19:14 erle_on_ice i will, probably 19:15 erle_on_ice well, i learned how fast you have to go to get to orbit in school in astronomy class 19:15 erle_on_ice you can see in the code that it is pretty stupid 19:15 erle_on_ice i once implemented point-gravity for minetest where you could orbit around 0,0,0 19:15 muurkha are you using a conservative numerical integrator? 19:16 hare_hare_yukai drugs is one hell of a drug 19:16 erle_on_ice muurkha http://daten.dieweltistgarnichtso.net/src/schwrkrft/js/n-body.js 19:16 muurkha ah, no, it's just forward Euler 19:17 muurkha do you know about leapfrog integration? it works a lot better for this kind of thing 19:17 erle_on_ice ah, you can spawn things in orbit i think 19:17 erle_on_ice i forgot 19:17 erle_on_ice i forgot how 19:17 erle_on_ice apparently i do not 19:17 erle_on_ice ah there is a button 19:18 muurkha with forward Euler even a simple two-body system orbiting in circles will gradually gain energy; leapfrog integration is symplectic 19:18 erle_on_ice the numeric instability in my simulation is off the charts 19:19 muurkha try leapfrog integration, it's easy and fun! 19:20 erle_on_ice everything is flying away 19:20 erle_on_ice i will look it up now 19:20 erle_on_ice minetest orbital mechanics when 19:21 muurkha it's probably the case that a random N-body system really *is* unstable and will eject rogue planets from time to time; that's not necessarily an error due to numerical instability 19:54 hare_hare_yukai sometimes life is... cock & ball torture 20:04 hare_hare_yukai erle_on_ice where can i see the musical? 20:05 erle_on_ice which musical 20:05 erle_on_ice this is like yuri on ice 20:06 hare_hare_yukai does that mean you are a lesbian on ice? 20:09 erle_on_ice hilariously, yuri on ice seems to be a series about boys https://en.wikipedia.org/wiki/Yuri_on_Ice 20:21 hare_hare_yukai >Poorly-socialized male-at-birth who was mostly raised by screens (TV, computer, etc.) rather than their parents, and therefore didn't properly develop a healthy social-identity. Due to having few or no friends or positive role-models, they instead form a strong parasocial relationship with female pornography subjects and/or female video game & 20:21 hare_hare_yukai cartoon characters, to the point that they end up identifying as a "transgender-lesbian". 20:21 erle_on_ice what 20:22 erle_on_ice are you researching the infamous incel-to-trans-catgirl pipeline? 20:22 hare_hare_yukai yes 20:22 erle_on_ice i think the reason for t4t relationships could also just be that the cis don't get it? like, shared experiences or so 20:23 erle_on_ice hare_hare_yukai did you get what you posted from? 20:24 hare_hare_yukai did i get what? 20:24 erle_on_ice oh lol 20:24 erle_on_ice urban dictionary: troon 20:25 erle_on_ice hare_hare_yukai go here instead http://ts.isnice.be/ 20:28 sfan5 while this channel does not have a strong on-topic requirement I feel you have ventured very far from it 20:29 muurkha sorry 21:20 erle_on_ice what's the issue people have with the subtree merge method? i have just seen this and it seems to work fine https://codeberg.org/mineclonia/mineclonia/pulls/580