<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:00:57] *** Joins: Hawk777 (~Hawk777@2605:1700:81c9:9c00:7ebb:d5a:b6a:f094) Hawk777
L2[00:08:33] ⇦ Quits: TPG24 (~ThePiGuy2@80.177.184.97) (Read error: Connection reset by peer)
L3[00:37:14] *** Joins: ping (~coo@pigeon.pet) ping
L4[00:56:39] ⇦ Quits: jackie (~jackie@banana-new.kilobyte22.de) (Ping timeout: 201 seconds)
L5[00:56:48] ⇦ Quits: kilobyte (~kilobyte2@banana-new.kilobyte22.de) (Ping timeout: 195 seconds)
L6[00:57:01] *** Joins: jackie (~jackie@banana-new.kilobyte22.de) jackie
L7[00:57:01] zsh sets mode: +v on jackie
L8[00:57:02] *** Joins: kilobyte (~kilobyte2@banana-new.kilobyte22.de) Stiepen
L9[00:57:02] zsh sets mode: +v on kilobyte
L10[00:57:19] <Corded> > <pay​onel> what are all those HUD things from? and the floating labels…
L11[00:57:19] <Re​nno> a companion mod
L12[00:57:38] <Corded> > <pay​onel> first pic of my bot-golem
L13[00:57:38] <Re​nno> hah those are cool, idk why it reminds me of ben10
L14[00:57:43] <pay​onel> i want to see if i can port a heavy oc project to modcomp
L15[00:58:14] <pay​onel> your work would be a pretty heavy test, and i bet i have some missing features. e.g. bot golem doesnt craft yet
L16[00:58:30] <Re​nno> how similar is it to OC?
L17[00:59:23] <pay​onel> it's hard to explain. it's completely different, but built with the same motivations
L18[00:59:49] <ping> hiiii :3c
L19[00:59:52] <pay​onel> i made some changes to how devices load, and how you access them from the computer
L20[01:00:15] <pay​onel> and there is no pullSignal. there are hardware interrupts. so no yielding anymore
L21[01:00:28] <Re​nno> how does that work?
L22[01:01:18] <pay​onel> i did my own port of lua to java, never liked any of the ports i found. this was first ported to c++ to respect the lua source, but to prepare it for java port. then did the java port, kept all features
L23[01:02:09] <pay​onel> then i built the "freeze" budget system - i can freeze the lua vm at any point, in any code path. and thaw it later. i can also update objects in the lua vm state while frozen
L24[01:02:44] <pay​onel> then i built styx - a persistence library - which is compatible with freeze. so i can serialize (save) a frozen, or suspended, lua state. and unserialize (load) it back later
L25[01:03:04] <pay​onel> all this in c++ and java. but in java so the minecraft runtime is not loading binaries, just direct java
L26[01:04:26] <pay​onel> so now, i can run the machines in game, and i freeze them on a scheduler (<1ms i think i'm testing with). so i have hardware interrupts, and the "firmware" layer between your lua machine and the java host, the firmware reads devices that interrupt and store that data (via callback) back into the lua runtime
L27[01:04:56] <pay​onel> so your lua runtime is getting io from devices without any "interruption" to your code (pun)
L28[01:05:17] <pay​onel> and, most of the time, you get device data much faster than a server tick
L29[01:05:54] <pay​onel> bc it is async, and the firmware layer just buffers it until the lua vm thread is able to hit a freeze call (which is very fast)
L30[01:08:37] <Spider​EveryOS> %tonkout
L31[01:08:38] <MichiBot> Yippee! S​piderEveryOS! You beat F​orecaster's previous record of 5h 34m 29s (By 1h 22m 33s)! I hope you're happy!
L32[01:08:38] <MichiBot> S​piderEveryOS has stolen the tonkout! Tonk has been reset! They gained 0.006 tonk points! plus 0.005 bonus points for consecutive hours! (Reduced to 50% because stealing) Current score: 3.56567703. Position #1
L33[01:09:19] <pay​onel> technically, you can make blocking calls to read device data. just saying when the data is available, that won't be a server tick
L34[01:09:19] <pay​onel> in your lua runtime, you can call tell the firmware layer that you'd like to be frozen - once frozen, the firmware updates device data that arrived asynchronously - and then you thaw again and check. so that request to freeze could be very fast, no server tick. it's similar to a real world syscall
L35[01:10:20] <pay​onel> anyways. all of this is hidden from user code. only important if someone is writing their own os. but mcos is robust
L36[01:13:28] <pay​onel> https://discordembeds.pc-logix.com/live/1563722127172051034/Screencast_from_2026-10-24_18-13-08.webm
L37[01:14:08] <pay​onel> https://discordembeds.pc-logix.com/live/1563722295594196992/image.png
L38[01:14:16] <pay​onel> that's how the tier 3 screen renders
L39[03:42:58] <TransGal48722> ooo sixels!
L40[04:48:38] ⇦ Quits: Izzy (~izzy@210.1.201.103) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
L41[04:58:35] ⇨ Joins: YetAnotherPerson (~YetAnothe@166.199.185.33)
L42[04:58:44] <YetAnotherPerson> hi
L43[04:58:53] <Mic​hiyo> Hello
L44[04:59:08] <YetAnotherPerson> Finally someone responds
L45[04:59:34] <Mic​hiyo> Well, don't worry after that response I won't again.
L46[04:59:45] <YetAnotherPerson> Why..?
L47[05:00:04] <YetAnotherPerson> I have been going to different servers for like 1 hour
L48[05:00:10] * YetAnotherPerson .
L49[05:01:05] *** YetAnotherPerson is now known as test
L50[05:04:16] <Mic​hiyo> Because folks here are usually doing other things.
L51[05:04:27] ⇦ Quits: test (~YetAnothe@166.199.185.33) (Read error: Connection reset by peer)
L52[05:04:31] <Mic​hiyo> K.
L53[05:12:17] <Forec​aster> and I was just about to ask a philosophical question for the ages!
L54[05:17:46] <Corded> > <pay​onel>
L55[05:17:46] <Re​nno> very interesting
L56[05:18:01] <Re​nno> seems to be largely free of many of the limiations of OC?
L57[05:50:53] *** Joins: Izzy (~izzy@210.1.201.103) ShadowKatStudios
L58[05:55:00] ⇦ Quits: Izzy (~izzy@210.1.201.103) (Ping timeout: 195 seconds)
L59[06:02:14] *** Joins: Izzy (~izzy@210.1.201.103) ShadowKatStudios
L60[06:09:58] <Forec​aster> Stars are supposed to look like this right? https://discordembeds.pc-logix.com/live/1563796742338777198/GIF_2026-10-25_07-09-15.gif
L61[06:11:10] <Forec​aster> Still better than Star Citizen at least
L62[06:18:48] ⇦ Quits: Izzy (~izzy@210.1.201.103) (Ping timeout: 195 seconds)
L63[06:35:38] *** Joins: Izzy (~izzy@210.1.201.103) ShadowKatStudios
L64[06:53:08] <Va​ur> %tonk
L65[06:53:09] <MichiBot> Wild! V​aur! You beat S​piderEveryOS's previous record of 0s (By 5h 44m 31s)! I hope you're happy!
L66[06:53:09] <MichiBot> Vaur's new record is 5h 44m 31s! Vaur also gained 0.00574 tonk points for stealing the tonk. Position #3. Need 0.33075237 more points to pass F​orecaster!
L67[07:03:56] *** Joins: Vexatos (~Vexatos@2001:4647:af75:0:bb92:23a7:e33c:4a06) Vexatos
L68[07:03:56] zsh sets mode: +v on Vexatos
L69[08:20:07] <Corded> > <Ocawes​ome101> What features would you want to see?
L70[08:20:07] <Redston​eParkour> alright found the first bug: closing minitel sockets doesn't work (it uses `event.ignore`)
L71[08:32:39] <Redston​eParkour> besides that it's a bit different but seems to work nicely
L72[08:33:20] <Redston​eParkour> though there's no serialization library
L73[08:33:50] <Redston​eParkour> (so i had to bring over openos')
L74[08:37:02] <Izzy> The PsychOS one is more compact, from memory
L75[08:42:31] ⇦ Quits: Hawk777 (~Hawk777@2605:1700:81c9:9c00:7ebb:d5a:b6a:f094) (Quit: Leaving.)
L76[08:44:06] <Redston​eParkour> also uhhhhh i've been looking at its minitel service and what's the `pid` local doing?
L77[09:07:15] <Redston​eParkour> and is it intentional that dead threads aren't cleaned up?
L78[09:08:40] <Redston​eParkour> alsooo `minitel.flisten`'s handler should really run in a thread
L79[09:09:47] <Corded> > <Re​nno> seems to be largely free of many of the limiations of OC?
L80[09:09:47] <pay​onel> yes - it only took me 5 years 😅
L81[09:15:48] <Corded> > <Redston​eParkour> alsooo `minitel.flisten`'s handler should really run in a t…
L82[09:15:49] <Redston​eParkour> and when a socket receives `sclose` it calls `sock:close()` which blocks and is thus bad
L83[09:28:58] <Corded> > <Redston​eParkour> and is it intentional that dead threads aren't cleaned up?
L84[09:28:58] <Redston​eParkour> well i suppose i can clean them up myself
L85[09:47:54] <Redston​eParkour> ok yeah i'm starting to like ulos3 more and more
L86[09:54:12] <Izzy> I am gonna steal that shell >:3
L87[10:51:23] * Amanda yawns a big toofy yawn
L88[10:51:32] * Amanda meows and looks around
L89[10:51:46] <pay​onel> hi amanda
L90[10:51:51] * Amanda orders MichiBot some %soup
L91[10:51:52] <MichiBot> Waiter!! Waiter!! There's 2872.9 grams of alcohol in my soup!
L92[10:52:53] <Amanda> Meow meow, payo
L93[11:04:49] ⇦ Quits: lily (~Lily@58.84.227.106) (Remote host closed the connection)
L94[11:11:50] * Amanda loafs stop Izzy's bed pillow, meows at her about the dropbears she heard so much about, who turned out to be nice people
L95[11:22:58] <Amanda> %splash Forecaster with mutable yellow potion
L96[11:22:59] <MichiBot> You fling a mutable yellow potion (New!) that splashes onto Forecaster. Forecaster turns into a rock squirrel until Sozin's Comet returns.
L97[11:23:07] <Forec​aster> D:<
L98[11:23:19] * Amanda chitters at fore from the window
L99[11:27:41] <Redston​eParkour> oh wait huh ulos3 does have a serialize function
L100[11:27:44] <Redston​eParkour> didn't notice
L101[11:30:24] <Redston​eParkour> though it is broken as it's `_ENV` doesn't provide `math.huge`
L102[11:34:10] <Redston​eParkour> aaand it escapes newlines by way of `\<newline>` (instead of `\n`) which breaks some of my things
L103[11:40:30] <Amanda> That sounds like a bug, because I don't think Lua accepts newlines that way?
L104[11:40:36] <Amanda> At least not in "" strings
L105[11:41:20] <Amanda> Could be a constant with \\n instead of \n
L106[11:41:42] <RedstoneParkour> no it's fine by itself
L107[11:42:37] <Amanda> %choose flake?
L108[11:42:38] <MichiBot> A nearby lamp turns red.
L109[11:42:43] <Amanda> Fiiineee
L110[11:43:01] <vft​dan> If I create an OpenOS thread and immediately suspend it, the thread function will not start running, right?
L111[11:43:22] <RedstoneParkour> the problem is that i split the socket stream by newlines to get a stream of messages
L112[11:57:45] <RedstoneParkour> vftdan: nope, aiui in openos threads start running on creation
L113[12:10:08] <vft​dan> :thonk: if a something is joining a thread, and this thread is suspended, the thread is apparently will be killed
L114[12:18:52] <vft​dan> Also, can I join a thread in a way, so that if the parent thread is killed, the child thread is automatically killed too?
L115[12:19:27] <Amanda> threads are attached to processes, not threads
L116[12:19:36] <Amanda> IIRC
L117[12:20:17] <RedstoneParkour> i mean you could listen for the `thread_exit` signal, check if the parent is alive and if not kill the child threads
L118[12:20:26] <vft​dan> Right. But is there no way to specify how `box_thread:kill()` is propagated?
L119[12:21:16] <vft​dan> The child may be running a code I don't control
L120[12:21:38] <RedstoneParkour> should still work
L121[12:21:56] <RedstoneParkour> well actually
L122[12:22:06] <vft​dan> Ah, right, not pull a signal, but register an event handler
L123[12:22:09] <RedstoneParkour> you'd spawn a thread that pulls for thread_exit signals
L124[12:22:33] <RedstoneParkour> don't register an event handler because those are tied to the thread (stupidly)
L125[12:22:49] <RedstoneParkour> unless you can tie it to the child thread
L126[12:24:35] <vft​dan> All threads are processes, but not all processes are threads, right? In that way, can I attach a thread to another thread? How will they behave then?
L127[12:24:46] <RedstoneParkour> uh no?
L128[12:24:59] <RedstoneParkour> processes hold some amount of threads
L129[12:25:15] <RedstoneParkour> aiui at least
L130[12:25:20] <Amanda> threads aren't processes in OpeNOS
L131[12:26:08] <Corded> > <vft​dan>
L132[12:26:08] <vft​dan> ^?
L133[12:26:24] <RedstoneParkour> that did not bridge at all great
L134[12:26:30] <Amanda> Whatever that was quoting didn't bridge
L135[12:26:38] <RedstoneParkour> ah its an image
L136[12:27:20] <vft​dan> Ah, replies to images are not handled by the bridge apparently
L137[12:27:40] <Redston​eParkour> reupload lolol https://discordembeds.pc-logix.com/live/1563891796428464279/image.webp
L138[12:32:05] <RedstoneParkour> huh now i'm confused
L139[12:32:14] <RedstoneParkour> because what you're saying seems accurate vftdan
L140[12:32:23] <RedstoneParkour> i suppose try it and see?
L141[12:38:37] <Amanda> I feel like there's some confusion here. in lua, the type() result of a coroutine is "thread" and the openos thread api was added much later. AIUI processes own threads, and processes aren't the thread-api "thread"s
L142[12:39:28] <Amanda> They are, however, coroutunes, and thus lua "thread"s
L143[12:40:55] <RedstoneParkour> well Amanda what confuses me is that thread.create calls createCoroutineStack which /seems/ to create a process
L144[12:41:53] <Amanda> ONly if passed a function.
L145[12:42:25] <RedstoneParkour> everyone passes a function though right?
L146[12:43:31] <RedstoneParkour> yeah https://ocdoc.cil.li/api:thread#thread_api1 says to pass a function even
L147[12:44:09] ⇦ Quits: Izzy (~izzy@210.1.201.103) (Ping timeout: 195 seconds)
L148[12:45:20] <Amanda> Oh. https://github.com/PC-Logix/OpenComputers/blob/main-MC1.21.1/src/main/resources/data/opencomputers/opencomputers/loot_disks/openos/lib/thread.lua#L157
L149[12:47:06] <Amanda> createCoroutineStack is called with a lambda that handles the event pump of the thread
L150[12:48:12] <Amanda> I loaf mistaken
L151[12:49:28] <RedstoneParkour> but still iirc threads dont show up in the output of ps...
L152[12:50:14] <Amanda> Because ps filters them into their parent process https://github.com/PC-Logix/OpenComputers/blob/main-MC1.21.1/src/main/resources/data/opencomputers/opencomputers/loot_disks/openos/bin/ps.lua
L153[12:50:25] <RedstoneParkour> of course...
L154[12:50:29] <Amanda> if i'm reading that right
L155[12:52:14] <Flamei​ngsoul> %tonk
L156[12:52:14] <MichiBot> Geez! F​lameingsoul! You beat V​aur's previous record of 5h 44m 31s (By 14m 34s)! I hope you're happy!
L157[12:52:15] <MichiBot> Flameingsoul's new record is 5h 59m 5s! Flameingsoul also gained 0.00144 (0.00024 x 6) tonk points for stealing the tonk. Position #4. Need 2.0838603 more points to pass V​aur!
L158[12:57:33] <vft​dan> Non-detached threads seem to continue running even after a program finishes?? https://discordembeds.pc-logix.com/live/1563899314970038283/image.png
L159[12:57:59] <Amanda> detached threads are just threads attached to init, I remember that much from my poking
L160[12:58:11] <RedstoneParkour> ^
L161[12:58:39] <Amanda> Which is why detach didn't work right from rc.d services
L162[12:59:12] <Amanda> The "am I attaching to the same thing" code was busted
L163[13:00:33] <vft​dan> Oh, but when I ran `:kill` on the parent thread, the child thread doesn't see, to actually resume https://discordembeds.pc-logix.com/live/1563900069818802287/image.png
L164[13:01:38] <Amanda> How are you getting the process?
L165[13:01:56] <Amanda> Because process.info returns a new table every time, you have to compare off the data field of it
L166[13:02:05] <vft​dan> `process.findProcess()`
L167[13:02:15] <Amanda> That was what was wrong with detaching in init
L168[13:05:07] <vft​dan> Yeah, the child thread seems to forever report running, but is never actually resumed, it seems https://discordembeds.pc-logix.com/live/1563901220543012975/image.png https://discordembeds.pc-logix.com/live/1563901220543012975/thread-tree-test.lua
L169[13:07:27] *** Joins: Izzy (~izzy@210.1.201.103) ShadowKatStudios
L170[13:12:41] <vft​dan> Oh, thread suspension seems to effectively propagate down too, good https://discordembeds.pc-logix.com/live/1563903125264535562/image.png
L171[13:15:29] <Amanda> Worth noting the process list is a weak table, so if you're keeping a process somewhere, it'll never get cleaned up
L172[13:15:38] <Amanda> The memory that is
L173[13:16:10] <vft​dan> So i. g. this should be fine to join-or-run-in-foreground a task with minimal changes on whether it was started in background or not https://discordembeds.pc-logix.com/live/1563904001681006615/image.png
L174[13:16:17] <RedstoneParkour> also worth noting that from my experience detached threads never get cleaned up
L175[13:17:26] <RedstoneParkour> think so yeah
L176[13:17:36] <RedstoneParkour> as in that should be fine
L177[13:18:01] ⇦ Quits: Izzy (~izzy@210.1.201.103) (Ping timeout: 194 seconds)
L178[13:22:05] <vft​dan> (Context: I want my recipe scheduler to run multiple steps at the same time if step inputs are not dependent on earlier step outputs)
L179[13:22:13] *** Joins: Izzy (~izzy@210.1.201.103) ShadowKatStudios
L180[13:22:31] ⇦ Quits: Izzy (~izzy@210.1.201.103) (Client Quit)
L181[13:23:55] <vft​dan> Tho if I simultaneously run two steps, both of which use an alloy smelter, I risk mixing up the recipes. How should I encode the information to prevent such situations :thonk:
L182[13:26:57] <RedstoneParkour> what i would do is have a seperate service handle allocation of the machines i guess
L183[13:29:39] *** Joins: Izzy (~izzy@210.1.201.103) ShadowKatStudios
L184[13:33:02] <vft​dan> What I am thinking would be nice to have is an alloy smelter with a dedicated computer, with a transposer that is the only way to input items into the smelter, to ensure that incomplete or mixed recipes don't go inside it
L185[13:36:20] <RedstoneParkour> how would you keep track of different recipes though?
L186[13:36:39] <RedstoneParkour> as in when two steps push different recipes to one alloy smelter
L187[13:41:21] <Corded> > <Redston​eParkour> alright found the first bug: closing minitel sockets doesn'…
L188[13:41:22] <Ocawes​ome101> Noted
L189[13:41:50] <Corded> > <Redston​eParkour> also uhhhhh i've been looking at its minitel service and wh…
L190[13:41:50] <Ocawes​ome101> I think that's a holdover from PaychOS
L191[13:41:50] <RedstoneParkour> there's a PR
L192[13:42:29] <Corded> > <Redston​eParkour> and is it intentional that dead threads aren't cleaned up?
L193[13:42:29] <Ocawes​ome101> Yeah parent threads are supposed to do that. I think `rc` will clean them up if the parent thread doesn't but I could be misremembering.
L194[13:42:35] <Corded> > <Redston​eParkour> alsooo `minitel.flisten`'s handler should really run in a t…
L195[13:42:35] <Ocawes​ome101> Noted
L196[13:43:22] <RedstoneParkour> oh yeah its a holdover from psychos
L197[13:46:15] <RedstoneParkour> and ocawesome a service's thread does get cleaned up on exit but threads spawned from it don't
L198[13:54:53] <Corded> > <vft​dan> Tho if I simultaneously run two steps, both of which use an…
L199[13:54:54] <vft​dan> On the configuration side, ig this is the most sensible place to request mutual exclusion. Now, how should it be handled in the planning logic and/or delivery callback :thonk: https://discordembeds.pc-logix.com/live/1563913746487713892/image.png
L200[13:58:35] <Corded> > <Redston​eParkour> how would you keep track of different recipes though?
L201[13:58:35] <vft​dan> With a dedicated computer, I would tell it "input (1 gold ingot, 1 redstone dust, 1 glowstone dust) 256 times" and also "(4 glowstone dust, 4 quartz gems) 128 times", and the computer would make sure only whole inputs are sent
L202[13:59:11] <RedstoneParkour> oh yeah that works
L203[14:15:09] <Corded> > <Redston​eParkour> and ocawesome a service's thread does get cleaned up on exi…
L204[14:15:09] <Ocawes​ome101> Noted, will investigate later and also merge your PR probably
L205[15:12:17] <Redston​eParkour> oh also, maybe it'd be nice to have the `\x14c` command clamp the returned position so it can be used to detect the screen size
L206[15:18:09] <Redston​eParkour> and apparently `\x14cg` needs me to press enter?
L207[15:18:13] <Redston​eParkour> unless i'm doing something wrong
L208[15:19:21] <Redston​eParkour> oh huh the read stops on `\r` but a `\n` is sent at the end
L209[15:22:44] <RedstoneParkour> oh nevermind the sent `\n` is eaten
L210[15:23:18] <RedstoneParkour> in lib/term.lua, line 164, as `.` does not match `\n`
L211[15:24:15] <RedstoneParkour> wait no it does?
L212[15:24:17] <RedstoneParkour> huh
L213[15:25:41] <RedstoneParkour> ah it enters `\n` in the input buffer yet a number is expected
L214[15:30:09] <Ocawes​ome101> right yeah terminal keyboard input is a little bit ... strange.
L215[15:30:19] <Ocawes​ome101> you should be able to read the response characters with `term.readKey()`
L216[15:34:19] <RedstoneParkour> oh and \x14c also acts as if g is always given apparently
L217[15:34:22] <RedstoneParkour> still figuring out why
L218[15:37:12] *** Joins: Hawk777 (~Hawk777@2605:1700:81c9:9c00:449:ce2a:c706:db87) Hawk777
L219[15:37:48] <Lizzy> FYI The forums are back and now not several years behind on patches
L220[15:38:02] <Forec​aster> for now!
L221[15:38:41] <RedstoneParkour> alright so the issues seem to be that it checks `if g` and not `if g ~= ""` and that returning `chunk:sub(len+1)` is just one character too much (it should be `chunk:sub(len)`)
L222[15:39:13] <Lizzy> @Forecaster well yes, it's telling me there's a major update and the current version we're on will be EoS in december
L223[15:41:54] <Lizzy> also fixed the email sending, cause that had been broken for a while
L224[15:53:42] <Corded> > <Mic​hiyo> reacted 🎉 to <Li​zzy> FYI The forums are back and now not several years behind on patches
L225[16:00:59] <RedstoneParkour> hmm now there's the issue of the \x14cg's response being echoed...
L226[16:01:23] <RedstoneParkour> well i could use readKey i suppose
L227[16:06:15] <RedstoneParkour> aaand readkey doesn't work
L228[16:07:46] <RedstoneParkour> unless i'm not supposed to use io.write but instead term.write
L229[16:07:55] <RedstoneParkour> or hmm
L230[16:08:01] * Lizzy writes cat sounds to RP's terminal
L231[16:08:39] <RedstoneParkour> oh one has to do io.flush() of course
L232[16:32:22] <Ocawes​ome101> RedstoneParkour: check latest commit for potential signal handling fixes / cleanup
L233[16:34:16] <Ocawes​ome101> will tackle term issues next
L234[16:46:29] <Ocawes​ome101> ok those + serializing `inf` should be fixed
L235[17:02:37] <RedstoneParkour> hmm seems starting services waits for an event to happen?
L236[17:08:23] <RedstoneParkour> or well more precisely the minitel service
L237[17:10:46] <RedstoneParkour> huh weird `computer.pullSignal(0)` blocks
L238[17:12:38] <RedstoneParkour> oh would you look at that, `computer.pullSignal(0)` blocks for 1 tick yet `coroutine.yield(0)` blocks until an event
L239[17:12:54] <RedstoneParkour> (at least on openos)
L240[17:15:22] <RedstoneParkour> riiight having the signal manager creator take a pullSignal function as argument and passing in `computer.pullSignal` at 51_signal.lua seems to fix the issue
L241[17:16:41] <RedstoneParkour> though now i do think errors when starting a service are not logged?
L242[17:22:58] <RedstoneParkour> oh that's bad
L243[17:23:22] <RedstoneParkour> changing one service determines whether another service's error is printed or not
L244[17:23:58] <Forec​aster> so if you only have one service there wont be any errors, it's perfect
L245[17:25:42] <RedstoneParkour> though i wonder why that is...
L246[17:27:15] <RedstoneParkour> ok huh erroring before one registers their service's actions eats the error?
L247[17:27:48] <RedstoneParkour> yup seems so i guess
L248[17:28:16] <RedstoneParkour> nope nevermind
L249[17:28:45] <RedstoneParkour> ah its order-dependent it seems
L250[17:29:14] <vft​dan> Is wolbeacon useful for a machine that couldn't be reached for a long time?
L251[17:33:07] <RedstoneParkour> well hmm not order-dependent...
L252[17:33:10] <RedstoneParkour> shit's weird
L253[17:33:30] <RedstoneParkour> oh
L254[17:33:51] <RedstoneParkour> the thread-death handler uses rc's signal manager, but rc's wait loop doesn't pull rc's signal manager
L255[17:33:55] <RedstoneParkour> so the signal is lost
L256[17:34:39] <RedstoneParkour> vftdan: couldn't be reached as in?
L257[17:39:37] <Corded> > <Redston​eParkour> vftdan: couldn't be reached as in?
L258[17:39:38] <vft​dan> E. g. it was out of power for half an hour. Will other machines still try to WoL it?
L259[17:40:31] <RedstoneParkour> yes they'll still try to WoL it
L260[17:41:53] <RedstoneParkour> oh also Ocawesome101: i'd suggest adding a `computer.pushSignal("rc_ready")` at the end of every service's initialization
L261[17:42:39] <RedstoneParkour> as that'll cause rc to not wait the entire timeout to start the service (if nothing else generates events during that time)
L262[17:46:18] <vft​dan> Then why was my crafting robot off again today :thonk:
L263[17:46:52] <RedstoneParkour> maybe the wol message doesn't reach it?
L264[17:47:04] <RedstoneParkour> what's the range on its wireless card?
L265[17:54:18] <vft​dan> It only has a linked card
L266[17:54:22] <RedstoneParkour> oh
L267[17:54:34] <RedstoneParkour> wolbeacon doesn't do anything over linked cards
L268[17:55:03] <RedstoneParkour> you could patch it so it does, but then wolbeacons will be confused with minitel messages (so you have to patch minitel too)
L269[17:56:06] <Ocawes​ome101> RedstoneParkour: starting services should wait for service action registration or for half a second
L270[17:56:39] <RedstoneParkour> right but once a service has registered it's actions i don't see why the coroutine.yield would return early
L271[17:57:25] <Ocawes​ome101> hmm good point. i hadn't run into issues with it, but if the service has to yield that would indeed mess it up.
L272[17:58:11] <Ocawes​ome101> `rc.registerServiceActions` now sends `rc_registered(service)`
L273[18:00:02] <RedstoneParkour> and you also switched the `coroutine.yield` with `rc.service:pull`?
L274[18:00:25] <Ocawes​ome101> WIP
L275[18:01:03] <Ocawes​ome101> done
L276[18:05:43] <Corded> > <Redston​eParkour> you could patch it so it does, but then wolbeacons will be …
L277[18:05:43] <vft​dan> For minitel it should be enough to check that `packetType` in not nil in `processPacket` ig?
L278[18:07:32] <RedstoneParkour> yeah
L279[18:08:19] <RedstoneParkour> oh there's still the 'waits for an event' bug
L280[18:14:29] <RedstoneParkour> wait hmm am i now correctly seeing that handlers are called multiple times?
L281[18:15:28] <RedstoneParkour> which is entirely possible if multiple threads pull on the rc signal manager
L282[18:16:21] <Ocawes​ome101> i think i added protection against that ...
L283[18:17:01] <RedstoneParkour> well changing the minitel library to not pull on the rc signal manager fixes the issue
L284[18:17:08] <RedstoneParkour> soooo
L285[18:17:18] <RedstoneParkour> (for reference i have two services that `minitel.listen` in a loop)
L286[18:17:59] <Ocawes​ome101> ...oh did i do that oops
L287[18:18:37] <RedstoneParkour> well it's still quite bad because fixing that means the minitel service is the one that pulls on the rc signal manager
L288[18:19:00] <Ocawes​ome101> the service creates its own signal manager
L289[18:19:04] <Ocawes​ome101> or at least it should
L290[18:19:08] <RedstoneParkour> it does
L291[18:19:23] <Ocawes​ome101> so it shouldn't touch the rc one?
L292[18:19:29] <RedstoneParkour> oh yeah
L293[18:19:37] <RedstoneParkour> my bad
L294[18:19:38] <Ocawes​ome101> only the minitel library
L295[18:20:04] <RedstoneParkour> well wait what's then pulling on the rc signal manager
L296[18:20:21] <Ocawes​ome101> `bin/rc.lua` has a loop that just does that
L297[18:20:40] <RedstoneParkour> ah lol
L298[18:20:42] <Ocawes​ome101> that's the only place where it happens
L299[18:20:55] <Ocawes​ome101> other programs should never ever have to
L300[18:21:23] <RedstoneParkour> well hold on
L301[18:21:39] <RedstoneParkour> it's also called when a service is started
L302[18:21:51] <Ocawes​ome101> only from `rc` before that main loop starts i think?
L303[18:21:58] <Ocawes​ome101> otherwise it just uses coroutine.yield
L304[18:22:02] <RedstoneParkour> nope?
L305[18:22:08] <RedstoneParkour> rcstart
L306[18:22:27] <RedstoneParkour> or more generally, any program calling `rc.start`
L307[18:22:35] <RedstoneParkour> wait no
L308[18:22:58] <RedstoneParkour> yeah you're right, i was thinking to how i patched it
L309[18:23:14] <Ocawes​ome101> i wondered if you had a difference locally yeah
L310[18:23:52] <RedstoneParkour> i just blindly replaced the coroutine.yield with rc.signal:pull
L311[18:23:56] <RedstoneParkour> which would have that bug
L312[18:24:10] <Ocawes​ome101> i almost did that and then went "hey wait no thread safety" lol
L313[18:25:04] <RedstoneParkour> still the issue where the system waits for some event on startup
L314[18:25:16] <Ocawes​ome101> it shouldn't ...
L315[18:25:31] <Ocawes​ome101> let me double check i've pushed everything
L316[18:26:13] <Ocawes​ome101> can you check against latest commit?
L317[18:26:24] <Ocawes​ome101> `9ff563c`
L318[18:27:16] <RedstoneParkour> huh weird doesn't happen
L319[18:27:21] <RedstoneParkour> might be one of my local changes...
L320[18:27:34] <RedstoneParkour> ohh i get it
L321[18:28:40] <RedstoneParkour> yup it's my change to have 20_automount.lua also run autoruns, which made it no longer push component_added events for everything
L322[18:28:54] <Ocawes​ome101> ahh
L323[18:28:59] <Ocawes​ome101> wdym autoruns?
L324[18:29:06] <Ocawes​ome101> like `/home/autorun`?
L325[18:29:13] <RedstoneParkour> like `/autorun.lua`
L326[18:29:18] <RedstoneParkour> on the root of any disk
L327[18:29:23] <Ocawes​ome101> OH gotcha
L328[18:29:46] <RedstoneParkour> i use it to link/copy files from my big ~/Code/OC into the os' root
L329[18:30:02] <Ocawes​ome101> that's quite clever
L330[18:30:44] <RedstoneParkour> it's also a bit of a mess because it has support for openos, psychos and ulos3 now but yes
L331[18:31:03] <Ocawes​ome101> i would recommend adding a script that will run after automount, maybe `30_autorun.lua`, to do that since every filesystem should be mounted then
L332[18:31:26] <Ocawes​ome101> i dunno why it would have the behavior you describe though unless your `autorun` depends on signal behavior or smth
L333[18:31:35] <RedstoneParkour> no they won't be as 20_automount.lua only pushes events and those get processed way later
L334[18:32:27] <Ocawes​ome101> ... i swear i know how my software works lol (yes you are correct)
L335[18:33:04] <Mic​hiyo> I tell myself the same thing.
L336[18:33:12] <Ocawes​ome101> i think it's universal
L337[18:34:00] <Ocawes​ome101> so that probably is the right place for autorun.
L338[18:34:08] <RedstoneParkour> maybe?
L339[18:34:25] <Ocawes​ome101> RedstoneParkour: can you show your changes?
L340[18:34:36] <RedstoneParkour> suppose i'll push it sure
L341[18:34:51] <Ocawes​ome101> i can't think why it would break the `component_added` loop
L342[18:34:58] <Ocawes​ome101> or why that would make the whole system wait for a signal
L343[18:35:01] <Ocawes​ome101> ¯\(ツ)/¯
L344[18:35:30] <RedstoneParkour> no the thing is i removed the `computer.pushSignal("component_added", ...)`
L345[18:35:38] <RedstoneParkour> and instead call the handler directly
L346[18:35:47] <Ocawes​ome101> oh i see
L347[18:36:38] <RedstoneParkour> that's because i also copy services and so on in the autorun and from experience (on openos) i know that has to basically be done as early as possible
L348[18:37:00] <Ocawes​ome101> commenting that out doesn't (shouldn't?) make the system hang for want of a signal though
L349[18:37:22] <Ocawes​ome101> you are correct that it should be done early
L350[18:38:08] <Ocawes​ome101> though `rc` always starts services in the order in `/cfg/rc.autostart` so this could be worked around
L351[18:38:18] <Ocawes​ome101> regardless, i'm not sure why what you're doing broke it
L352[18:38:30] <RedstoneParkour> hm commenting it out does make it hang for me
L353[18:38:43] <Ocawes​ome101> hmmmm
L354[18:38:47] <RedstoneParkour> maybe an emulator inaccuracy?
L355[18:38:49] <RedstoneParkour> as i'm running ocelot
L356[18:38:54] <Ocawes​ome101> i am also running ocelot
L357[18:39:02] <Ocawes​ome101> so probably not
L358[18:39:09] <RedstoneParkour> 1.14.2 <a9bd206>?
L359[18:39:31] <Ocawes​ome101> 1.14.2 <7b64bff>
L360[18:39:37] <RedstoneParkour> interesting
L361[18:40:05] <Ocawes​ome101> might be a nightly build, anyway, i doubt it's that
L362[18:40:11] <RedstoneParkour> can you try restarting the computer using the power button?
L363[18:40:20] <Ocawes​ome101> did that, no change
L364[18:40:26] <RedstoneParkour> the fuck
L365[18:40:32] <Ocawes​ome101> any other changes vs. 9ff563c?
L366[18:40:39] <Ocawes​ome101> or only in automount?
L367[18:41:14] <RedstoneParkour> oh currently i only have line 13 of 20_automount.lua commented out relative to 9ff563c
L368[18:41:21] <RedstoneParkour> so not even the autorun
L369[18:41:21] <Ocawes​ome101> the fuck
L370[18:42:24] <Ocawes​ome101> WAIT no it did it
L371[18:42:44] <RedstoneParkour> maybe network chatter from other computers?
L372[18:43:09] <Ocawes​ome101> nope i just maybe hadn't actually copied the change or smth
L373[18:49:27] <Ocawes​ome101> oh god it's a heisenbug
L374[18:49:36] <Ocawes​ome101> adding `print` statements in random places seemingly makes it stop
L375[18:51:02] <Ocawes​ome101> GOT IT
L376[18:51:16] <Ocawes​ome101> `coroutine.yield(0)` != `computer.pullSignal(0)` apparently
L377[18:51:31] <RedstoneParkour> yeah
L378[18:51:40] <Ocawes​ome101> so i made the kernel signal manager (used for base thread loop) use `computer.pullSignal` instead of `coroutine.yield`
L379[18:52:34] <Ocawes​ome101> pushed a fix
L380[18:52:41] <RedstoneParkour> doesn't computer.pullSignal get replaced later?
L381[18:52:45] <RedstoneParkour> or do you keep it in a local variable
L382[18:53:09] <Ocawes​ome101> `signal.manager()` accepts a function argument to use instead of `coroutine.yield` now
L383[18:53:11] <RedstoneParkour> oh hahaha it's basically what i did
L384[18:53:15] <Ocawes​ome101> i don't think i ever replace `computer.pullSignal`
L385[18:53:38] <Ocawes​ome101> ope i do, nvm
L386[18:54:01] <vft​dan> Does WoL work for tablets?
L387[18:54:12] <RedstoneParkour> it works if you use a wireless network card
L388[18:54:13] <Ocawes​ome101> hmmm i bet that means i can make a slightly different change
L389[18:55:06] <Ocawes​ome101> yep
L390[18:55:11] <Corded> > <Redston​eParkour> it works if you use a wireless network card
L391[18:55:11] <vft​dan> So I don't need to right-click with a tablet every time I connect if it is listening to WoL?
L392[18:55:25] <Ocawes​ome101> made `manager:pull` use `computer.pullSignal` which is smart enough already
L393[18:55:26] <RedstoneParkour> yeah
L394[18:55:29] <RedstoneParkour> think so at least
L395[18:55:38] <RedstoneParkour> do note the interval is 60 seconds
L396[18:55:52] <RedstoneParkour> so it may take up to 120 seconds
L397[18:56:04] <RedstoneParkour> (the TPS is roughly 10)
L398[19:00:03] <RedstoneParkour> you know maybe i should just push my personal changes
L399[19:02:22] <RedstoneParkour> there, it's on the autorun branch (but it's not just autorun)
L400[19:05:02] <Ocawes​ome101> cool
L401[19:05:16] <Ocawes​ome101> i like the change to `dog`, i wonder if it can be generalized
L402[19:05:40] <Ocawes​ome101> e.g. so `poodle` can use it too
L403[19:10:59] <RedstoneParkour> oh yeah i wonder: how would one recursively copy?
L404[19:11:49] <Ocawes​ome101> you can sort of use `tomtar`/`frommtar` to do that
L405[19:11:51] <RedstoneParkour> currently the best i have is `for path in find 'bin' 'lib' 'cfg' 'doc' 'init.lua' do (cat(path) : dog(true, '/srv/'..path))() end`
L406[19:12:06] <RedstoneParkour> that requires an intermediate file though?
L407[19:12:06] <RedstoneParkour> unless i'm mistaken
L408[19:12:39] <Ocawes​ome101> yes
L409[19:13:39] <RedstoneParkour> hmm actually
L410[19:14:23] <Ocawes​ome101> oooh this would be a use case for `map`
L411[19:14:52] <RedstoneParkour> is there a good way to absolutify a path?
L412[19:15:21] <Ocawes​ome101> `fs.clean` should do that
L413[19:15:46] <RedstoneParkour> oh yup it does
L414[19:17:49] <Ocawes​ome101> assuming closures work right, `find 'a' 'b' 'c' : map(_() .set 'path' .join '/srv' .dog(true))` should work?
L415[19:18:11] <Ocawes​ome101> wait not quite that
L416[19:18:18] <RedstoneParkour> uh wha
L417[19:18:40] <RedstoneParkour> oh didn't even know _() was a thing
L418[19:18:44] <RedstoneParkour> dear god
L419[19:19:22] <Corded> > <vft​dan> reacted 🎉 to <Li​zzy> FYI The forums are back and now not several years behind on patches
L420[19:21:28] <Ocawes​ome101> `find 'a' 'b' 'c' : map(_() .set 'path' .join '/srv' .get 'path' .reverse() .dog(true))`
L421[19:22:08] <RedstoneParkour> sadly that only works at the root
L422[19:22:20] <RedstoneParkour> unless there's some kind of command for string.sub
L423[19:23:29] <RedstoneParkour> fuck there's the match command
L424[19:23:40] <Ocawes​ome101> there are commands for many things :D
L425[19:25:30] <Ocawes​ome101> ok so i think `find 'a' 'b' 'c' : map(_() .set 'path' .join '/srv' .set 'destination' .select(-1) .cat() .get 'destination' .reverse() .dog(true))`
L426[19:25:46] <Ocawes​ome101> confused why that won't work from the root? should be relative to current directory
L427[19:26:02] <RedstoneParkour> it's because find gives absolute paths
L428[19:26:58] <RedstoneParkour> except for the arguments themselves
L429[19:26:59] <RedstoneParkour> so if you were in f.e. /home it'd copy `a` to `/srv/home/a` not `/srv/a`
L430[19:27:17] <Ocawes​ome101> ohhh i see
L431[19:29:35] ⇨ Joins: pidor (~pidor@31.77.202.100)
L432[19:29:54] ⇦ Quits: pidor (~pidor@31.77.202.100) (Client Quit)
L433[19:30:10] <Va​ur> %tonkout
L434[19:30:10] <MichiBot> Crud! V​aur! You beat F​lameingsoul's previous record of 5h 59m 5s (By 38m 50s)! I hope you're happy!
L435[19:30:11] <MichiBot> V​aur has stolen the tonkout! Tonk has been reset! They gained 0.006 tonk points! plus 0.005 bonus points for consecutive hours! (Reduced to 50% because stealing) Current score: 3.0637603. Position #3 Need 0.31725237 more points to pass F​orecaster!
L436[19:31:01] <RedstoneParkour> oh and select with negative argument seems broken?
L437[19:31:26] <RedstoneParkour> yeah because if n is negative it loops from i = #args - n to #args
L438[19:31:32] <RedstoneParkour> but n is negative so #args - n > #args
L439[19:32:37] <Ocawes​ome101> whoops
L440[19:32:50] <RedstoneParkour> alright changing to #args + n + 1 fixes it
L441[19:37:02] <Ocawes​ome101> sure does
L442[19:37:05] <Ocawes​ome101> fixed locally as well
L443[19:37:18] <Ocawes​ome101> i am fixing `map` as well to attempt to make `cp` work
L444[19:39:00] <RedstoneParkour> oh i'm cooking up a mess of a lush command that should be equivalent to plan9's dircp
L445[19:39:32] <Ocawes​ome101> excellent
L446[19:39:42] <Ocawes​ome101> i am having Problems with probably closures so uh yeah
L447[19:40:57] <RedstoneParkour> oh huh it waited for a signal on startup again
L448[19:41:16] <RedstoneParkour> ah right i don't think i have the patch on this branch
L449[19:42:45] <RedstoneParkour> huh nope still waits on startup
L450[19:43:18] <Ocawes​ome101> hm it seemed fixed for me
L451[19:43:49] <RedstoneParkour> huh now it's fixed
L452[19:43:51] <RedstoneParkour> heisenbug yay
L453[19:44:10] <RedstoneParkour> yeah now it's broken again
L454[19:44:10] <RedstoneParkour> ah well
L455[19:46:17] <Ocawes​ome101> hmm yeah no not fully fixed
L456[19:48:45] <Ocawes​ome101> pushed basically the same change from earlier that should actually fix it this time
L457[19:50:37] <RedstoneParkour> hmm more weirdness: echo 'a' : map(require("fs").clean) should output '/home/a' right?
L458[19:51:17] <RedstoneParkour> oh wait
L459[19:51:20] <RedstoneParkour> map doesn't actually map
L460[19:51:41] <RedstoneParkour> line 16 is `table.unpack(args)` but should be `table.unpack(result)` if you want mapping
L461[19:51:48] <Ocawes​ome101> yeah that's fixed locally too
L462[19:51:59] <Ocawes​ome101> pushed
L463[19:54:48] <Ocawes​ome101> also pulled in your `dog` feature
L464[19:55:47] <RedstoneParkour> hmm and i think --!lush is broken?
L465[19:56:26] <Ocawes​ome101> that should™ be fixed as well
L466[19:56:41] <Ocawes​ome101> yeah `genimg.lua` uses that, and works
L467[19:58:49] <RedstoneParkour> oh right i need to do `echo(...)`
L468[21:30:09] ⇦ Quits: Vexatos (~Vexatos@2001:4647:af75:0:bb92:23a7:e33c:4a06) (Quit: Insert quantum chemistry joke here)
<<Prev Next>> Scroll to Top