Time Nick Message 00:00 MTDiscord The rust ide integration makes the confusion of modules 100x easier 00:15 Guest49 hi, I'm looking nether mod doc but i can't find where starts and ends the mapgen, someone knows? 02:23 Blockhead256 As funny as Keith the C++ mascot is, the source is Uncyclopedia. You know, the most reliable encyclopedia on the net 02:24 Blockhead256 I have to ask though, if you wanted the project(s) in question, Minetest-rust, or Minetest-go or whatever, to actually be associated with Minetest, 02:24 Blockhead256 wouldn't the most important thing be Lua API compatibility? 02:25 muurkha yeah 02:25 Blockhead256 I mean the first target is getting a 3D world with an avatar, nodes, blocks and chunks running, but after that.. Lua API right? 02:27 MTDiscord No, typed lua 02:27 MTDiscord Similar, but not the same 02:27 MTDiscord Already have the base of that atm 02:27 muurkha what's typed lua? 02:27 MTDiscord Luaujit 02:27 Blockhead256 right, you made a game for existing minetest recently didn't you? transpiled from typescript (that was you right?) 02:27 MTDiscord Yes 02:28 Blockhead256 I'm going to ask one of the obvious questions: isn't dynamic typing one of the stated "newbie" benefits to Lua? 02:28 muurkha the way we got Linux was Linus not doing a megaproject: "Hello everybody out there using minix - 02:29 MTDiscord It's dangerous 02:29 MTDiscord Had the same issue in common lisp 02:29 muurkha "I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat" 02:29 MTDiscord https://github.com/jordan4ibanez/minetest-rust/blob/master/api/__internal.lua typed lua 02:29 muurkha LuaJIT? 02:29 MTDiscord LuauJIT 02:29 muurkha oh, I though that was a typo 02:29 muurkha sorry 02:30 MTDiscord It's okay, I thought it was a typo at first too 02:30 Blockhead256 that's most peoples first reaction, good branding lul 02:30 muurkha Blockhead256: I think it's plausible that dynamic typing makes languages more approachable for newbies 02:30 muurkha but I think the opposite is also plausible 02:30 Blockhead256 but isn't the project (which is from Roblox Corp btw) just called Luau? 02:30 MTDiscord It's open source 02:31 Blockhead256 I'm not calling that into question, just I didn't think it had "JIT" in the name 02:31 MTDiscord See mlua's luaujit implementation https://github.com/khvzak/mlua 02:31 MTDiscord mlua is wild 02:32 muurkha did they fix the problem where Lua indexes arrays from 1? 02:32 MTDiscord I think that's a lua "feature" 02:32 muurkha how about making variables global by default instead of local? 02:32 Blockhead256 muurkha: they are...... 02:33 muurkha I know, that's the problem 02:33 MTDiscord That's another base lua "feature" 02:33 muurkha to fix it you'd make them local by default 02:33 MTDiscord you get an error in linting if you don't localize them 02:33 muurkha yeah but dynamic typing is also a base lua feature 02:33 Blockhead256 ..then need to add a global keyword and retrofit all existing code to use that 02:34 Blockhead256 jordan4ibanez: I'm trying to pick apart your train of thought here. So you started looking into Lua runtimes with type support and came across mlua, 02:34 MTDiscord muurkha: there is also a secret, typing, like TS -> JS, is optional 02:34 muurkha did they fix the problem where accessing a nonexistent variable gives you nil instead of raising an error? 02:34 Blockhead256 liked it because of the feature set size and because of Rust, and now you decided the whole engine should go Rust? 02:34 MTDiscord I already wrote a minetest/minecraft like using mlua as the base 02:34 muurkha oh, I see. so compatibility with existing Lua 5.1 code is a design goal? 02:35 Blockhead256 Consider the following: The Linux kernel has Rust module support nowadays, but it's not getting re-written entirely in that langauge 02:35 MTDiscord I wanted to use it again, but I found out it has now introduced typed lua, and it is amazing 02:35 muurkha aha, yes: 02:35 muurkha > Whenever possible, Luau aims to be backwards-compatible with Lua 5.1 and at the same time to incorporate features from later revisions of Lua. However, Luau is not a full superset of later versions of Lua - we do not always agree with Lua design decisions, and have different use cases and constraints. All post-5.1 Lua features, along with their support status in Luau, are documented here. 02:36 muurkha jordan4ibanez: so what's the type system like? it sounds like you like it 02:36 MTDiscord It feels like someone combined the base featureset of lua 5.1 with typescript typings 02:36 MTDiscord The typescript typings has allowed me to integrate a full pseudo operating system as a minetest game 02:37 MTDiscord without that, I can guarantee I would have not even attempted that 02:37 Mantar I have to say, if you build a "minetest but in rust" and I have to rewrite all of Exile to be able to use it, that's a non-starter for me. I'd stay with standard Minetest. 02:37 muurkha they support typescript things like using the value of one property of an object to decide what other properties should exist? 02:38 muurkha jordan4ibanez: to be fair people *have* written operating systems in dynamically-typed Lisps 02:39 Blockhead256 define "operating system" 02:39 muurkha I was thinking of Symbolics Genera 02:39 MTDiscord I can't really explain this insanity, you must try it for yourself, it is quite silly https://github.com/jordan4ibanez/mineos 02:40 MTDiscord Do not run boom for too long, minetest has a memory leak 02:40 Mantar that is insane, I like the cut of your jib. 02:42 Blockhead256 rustc --version -> 1.63.0 02:42 Blockhead256 hmm is that new enough to compile it I wonder? 02:42 muurkha oh, you wrote mineos with TypeScript and TypeScriptToLua, not Luau 02:42 muurkha is Luau's type system as powerful as TS's? 02:43 MTDiscord It's pretty powerful, no classes though, I'm sure you could get around that with some tricks 02:43 MTDiscord I was going to make the base use TS but that incurs a 10+ minute compilation time with deno 02:43 Blockhead256 classes? just use metatables :) (please no, performance...) 02:44 Blockhead256 aaand nope I need rustc 1.71.. thanks Debian 02:44 Blockhead256 say what you want about Minetest C++, you don't need a newer compiler than Debian 12 has to ship it.. 02:44 Blockhead256 s/to ship it/to compile it 02:46 MTDiscord I just use the rust install script on the website because I always like to keep it updated 02:57 muurkha it seems like Luau doesn't have JIT: https://luau-lang.org/performance 02:58 muurkha "Luau eventually plans to implement JIT on some platforms, but this is subject to careful memory safety analysis and is likely to not be deployed for client-side scripts, as the extra risk involved in JITs is much more pronounced when it may affect players." 03:00 MTDiscord Well you'll have to ask mlua how they did it then 03:00 muurkha mlua says they support both LuaJIT and Luau, but presumably not at the same time 03:00 MTDiscord Look into the options, luau-jit backend 03:02 muurkha where? 03:03 MTDiscord https://github.com/khvzak/mlua#feature-flags 03:04 MTDiscord There's that vec4 one, I'm not really sure what that's referring to. Maybe avx512? They need to improve that description 03:04 muurkha oh hey, look at that 03:04 muurkha you're right 03:04 muurkha that's Luau with a JIT backend 03:05 MTDiscord I would like to meet them one day and give them a firm handshake 03:08 MTDiscord It's quite neat yes, in the .vscode file I have already pre-configured everything. Disabling roblox features was the major one, the rest are just QOL fluff 07:34 MTDiscord A game needs a game.conf. It needs a mods folder with folders that contains mods. The game needs at least one mod to function. Each mod needs a main.lua (I'm just throwing that one in there because it's cooler than init.lua). Each mod needs a mod.conf. Is there anything I'm missing for the base of a mod? 07:49 MTDiscord So this is basically part 1 https://github.com/jordan4ibanez/minetest-rust/blob/master/src/game/lua_engine/lua_file_helpers.rs#L166 where we can check the entire game's skeleton in one shot 07:52 DeepThgt https://www.theguardian.com/us-news/2023/dec/14/georgia-teacher-arrested-threatening-student-israel-flag 07:52 DeepThgt oops 07:52 DeepThgt sorry 11:32 Blockhead256 Is there any other existing polyfill mod for Minetest? https://github.com/Montandalar/bhpolyfill 11:32 Blockhead256 do you think polyfill are a good idea y/n? 11:42 MTDiscord I think we should let the old versions rest in peace my friend 11:42 MTDiscord They were here, they did their job, gave us good memories, but they're out of date 11:44 Blockhead256 that's nice but not everybody is in control of their software stack to be able to update to the latest and greatest 11:45 Blockhead256 that's exactly why polyfills exist for browsers, though maybe lesser than they used to be since the m$ internet exploder days 11:46 MTDiscord Not even the latest and greatest, just the stable release 11:46 MTDiscord debian users will do anything except updating their precious outdated software 11:46 Blockhead256 for instance, imagine Minetest for education. As the IT guy, I'd much prefer to just use whatever version is on Ubuntu than manage my own Minetest package 11:47 MTDiscord But as for the idea in general, where does the polyfill cut off? 11:47 Blockhead256 the benefit of stable software is it's set and forget 11:47 Blockhead256 well with Minetest, there are just inherent limits to what can be done with Lua mods, so I'd say it cuts off where it's impossible to do with Lua 11:49 MTDiscord Well this is kind of what we're stepping into, there have been quite a lot of earth shattering changes from 5.7-5.8. But then we get into a new realm where you'd have to polyfill into a polyfill and do a "lua compilation flag" to check the version number for polyfills, and then that can become a linter headache 11:49 MTDiscord I wonder how risky just transplating builtin would be 11:49 MTDiscord I like that insanity 11:50 Blockhead256 would work fine until it crashes because the C++ environment is missing something 11:50 MTDiscord I think in principle, polyfills are a decent compromise. A few modlib utils have developed into de-facto polyfills, like modlib.minetest.encode_png. 11:51 Blockhead256 jordan4ibanez: I hadn't thought far enough in advance about incremental changes to a function with polyfills 11:51 Blockhead256 only "is this function available or not? if not, here's the definition" 11:51 MTDiscord you can't polyfill the "earth shattering changes" anyways 11:51 MTDiscord I say: Don't listen to anything we're saying at all and follow your dreams 11:52 MTDiscord all you can polyfill are those teensy weensy convenience lua thingies, and since that isn't too much work, it doesn't seem unreasonable, given that it can be a cheap ticket to making mods compatible with older Minetest versions 11:52 Blockhead256 Since Debian was mentioned: Friends don't let friends use the Minetest mods packaged in Debian 11:52 MTDiscord Wait what is the lowest version you're targeting? 11:52 MTDiscord want me to deal you some Minetest .debs with a recent LuaJIT? 11:53 MTDiscord some recent LuaJIT .debs actually, but then you can build a proper Minetest yourself 11:53 Blockhead256 oh I'm not the person in need of recent .debs, I built 5.8.0 myself the day it came out or the next thereabouts, and I have built LuaJIT before 11:54 Blockhead256 the scenario I imagine is "rushed sysadmin who isn't prepared to build for source". What's the most reliable but up to date version? 11:55 Blockhead256 probably the Ubuntu PPA 11:55 MTDiscord 20.04 5.1.1 11:55 MTDiscord I'm sweating reading that, there have been a lot of security patches since then 11:56 Blockhead256 anyway my personal opinion is if you're supporting anything lower than 5.0 you're actually mentally and/or doing retro computing 11:56 Blockhead256 s/mentally/mental 11:56 Blockhead256 but 5.2 seems like a pretty decent minimum. I think Debian 11 had that or something. And that's still lowballing it 11:56 MTDiscord It appears that if the user is running https://packages.ubuntu.com/search?keywords=minetest up to date ubuntu they get 5.6.1, someone better talk to the ubuntu people 11:57 Blockhead256 I'm no expert, haven't got much experience with old client version problems, just my intuition 11:57 MTDiscord buster = 0.4.17, bullseye = 5.3.0, bookwork = 5.6.1 11:57 Blockhead256 bookworm 11:58 MTDiscord So that means someone better talk to the debian peoples 11:58 MTDiscord Even sid is using 5.6.1 12:00 MTDiscord So this means, you'll have to look into a github version diff of added features from 5.6.1 to 5.8.0 and take some notes 12:00 MTDiscord And then you can probably just duct tape things together, I'm sure no one will notice though 12:00 Blockhead256 github diff? nah just run your mods and wait until it breaks 12:00 MTDiscord The unspeakable horrors 12:01 Blockhead256 my development approach for polyfills is JAUNI: Just after you need it. If someone's game crashes I'll add a polyfill 12:01 MTDiscord LuaJAT 12:03 Blockhead256 anyway server issues aren't that big in my mind. The headscratcher for me is how rotating selection boxes seemingly can't be backwards-compatible with old clients 12:03 MTDiscord You could try to run literally every command documented in the minetest api.md 12:03 Blockhead256 I ideally want all the trains to act like this https://www.youtube.com/watch?v=2GpfXWYeS2g but I don't want the massive selection boxes not to be perpendicular the train on old clients.. 12:04 MTDiscord we have rotating selection boxes now? 12:04 Blockhead256 since 5.7 12:04 MTDiscord I've been gone for a bit eh? 12:05 Blockhead256 oh yah for sure bud 12:05 MTDiscord That is a pure in engine feature, there is quite literally no way to emulate that unless you find a way to hijack the executable and inject the code directly into it by some miracle 12:06 Blockhead256 I love it. Who wants to find an RCE for all clients <5.6 so we can patch the client at runtime? 12:06 Blockhead256 <5.7, 5.6 or earlier.. 12:07 Blockhead256 now *that* would hopefully get patched even on the stable distros. 12:08 MTDiscord That train's simulation is simply a thing of beauty 12:08 Blockhead256 Also.. why do I get ads on my channel? It ain't monetised.. 12:08 MTDiscord You get ads after XY views, youtube is a vampire 12:09 MTDiscord We need that simulation stability patch so your next video on trains is ultra smooth in singleplayer 12:09 MTDiscord Not mine of course, that was just showing how to fix it, but the one everyone was like "yeeeah how about this one instead" 12:10 Blockhead256 would that solve the way the train lurches just before coming to a complete stop? 12:12 MTDiscord Yeah, your time delta is going up to 0.3 when you stop moving 12:12 MTDiscord This is why it's jittery when you're still 15:00 json I wonder what games will be released at the end of the year? 16:32 MTDiscord I expect the games that will be released to be rather unexpected 17:36 Mantar jordan: current debian stable release is bookworm, and that has Minetest 5.6.1 17:37 rubenwardy 1.5 years old. Postivitely futuristic for debian's standards! 17:38 MTDiscord round of applause to debian for finally having updated past 0.4.17 17:50 Mantar they were on 5.3.0 for years before that, 0.4.17 was like two stable releases ago 21:59 Borley Is there a way to create world boundaries? Like a wall that is impassable? 22:04 Mantar yes, undiggable nodes are easy enough to do 22:05 Mantar in Exile we have an invisible barrier generated as an ore sheet at y=9000,to cordon off the upper region 22:05 Borley Do you handle that through a mod? Or is that a server config option? 22:07 Mantar it's a mod thing 22:07 Mantar you need some code to generate the barrier somehow 22:07 Baytuch| By the way, Minetest have limits on ranges from −30912 to 30927 to X, Y, Z koordenates 22:08 Baytuch| Mantar, you update your server to 5.8 or more? 22:08 MTDiscord you can shrink a world with mapgen_limit 22:09 Mantar I think we're still on 5.7.0, I'd have to check 22:09 Borley I set that, it seems to prevent creation of new blocks beyond the specified range.