<<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> >
<payonel> what are all those HUD things from? and the
floating labels…
L11[00:57:19]

<Renno> a
companion mod
L12[00:57:38] <Corded> >
<payonel> first pic of my bot-golem
L13[00:57:38]

<Renno> hah
those are cool, idk why it reminds me of ben10
L14[00:57:43]

<payonel> i
want to see if i can port a heavy oc project to modcomp
L15[00:58:14]

<payonel>
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]

<Renno> how
similar is it to OC?
L17[00:59:23]

<payonel>
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]

<payonel> i
made some changes to how devices load, and how you access them from
the computer
L20[01:00:15]

<payonel>
and there is no pullSignal. there are hardware interrupts. so no
yielding anymore
L21[01:00:28]

<Renno> how
does that work?
L22[01:01:18]

<payonel> 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]

<payonel>
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]

<payonel>
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]

<payonel>
all this in c++ and java. but in java so the minecraft runtime is
not loading binaries, just direct java
L26[01:04:26]

<payonel>
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]

<payonel>
so your lua runtime is getting io from devices without any
"interruption" to your code (pun)
L28[01:05:17]

<payonel>
and, most of the time, you get device data much faster than a
server tick
L29[01:05:54]

<payonel>
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]

<SpiderEveryOS> %tonkout
L31[01:08:38] <MichiBot> Yippee!
SpiderEveryOS! You beat Forecaster's previous record of 5h
34m 29s (By 1h 22m 33s)! I hope you're happy!
L32[01:08:38] <MichiBot> SpiderEveryOS 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]

<payonel>
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]

<payonel>
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]

<payonel>
anyways. all of this is hidden from user code. only important if
someone is writing their own os. but mcos is robust
L38[01:14:16]

<payonel>
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]

<Michiyo>
Hello
L44[04:59:08] <YetAnotherPerson> Finally
someone responds
L45[04:59:34]

<Michiyo>
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]

<Michiyo>
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]

<Michiyo>
K.
L53[05:12:17]

<Forecaster> and I was
just about
to ask a philosophical question for the ages!
L54[05:17:46] <Corded> >
<payonel>
L55[05:17:46]

<Renno>
very interesting
L56[05:18:01]

<Renno>
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
L61[06:11:10]

<Forecaster> 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]

<Vaur>
%tonk
L65[06:53:09] <MichiBot> Wild! Vaur! You
beat SpiderEveryOS'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
Forecaster!
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> >
<Ocawesome101> What features would you want to see?
L70[08:20:07]

<RedstoneParkour> alright found the first
bug: closing minitel sockets doesn't work (it uses
`event.ignore`)
L71[08:32:39]

<RedstoneParkour> besides that it's a
bit different but seems to work nicely
L72[08:33:20]

<RedstoneParkour> though there's no
serialization library
L73[08:33:50]

<RedstoneParkour> (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]

<RedstoneParkour> also uhhhhh i've
been looking at its minitel service and what's the `pid` local
doing?
L77[09:07:15]

<RedstoneParkour> and is it intentional
that dead threads aren't cleaned up?
L78[09:08:40]

<RedstoneParkour> alsooo
`minitel.flisten`'s handler should really run in a
thread
L79[09:09:47] <Corded> > <Renno>
seems to be largely free of many of the limiations of OC?
L80[09:09:47]

<payonel>
yes - it only took me 5 years 😅
L81[09:15:48] <Corded> >
<RedstoneParkour> alsooo `minitel.flisten`'s handler
should really run in a t…
L82[09:15:49]

<RedstoneParkour> and when a socket
receives `sclose` it calls `sock:close()` which blocks and is thus
bad
L83[09:28:58] <Corded> >
<RedstoneParkour> and is it intentional that dead threads
aren't cleaned up?
L84[09:28:58]

<RedstoneParkour> well i suppose i can
clean them up myself
L85[09:47:54]

<RedstoneParkour> 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]

<payonel>
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]

<Forecaster> D:<
L98[11:23:19] *
Amanda chitters at fore from the window
L99[11:27:41]

<RedstoneParkour> oh wait huh ulos3 does
have a serialize function
L100[11:27:44]

<RedstoneParkour> didn't notice
L101[11:30:24]

<RedstoneParkour> though it is broken as
it's `_ENV` doesn't provide `math.huge`
L102[11:34:10]

<RedstoneParkour> 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]

<vftdan> 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]

<vftdan>
:thonk: if a something is joining a thread, and this thread is
suspended, the thread is apparently will be killed
L114[12:18:52]

<vftdan>
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]

<vftdan>
Right. But is there no way to specify how `box_thread:kill()` is
propagated?
L119[12:21:16]

<vftdan>
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]

<vftdan>
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]

<vftdan>
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> >
<vftdan>
L132[12:26:08]

<vftdan>
^?
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]

<vftdan>
Ah, replies to images are not handled by the bridge
apparently
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?
L147[12:44:09] ⇦
Quits: Izzy (~izzy@210.1.201.103) (Ping timeout: 195
seconds)
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...
L153[12:50:25] <RedstoneParkour> of
course...
L154[12:50:29] <Amanda> if i'm
reading that right
L155[12:52:14]

<Flameingsoul> %tonk
L156[12:52:14] <MichiBot> Geez!
Flameingsoul! You beat Vaur'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 Vaur!
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
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]

<vftdan>
`process.findProcess()`
L167[13:02:15] <Amanda> That was what was
wrong with detaching in init
L169[13:07:27] *** Joins: Izzy
(~izzy@210.1.201.103) ShadowKatStudios
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
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]

<vftdan>
(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]

<vftdan>
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]

<vftdan>
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> >
<RedstoneParkour> alright found the first bug: closing
minitel sockets doesn'…
L188[13:41:22]

<Ocawesome101> Noted
L189[13:41:50] <Corded> >
<RedstoneParkour> also uhhhhh i've been looking at its
minitel service and wh…
L190[13:41:50]

<Ocawesome101> I think that's a
holdover from PaychOS
L191[13:41:50] <RedstoneParkour>
there's a PR
L192[13:42:29] <Corded> >
<RedstoneParkour> and is it intentional that dead threads
aren't cleaned up?
L193[13:42:29]

<Ocawesome101> 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> >
<RedstoneParkour> alsooo `minitel.flisten`'s handler
should really run in a t…
L195[13:42:35]

<Ocawesome101> 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> >
<vftdan> Tho if I simultaneously run two steps, both of
which use an…
L200[13:58:35] <Corded> >
<RedstoneParkour> how would you keep track of different
recipes though?
L201[13:58:35]

<vftdan>
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> >
<RedstoneParkour> and ocawesome a service's thread does
get cleaned up on exi…
L204[14:15:09]

<Ocawesome101> Noted, will investigate
later and also merge your PR probably
L205[15:12:17]

<RedstoneParkour> 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]

<RedstoneParkour> and apparently `\x14cg`
needs me to press enter?
L207[15:18:13]

<RedstoneParkour> unless i'm doing
something wrong
L208[15:19:21]

<RedstoneParkour> 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]

<Ocawesome101> right yeah terminal
keyboard input is a little bit ... strange.
L215[15:30:19]

<Ocawesome101> 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]

<Forecaster> 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> >
<Michiyo> reacted 🎉 to <Lizzy> 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]

<Ocawesome101> RedstoneParkour: check
latest commit for potential signal handling fixes / cleanup
L233[16:34:16]

<Ocawesome101> will tackle term issues
next
L234[16:46:29]

<Ocawesome101> 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]

<Forecaster> 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]

<vftdan> 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> >
<RedstoneParkour> vftdan: couldn't be reached as
in?
L258[17:39:38]

<vftdan> 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]

<vftdan>
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]

<vftdan> 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]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> `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]

<Ocawesome101> WIP
L275[18:01:03]

<Ocawesome101> done
L276[18:05:43] <Corded> >
<RedstoneParkour> you could patch it so it does, but then
wolbeacons will be …
L277[18:05:43]

<vftdan>
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]

<Ocawesome101> 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]

<Ocawesome101> ...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]

<Ocawesome101> the service creates its own
signal manager
L289[18:19:04]

<Ocawesome101> or at least it should
L290[18:19:08] <RedstoneParkour> it
does
L291[18:19:23]

<Ocawesome101> 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]

<Ocawesome101> only the minitel
library
L295[18:20:04] <RedstoneParkour> well wait
what's then pulling on the rc signal manager
L296[18:20:21]

<Ocawesome101> `bin/rc.lua` has a loop
that just does that
L297[18:20:40] <RedstoneParkour> ah
lol
L298[18:20:42]

<Ocawesome101> that's the only place
where it happens
L299[18:20:55]

<Ocawesome101> 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]

<Ocawesome101> only from `rc` before that
main loop starts i think?
L303[18:21:58]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> it shouldn't ...
L315[18:25:31]

<Ocawesome101> let me double check
i've pushed everything
L316[18:26:13]

<Ocawesome101> can you check against
latest commit?
L317[18:26:24]

<Ocawesome101> `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]

<Ocawesome101> ahh
L323[18:28:59]

<Ocawesome101> wdym autoruns?
L324[18:29:06]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> ... i swear i know how my
software works lol (yes you are correct)
L335[18:33:04]

<Michiyo> I
tell myself the same thing.
L336[18:33:12]

<Ocawesome101> i think it's
universal
L337[18:34:00]

<Ocawesome101> so that probably is the
right place for autorun.
L338[18:34:08] <RedstoneParkour>
maybe?
L339[18:34:25]

<Ocawesome101> RedstoneParkour: can you
show your changes?
L340[18:34:36] <RedstoneParkour> suppose
i'll push it sure
L341[18:34:51]

<Ocawesome101> i can't think why it
would break the `component_added` loop
L342[18:34:58]

<Ocawesome101> or why that would make the
whole system wait for a signal
L343[18:35:01]

<Ocawesome101> ¯\(ツ)/¯
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]

<Ocawesome101> 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]

<Ocawesome101> commenting that out
doesn't (shouldn't?) make the system hang for want of a
signal though
L349[18:37:22]

<Ocawesome101> you are correct that it
should be done early
L350[18:38:08]

<Ocawesome101> though `rc` always starts
services in the order in `/cfg/rc.autostart` so this could be
worked around
L351[18:38:18]

<Ocawesome101> 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]

<Ocawesome101> hmmmm
L354[18:38:47] <RedstoneParkour> maybe an
emulator inaccuracy?
L355[18:38:49] <RedstoneParkour> as
i'm running ocelot
L356[18:38:54]

<Ocawesome101> i am also running
ocelot
L357[18:39:02]

<Ocawesome101> so probably not
L358[18:39:09] <RedstoneParkour> 1.14.2
<a9bd206>?
L359[18:39:31]

<Ocawesome101> 1.14.2
<7b64bff>
L360[18:39:37] <RedstoneParkour>
interesting
L361[18:40:05]

<Ocawesome101> 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]

<Ocawesome101> did that, no change
L364[18:40:26] <RedstoneParkour> the
fuck
L365[18:40:32]

<Ocawesome101> any other changes vs.
9ff563c?
L366[18:40:39]

<Ocawesome101> 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]

<Ocawesome101> the fuck
L370[18:42:24]

<Ocawesome101> WAIT no it did it
L371[18:42:44] <RedstoneParkour> maybe
network chatter from other computers?
L372[18:43:09]

<Ocawesome101> nope i just maybe
hadn't actually copied the change or smth
L373[18:49:27]

<Ocawesome101> oh god it's a
heisenbug
L374[18:49:36]

<Ocawesome101> adding `print` statements
in random places seemingly makes it stop
L375[18:51:02]

<Ocawesome101> GOT IT
L376[18:51:16]

<Ocawesome101> `coroutine.yield(0)` !=
`computer.pullSignal(0)` apparently
L377[18:51:31] <RedstoneParkour>
yeah
L378[18:51:40]

<Ocawesome101> so i made the kernel signal
manager (used for base thread loop) use `computer.pullSignal`
instead of `coroutine.yield`
L379[18:52:34]

<Ocawesome101> 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]

<Ocawesome101> `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]

<Ocawesome101> i don't think i ever
replace `computer.pullSignal`
L385[18:53:38]

<Ocawesome101> ope i do, nvm
L386[18:54:01]

<vftdan>
Does WoL work for tablets?
L387[18:54:12] <RedstoneParkour> it works
if you use a wireless network card
L388[18:54:13]

<Ocawesome101> hmmm i bet that means i can
make a slightly different change
L389[18:55:06]

<Ocawesome101> yep
L390[18:55:11] <Corded> >
<RedstoneParkour> it works if you use a wireless network
card
L391[18:55:11]

<vftdan> 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]

<Ocawesome101> 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]

<Ocawesome101> cool
L401[19:05:16]

<Ocawesome101> i like the change to `dog`,
i wonder if it can be generalized
L402[19:05:40]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> yes
L409[19:13:39] <RedstoneParkour> hmm
actually
L410[19:14:23]

<Ocawesome101> 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]

<Ocawesome101> `fs.clean` should do
that
L413[19:15:46] <RedstoneParkour> oh yup it
does
L414[19:17:49]

<Ocawesome101> assuming closures work
right, `find 'a' 'b' 'c' : map(_()
.set 'path' .join '/srv' .dog(true))` should
work?
L415[19:18:11]

<Ocawesome101> 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> >
<vftdan> reacted 🎉 to <Lizzy> FYI The forums are back
and now not several years behind on patches
L420[19:21:28]

<Ocawesome101> `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]

<Ocawesome101> there are commands for many
things :D
L425[19:25:30]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Vaur>
%tonkout
L434[19:30:10] <MichiBot> Crud! Vaur! You
beat Flameingsoul's previous record of 5h 59m 5s (By 38m
50s)! I hope you're happy!
L435[19:30:11] <MichiBot> Vaur 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 Forecaster!
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]

<Ocawesome101> whoops
L440[19:32:50] <RedstoneParkour> alright
changing to #args + n + 1 fixes it
L441[19:37:02]

<Ocawesome101> sure does
L442[19:37:05]

<Ocawesome101> fixed locally as well
L443[19:37:18]

<Ocawesome101> 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]

<Ocawesome101> excellent
L446[19:39:42]

<Ocawesome101> 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]

<Ocawesome101> 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]

<Ocawesome101> hmm yeah no not fully
fixed
L456[19:48:45]

<Ocawesome101> 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]

<Ocawesome101> yeah that's fixed
locally too
L462[19:51:59]

<Ocawesome101> pushed
L463[19:54:48]

<Ocawesome101> also pulled in your `dog`
feature
L464[19:55:47] <RedstoneParkour> hmm and i
think --!lush is broken?
L465[19:56:26]

<Ocawesome101> that should™ be fixed as
well
L466[19:56:41]

<Ocawesome101> 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)