#MINTIA (not vibecoded)

1 messages · Page 4 of 1

heady bobcat
#

another light mode enjoyer btw

white valley
heady bobcat
#

yes we are

twilit smelt
#

i like the two year dark ages at the start where i was struggling with toolchain and firmware shit too hard to have any os stuff going on

#

no idea how i maintained focus throughout that

#

i did start some quickly abortive projects during that period that i guess werent worth putting on the timeline bc they never did anything

white valley
#

honestly im surprised at how you manage to pull through all motivation slumps

#

the compiler making process pulled out the will to live from my will to program

twilit smelt
white valley
#

wait what

twilit smelt
#

idk if i have any screenshots of the various designs from then lol

white valley
#

how did you spend 8 months and end up with the most generic ass boot screen ever

twilit smelt
#

at the time i was documenting all my work in the original fantasy consoles discord which was deleted yrs ago after the owner was hacked

#

so i lost a lot

white valley
#

good thing the MINTIA thread never had years of documentation erased

warm pine
#

limnik

twilit smelt
#

no thats limn2k

#

all the limn1k code predates the xrarch organization

#

it was in a repo called limnvm under my account which still exists but is privated

warm pine
#

oh, the repo lies then

#

Boot firmware for the LIMN architecture, written in limn1k assembly and dragonfruit.

twilit smelt
#

well

#

actually maybe it is?

#

i dont even remember what it looked like anymore lol

#

no it seems that is limn1k

#

i think limn2k existed at that point but it was still kind of experimental or something

#

limn1k was a retronym

#

if u look in earlier commits it just says limn and never limn1k

#

i dont have a ready explanation for why theres "limn1k assembly" in that repo at that point

warm pine
#

it seems there was even an interpreted language called AUC in those days

twilit smelt
#

oh yeahhh

#

there was a df backend to that, it was a bytecode for drivers on device roms lol

warm pine
#

you can see the clear influence that unix workstations had on you already with that

#

dragonfruit/auc is your fcode and you have a device tree and everything

#

openfirmware eat your heart out

twilit smelt
#

its funny how a4x is so flat brained compared to that

#

my tastes definitely changed

twilit smelt
#

but i certainly got test programs compiled from dragonfruit to auc running and stuff

#

what did auc stand for

#

i think it was like architecturally unrestricted code or something like that

#

idk

twilit smelt
#

dragonfruit had a 16 bit target at one point, the R216, a powder toy cpu

#

i wonder if i actually committed this backend

warm pine
#

was it only when carver or chris dorper or harrison or whoever it is (possibly they are all the same person) force fed NT gospel to you in 2020(?) that you started borrowing from that side of things rather than, as at this point, almost solely apparently from unix risc workstations of the late 80s?

twilit smelt
#

i found a commit that has the auc backend and the r216 backend

#

they were removed in the next commit which also added an early limn2k backend

#

it seems thats where i got the may 2020 from in the original timeline

#

but a3x and stuff werent updated to limn2k until months later

#

so ig there was a bit of development time there

twilit smelt
#

it was a later month of 2020 like maybe september

#

i read ke.doc in the workbook (which i found on my own and immediately leapfrogged carver in NT understanding as a result lol) and immediately decided id start an experimental project to rewrite the aisix scheduler and stuff to work like that

#

and that ended up turning into a whole new os which was mintia

#

actually the history might still be in here?

#

AHAHAHAHAHAHA

white valley
#

i think i started doing osdev around that time

twilit smelt
#

okay wait htis is what really hooked me i think

#

this literal moment

#

i found it

warm pine
#

very dialectical movement

twilit smelt
#

my earliest inkling of a page cache lol

white valley
#

NT doesnt have block cache

#

right?

twilit smelt
#

nope

#

i was wrong there

#

i had poor conception of a page cache at the time

warm pine
#

start with unix, throw away all unix for nt concepts instead, finally synthesise the two

twilit smelt
#

but the "unified cache model" i was conceptualizing just from seeing that meter rebalance

#

was the NT VMM, particularly the standby list and so on

#

lol

warm pine
#

does reactos actually have a standby list? i have no idea

#

i know they have a pv map so they aren't doing a properly nt like vmm

white valley
#

you would probably be at mintia 2 userland rn if you hadnt wasted months trying to get boot screens to look right

twilit smelt
#

i legitimately credit that 8 months i spent as like

#

wiring some minimal graphic design ability into my plastic teenager brain

#

and its why im like the only programmer on earth who can design things that arent completely ugly looking

twilit smelt
#

i guarantee you i spent hours staring at that single line of console text

white valley
#

i can see from the use of ANSI escape codes

twilit smelt
#

the technical aesthetic at this point has been almost completely subsumed by like

#

DEC

#

just DEC

#

found some old boot screen screenshots

#

chronological order of all(?) the a3x aesthetic changes

#

well first one is a1x

#

for some reason i started adding a graphical ui with a cursor around the pink (second) one

#

and i have an unlisted yt video from ages ago showing that off

#

this work was just discarded lol

white valley
#

antedecedent

twilit smelt
#

gallery isnt complete without a4x

twilit smelt
#

due to this music video i briefly got like 50x more gay and then went back to normal

warm mural
#

Console, boot, shutdown

twilit smelt
#

so 16 yr old me wasnt completley stupid

warm mural
#

Still ugly tho

#

I like the current one much better

white valley
#

turn right

#

and uh

#

not sure what that last one is supposed to be

#

also those buttons look weirdly 3d

#

doesnt fit in with the rest of the screen lol

twilit smelt
#

normally the textw ouldnt be there

#

it would just be the 3 buttons

#

youd only see the text after hitting the console button

white valley
#

hmm

#

it would be better if

#

the console was in its own little 3d looking window too

#

if you want a fancy boot screen then go all in

twilit smelt
#

the last time this was in use

#

you were

#

a preteen

white valley
#

and you were a teen

#

(probably)

twilit smelt
#

yeah 16 or 17

white valley
#

im at the age where you designed that now

twilit smelt
#

this is an underrated one also

#

especially cuz this was the first one

white valley
#

what is an antecedent

twilit smelt
#

a thing that comes before

#

which i thought was a clever name for firmware

#

but i started thinking it was long and pretentious so it got abbreviated to the "a" in a3x and i never spoke of it again

white valley
#

AISAv2 Lemon

#

cant believe you had silly codenames back then

twilit smelt
#

no that was just the name

#

that early

white valley
#

oh

twilit smelt
#

i guess at first it was like a "version 2" of AISA which was a previous project i did from like mid 2017 to early 2018

#

which got as far as having firmware with a boot picker, and a shitty DOS

#

with a hierarchical fs and stuff

white valley
#

damn

#

also

#

what prompted you to end the list of block devices with

#

"none more."

#

sounds like the ending to a poem

twilit smelt
#

i dont know.

#

i think i lost something between then and now bc it would never occur to me to terminate a listing with something cute like that

#

im too professional now

white valley
#

CUTE?

#

it's like the darkest thing ive read today

#

anyways i wish you experimented more with cool looking shit like those buttons

#

you have never made anything as cool looking as the panic screen of Kronos

twilit smelt
#

i have some dms with someone from a month before i started limnstation where i got AISA running in computercraft and these might be the only screenshots left of what it looked like lol

#

other than this

white valley
twilit smelt
white valley
#

grrefef

twilit smelt
white valley
#

wait what language did you write it in

twilit smelt
#

yukimi

white valley
#

did you make that one

#

or?

twilit smelt
#

oh this was the earliest earliest boot screen for limnstation

#

should go in the gallery

#

if u notice the background is the bob ross painting thats the icon of the github org and discord

white valley
#

yes

twilit smelt
#

thats where that comes from

white valley
#

did you make it

#

or is it a real lang

twilit smelt
#

i made it and i actually have some laying around

white valley
#

cant be worse than dragonfruit 🤷‍♂️

twilit smelt
#

aisa dos source code

#

mostly in yukimi

#

i was not using any form of source control at this point i was just storing this stuff locally

#

looks almost normal!

white valley
#

I WAS RIGHT

#

it actually could not be worse than df

#

so wait how did you manage to get so much worse

twilit smelt
#

if it evens it out any, there was no elseif

#

no relation to limnstation aisix

#

i reused the name like 2-3 yrs later

#

aisa + ix = aisix

#

this dos had a relocatable executable format

#

forgor about that

#

exec() which would load some kind of old-style flat binary at a fixed location and jump to it, vs chad dexec() which i guess loads these relocatable executables

#

so even 7 years ago i already had cruft

warm pine
twilit smelt
# white valley what is yukimi tho

also the name of this language yukimi came from the name of the lead singer of Little Dragon which was my favorite band of all time in like middle school and high school

#

i think the process of trying to make my project cooler has also greatly depersonalized it away from me

#

over the years

#

personality-wise its like its own entity with nothing to do with me now lol

#

like something im digging up in the desert that was already there rather than something im creating

white valley
#

anyways i just cant believe you DID actually make a usable language when you were like 17

twilit smelt
#

the name of jackal is probably the only personal splash that remains in the entire thing

#

yukimi?

#

i was 14

#

when i did that one

white valley
#

damn

twilit smelt
warm pine
#

i can't believe it was originally called the AISA Lemon

white valley
#

i wish i had the intelligence of 14/15 yr old you

twilit smelt
#

all the subcomponents were named after citrus fruit and dragonfruit was adjacent to that

#

some of the citrus names are still in there

#

like kinnowfb for the framebuffer card and amanatsu for the peripherals bus

white valley
twilit smelt
#

i think only those two have survived into present day xrstation

twilit smelt
#

of meat

#

and not citrus

white valley
#

nope

#

this is called jackal food

#

sadly not a citrus

#

:(

warm pine
twilit smelt
#

that was like intentional bc it was a lot more goofy and zany

#

at the time

warm pine
#

shatkora would be a super zany choice

twilit smelt
#

i was also a way more goofy and zany person based on these ancient dms im crawling through to find these pictures lol

#

im evil now

white valley
#

you turned from goofy tech enthusiast to bored antichrist making the new satanos

warm pine
white valley
#

looks cool

twilit smelt
#

i went through the "list of citrus fruits" article on wikipedia

#

and noted down ones that sounded cool

#

and would pop items off that list whenever i needed names for things

#

shatkora didnt make it

#

because shat, presumably

warm pine
# white valley looks cool

i highly recommend, it might be difficult to find, it's a dish from sylhet and available in the UK mostly because our bangladeshi community is composed in large part of sylhetis - they served in the royal navy in very large numbers as ship's cooks, and their families followed them to the UK after ww2

warm pine
white valley
warm pine
#

apparently the japanese have one called cumquat

warm pine
#

these things

white valley
#

lmao

#

did it get deleted cuz of the uh

#

f word

twilit smelt
#

no i just dont want to distract further from the cool old screenshots i dug up

white valley
#

ah ok i thought the mods deleted it

twilit smelt
#

waow my yt account has a 7 yr old AISA vid

#

shows the emulator

#

interesting way of showing the serial terminal

white valley
#

why are they all unlisted

#

theyre cool ass videos

twilit smelt
#

i have always lowkey seen my project as like unimaginably cringy

#

outside of a very specific niche of people

#

lol

white valley
#

also wtf is that desktop bg

twilit smelt
#

uhh

#

i dont know

#

i was an odd child

white valley
#

you were always the antichrist

white valley
#

:\

twilit smelt
#

maybe ur right about the antichrist thing

warm pine
twilit smelt
#

i vaguely remember what that was

#

i did an implementation of sandpiles and i noticed if i initialized the board to the maximum number of grains in each square, and then lowered the maximum number, it would cause very interesting patterns that would eventually stop. the frames of this video are the fixed points at the end of that process from lowering the "toppling" threshold from like 32 grains to 0 grains

#

plus some really strange compression

#

artifacts

#

makes it look a litlte otherworldly

#

maybe i found satan

#

in the sandpile

white valley
#

looks like something id see while doing LSD

twilit smelt
#

i have a friend who is deep into like gnostic mysticism and shit to the point of being nearly schizophrenic about it

#

im going to send him this and see what he makes of it

white valley
#

ngl this could be a great ARG video

twilit smelt
#

more normal one

white valley
#

sandpiles when sandpiles 2 walks in

twilit smelt
#

real numbers

#

the patterns got way more intricate and indecipherable

#

before i got completely absorbed by htis project i was a project hopper who would do stuff like that

#

i probably saw a numberphile video about sandpiles and spent the next 3 weeks investigating sandpiles

#

and doing zero useful research because i was mostly just trying to make it do weird interesting things

#

lol

#

this one has one of the failed early aisix attempts that got scrapped and redone

#

in it

#

with ofc yet another unique console design

#

this is early actual aisix

#

the system console looked like that at first

#

wonder if i still have that palm tree test image

#

OH NEAT!

#

I DO! but its from a time when the framebuffer was 15bpp and its now 8bpp indexed

#

i just cat'd it to the framebuffer inside old mintia and it looks psychedelic and interesting

#

ive never seen color depth mismatch cause glitch art that cool looking

#

normally its just fucked up in a boring way

white valley
#

looks like those weather pattern things

#

or infrared cameras

twilit smelt
#

extracted for ur viewing pleasure

#

interesting challenge trying to get this to display properly lol

#

close...

#

closer but still strange

white valley
#

and compression artifacts

twilit smelt
#

i found it

#

fyi its still for quite a while at the start but does start groovin eventually

#

this disturbs me for some reason

#

my 14 yr old self summoned a demon with sandpiles

#

look at that!

#

horns! a skull mask! a throne! shoulders!

#

started out trying to imlpement some Ps APIs tonight

#

and now im freaking out over a demon king in some pixels i generated 7 yrs ago

queen torrent
twilit smelt
#

Flibnort nd

#

(your real alien name)

white valley
#

totally normal day in the life of the antichrist

#

tries to implement some Ps API

#

ends up summoning demons

queen torrent
mortal thunder
#

"okay so this is sort of the nasty structure we build which is everybody's pointing this way at each other"

#

this is uh

#

why i dont have a complete image of how these things work in nt

#

that and the fact i took like a 5 month long break

mortal thunder
#

but i do have to say that this presentation is well done

#

whoa that's crazy

#

im surprised that the name XR/station came about before XR/17032?

mortal thunder
twilit smelt
twilit smelt
#

i still havent finished it, i should get cozy and do that rn

#

im like pathologically fascinated by these things

#

when i first starte dlooking into NT 4 years ago it seemed like a scary black box, never could have imagined how much id ultimately find if i dug for years lol

#

tons of documentation, books, taped presentations, even had some personal convos with the original designers

#

people who say its a closed system thats impossible to understand arent trying hard enough !!

twilit smelt
#

the fact they cant do phys->virt backpointers to take a physical page and invalidate all the mappings of it comes up

#

someone complains it makes their fully coherent network filesystem impossible to implement on NT bc the protocol relies on the ability to remotely shoot down pages on other computers

#

which ultimately relies on this ability locally

white valley
#

why does the caps word in your status keep changing

#

i swear it was BEAR yesterday

white valley
warm pine
#

as it turned out you are looking in the wrong place if you want a pv_list attached to the page for this

#

when the space efficient solution is really to track where files are mapped

twilit smelt
#

he basically goes "this is a deficiency we're aware of and its caused by a desire to save on memory but we might change our minds as systems continue to grow"

warm pine
twilit smelt
#

the guy also asked another question

#

i think it was "if some users are running excel off my network share and i want to update it, can they stop me from overwriting the executable file even though im the administrator, just because theyre running it?"

#

and lou's answer was like "yes you would not be able to overwrite it"

#

and the guy seemed mad that two questions in a row the answer was "no NT cant do that"

#

lol

#

in particular it was that you cant delete the old excel's name and put a new excel with the same name

warm pine
#

that one is a bit of a nasty one

twilit smelt
#

lou said this was because this isnt possible on FAT and they decided to forbid it on the other filesystems as well for consistency

#

NT itself has nothing against deleting a file name for a file thats still open, leaving the file's allocation on disk intact until the last handle is closed, and you can actually do this with NTFS

#

the issue is that the default is to open it with flags that forbid this

#

for this UX consistency reason apparently lol

#

but that restriction survives to this day

twilit smelt
#

@warm pine tricks for various forms of ipi i just thought of but u might have already figured out

#

well just one trick

#

if a cpu is idle you dont need to ipi it at all, it can just check for events to crunch lazily in the idle loop

#

and for like a tlb shootdown you dont need to spin wait for it to process the ipi

#

you can just proceed

#

(so long as you also have a guarantee that before a cpu switches into a non-idle thread itll definitely process any pending shootdowns and stuff)

#

this helps stop an idle second processor from being a burden on the first one

#

actually

#

the idle loop doesnt need to check at all

#

i think when a processor switches into the idle thread he can set a flag on himself saying "yep im idle"

#

if another processor wants to do a tlb shootdown on him he can do this:

if target not idle:
  ipi him and spinwait for completion;

else:
  target pending events |= SHOOTDOWN;
  if target not idle:
    repeat this whole thing;
#

and then the exception handler has this at the start:

#
idle = me.idle;
if idle:
  me.idle = false;
  if pending events:
    process them;

...

me.idle = idle;
#

i think this works

#

here the SHOOTDOWN event would do a full tlb flush (you were idle anyway so this probably isnt a big deal) since the sender processor immediately goes off and does other shit and so his information on what specific page(s) you should flush etc goes away with him

#

you have to do this in the exception handler and not just when you switch away from the idle thread

#

because otherwise you might, while idle, process a device interrupt that causes you to refer to like a mapped buffer that has stale tlb entries because it was put in place from another processor

#

so before processing any interrupt ig you need to do this

#

specifically interrupts i suppose

#

not really any other exceptions youll be taking while idle

warm pine
#

nowadays kernels are looping only for a short time then halting the cpu

twilit smelt
#

what i said after that makes that irrelevant

warm pine
#

yes, in practice you need to do certain things as you enter such a mode anyway so you can publish something to say "i'm abandoning the idle loop and going into such a mode as the only way to wake me now is by IPI" and then have a barrier between that and actually halting or whatever it may be

twilit smelt
#

actually this is even better on such a system, because coming out of those low-power states is so slow

#

and you dont have to spin-wait for it to do that lol

#

youll just know itll flush its tlb before the next time it might access this virtual address range you flushed

#

while handling an interrupt i set the idle flag to false in this pseudocode bc an interrupt handler is not that kind of quiescent state, and you need to go back to the normal ipi & spinwait thing

mortal thunder
#

because surely the idle loop pauses the CPU execution until an interrupt happens

#

i still dont understand?

#

even after the explanation

mortal thunder
#

oh wait this is only for the TLB shootdown right

#

because yeah the TLB shootdown doesn't really need to be instant

#

you just need to trust that there will be no code that tries to access the memory region you're shooting down between the TLB shootdown request and the time the actual shootdown is performed

twilit smelt
#

ok i implemented it

#

high tech test: every time it avoids sending a shootdown IPI it prints the number of the target cpu who was spared one

#

is this novel

#

its not right

#

i always get my hopes up that i just invented something whenever i have a new idea i havent heard of in something else

#

in this case using the idle loop as a quiescent point to avoid IPIs

#

im 99.999% sure if its a good idea that linux at a minimum is already doing it though

heady bobcat
#

yeah I'm pretty sure Linux is doing something similar to this with what they call lazy TLB

heady bobcat
sterile frost
#

its the fireworks test

twilit smelt
#

they r fireworks

heady bobcat
#

oh lol, that it intentional

twilit smelt
#

it spawns like hundreds of threads

sterile frost
#

it stresses the scheduler

twilit smelt
#

and each of them pilots a little firework pixel

#

it also stresses my allocator (as well as my system space range allocator which is why its of use here)

#

@mortal thunder wrote it for his OS at first and then rewrote it in jackal for mintia2

heady bobcat
#

nice.

twilit smelt
#

i am very proud of the fact that it like

#

works really smoothly on my 20mhz fantasy computer with hundreds of threads running in the guest os lol

heady bobcat
#

yeah lol

#

it would be interesting to see mintia in action on a modern x86 CPU

sterile frost
#

are there any cool concepts you implemented in mintia i can steal for my own kernel? meme

twilit smelt
#

it also stresses scalability of the smp scheduler and stuff

#

and of timer management and whatever

twilit smelt
sterile frost
#

yeah but it's not like i can just steal all of that, i don't really want to create mintia2 but written in not jackal

#

unless it's a challenge

#

but jackal translates quite nicely to C so it would be a lame challenge, except for the part where it's not running on xr17032 or fox32

white valley
#

mintia 2 will run on amd64 too tho

sterile frost
#

yeah if i get to it

#

or will beats me to it with his elf->xlo + his own amd64 port

#

i should get back to the amd64 mintia2 port

#

with my half assed toolchain shit

mortal thunder
#

i should get back to boron someday

#

but i don't feel i'm quite ready yet to invest time into studying how memory management works in NT well enough to replicate it

white valley
#

i tried getting back into my project and failed hard

#

i should pay will to write the backend

twilit smelt
#

im no good at compilers

#

youd want to pay one of the r/pl discord people

white valley
#

im not smart enough to program anything including and past the IR stage

twilit smelt
white valley
#

i just stand there staring at the screen tearing flesh off my fingers thinking very very hard about it

white valley
#

why was it calling a function in the first place

twilit smelt
#

idk

white valley
#

shouldnt it have been an assembler macro

twilit smelt
#

its only done in assembly in that spot

#

on fox32

#

i also probably wasnt used to the new assembler which lets you do expressions and stuff lol

#

neither my nor ryfox's old assembler let u do expressions

white valley
#

hmm what reason would you have to flush (specifically) the icache of another processor?

twilit smelt
#

of another processor u mean

white valley
#

yes

twilit smelt
#

ok so basically

#

on xr17032

#

the dcache is not coherent with dma

#

so you need to shoot it down after dma into main memory completes or youll see stale data

#

the icache is not coherent with ANYTHING

#

so if you write instructions into a page, you need to flush the icache before you can execute them

#

you want to do this on all processors in case a thread running that code migrates to a different processor

white valley
#

would it be hard hardware wise to just make dma invalidate the cacheline

twilit smelt
#

by modern standards no

#

its an artificial limitation for 1989 larp vibes

#

lol

white valley
#

damn

twilit smelt
#

the cache details of xrstation are based on mipsco workstations from the late 80s

#

back when "mips computer company" existed and mips was their architecture for their workstation computers

#

ive seen some evidence that really early in development the architecture was formally called Rx and people referred to it informally as "the mips architecture" like in reference to the company mips

#

and then "microprocessor without interlocked pipeline stages" was a backronym to legitimize that name for the architecture

#

that could also be completely wrong.

#

but i have seen the mips architecture referred to as Rx in usenet posts from the mid 80s

white valley
#

email the people who worked on it?

#

are they still alive

twilit smelt
#

Rx because the processors were called R2000, R3000, R4000, etc

#

so like "x86" being because 8086, 80186, etc

#

what did the R stand for?

#

probably RISC.

#

creative!

twilit smelt
white valley
twilit smelt
#

like for no reason they just thought it sounded fun

#

which is unlikely

#

so it probably did stand for that originally

#

also iirc the name is literally wrong

#

and even the R2000 did have interlocks in the microarchitecture.

#

but dont ask me where i heard that i probably saw it in a usenet post that ill never see again

#

with 8 processors running the fireworks test i still average 1000 ipis per second lol

#

but thats across every like pair of processors

#

assuming a random distribution you can divide in 2 to get 500 ipis received per second

#

divide that by 8 to get 62.5 received per second per processor

#

thats pretty bad still

#

well

#

no it makes sense

#

that just reflects the number of times it goes idle and then quickly get poked by a firework thread waking up and being enqueued to it

#

with the number of threads waiting on short timers i think 62.5/sec is pretty much what youd expect

dense vigil
twilit smelt
#

i love smp so far

#

btw

#

its really fun

#

im good enough at locking from 3 yrs of doing old mintia vmm that i can say "i like smp" rather than goin glike AGGGGHHHHHHHHH AHHHHHHHH GODDDD WHYYYYYYYYY

#

but yeah the new opportunities for cool optimizations like the idle loop thing are fun

#

its also just hilarious this is increasingly the most overengineered fantasy computer of all time

icy bridge
#

will xrstation get acpi someday?

twilit smelt
#

NEVER! but mintia2 will be #1 on the uacpi leaderboard one day

#

ok

#

top 5

warm mural
#

I will do everything in my power just to beat mintia on that benchmark

#

i swear

twilit smelt
#

well you have like a year to get ahead

#

before i can even compete

#

so

#

shouldnt be hard

heady bobcat
#

honestly I'm surprised that my kernel does so well on the uACPI benchmark (when it's not executed on skill-issued AMD virtualization), because I haven't profiled it like at all lol

twilit smelt
#

and like

#

#4 on the uacpi leaderboard

queen torrent
#

the uacpi leaderboard is just how fast your cpu is and how much your allocator values speed over memory usage

twilit smelt
#

i was about to mention the fact that it doesnt normalize in any way against varying configs

#

it lists ppls cpus but like

#

thats not the only factor

heady bobcat
#

yeah

#

it's not the most fair benchmark

teal trench
#

make sure to map everything as uncached for a free 0.33x score multiplier

dense vigil
#

no way to make it more fair without a centralized runner

#

it started mostly as a meme anyway

queen torrent
#

the real benchmark would be how much fps it gets on factorio troll

heady bobcat
#

gotta port factorio first

queen torrent
#

I get 0 fps because it crashes during initialization

glass sparrow
#

basado

twilit smelt
#

i decided earlier that after im satisfied with mintia and xrstation in like 2 yrs ill make a 3d game engine from scratch w/ all tooling from scratch, might even do it in jackal

#

so watch for that in 2 years.

#

thatll take me another 5 yrs im sure

night needle
#

i did that once

#

was fun

white valley
night needle
#

as long as you only do opengl

#

vk will remove your will to do anything

white valley
#

but yeah id rather have the convenience of opengl than deal with vulkan

dark shard
white valley
#

but can you will will to will himself to will working with vulkan in the first place

heady bobcat
#

lol

twilit smelt
#

unfortunately i went to take out the trash

#

and i slipped and fell on my ass

#

and kinda writhed on the ice for about 30 seconds with the wind knocked out of me

#

anyway

#

i have forgotten what mintia is.

#

so bye.

glass sparrow
#

imagine not having a massive cuchion of fat on your ass

twilit smelt
#

i do

glass sparrow
#

that makes you invulnerable to fall damage

twilit smelt
#

but it magically missed that

#

and went straight for my tailbone just above that

#

u see

glass sparrow
#

that sucks, did you break anything?

twilit smelt
#

i dunno

#

im just laying in bed with my tailbone and left arm hurting really bad

glass sparrow
#

take care man

#

those things can be dangerous

cunning mortar
#

take care

twilit smelt
#

thank you

#

wasnt asking for sympathy tho

#

im a big strong masculine macho man

acoustic sparrow
#

really.

twilit smelt
#

yes

#

im so macho i can resist the temptation of secret club channel

white valley
#

are u ok

#

you should sue yourself for not taking care of the ice

twilit smelt
#

And I'm left handed

#

So that's bad

white valley
#

holy shit thats one of my worst nightmares

#

you should go see a doctor

#

are u sure it isnt fractured or something

twilit smelt
#

It may be

#

It's getting MUCH worse

white valley
#

ask someone to drive you?

#

are you not insured

warm pine
#

i am building a library on STREAMS, let me know if you are interested in some of the papers

#

mostly they are about ways to make TCP/IP stack scale with STREAMS

#

it turns out that the reason the SVR4 one didn't was because the whole tcp/ip processing was multiplexed onto a common stack - and parallelising what was a common stack is not easy

warm pine
twilit smelt
#

I broke my elbow

#

Radial head fracture

#

My arm is in a splint

#

This will impede mintia

toxic grove
#

I hope you heal fast

#

If you don't mind me asking, how did you do it

twilit smelt
#

i slipped on ice while taking out the trash lol

toxic grove
#

I was half expecting a sport injury like what oberrow did a little while back, but then I thought about it a bit and realised considering your projects, that is quite unlikely. I guess I hope it isn't too bad

warm mural
#

Wdym considering his projects lol

toxic grove
#

I was trying to say it in a non-offensive way, but making an OS in a custom programming language on a fantasy CPU suggests he doesn't have much of a life

twilit smelt
#

i mean yeah thats a common way to cope with someone being way more accomplished than you

#

"they dont have a life!"

#

actually im just better but thanks

white valley
#

please be more careful

#

shit like this tends to happen when everything's going alright and you're not paying much attention

#

were you given a time range of when it might heal?

twilit smelt
twilit smelt
white valley
#

have u considered what you can do in the meantime

twilit smelt
#

i can still type so

#

but writing will be more difficult

#

its my left arm i broke

white valley
#

yeah but thats ur dominant

twilit smelt
#

and im left handed

white valley
#

or do you type a little, think and repeat

#

for me my typing speed doesnt even matter because most of the time im looking at the code thinking anyways

#

unless it's something trivial

glass sparrow
twilit smelt
raven drift
twilit smelt
#

mostly he just annoyed me and I was dunking back though

#

I don't actually know anything about him lol

twilit smelt
toxic grove
twilit smelt
#

this is cool

#

continuations basically

twilit smelt
#

u couldnt do it either

warm pine
#

i won't argue that it is more efficient to use STREAMS to implement a TCP/IP stack than to do it entirely bespoke - that would be an absurd argument because bespoke always > turnkey for performance with all other things equal, but there's just nothing that stops you doing a good job there

twilit smelt
#

im still more excited for implementing a pty with streams

#

bc my old duplex driver thing was such a mess

#

pty and pipes

warm pine
#

it will be beautiful there

twilit smelt
#

but i do want awareness of how to do non-bad networking as well

#

so i dont have to redo it later

#

have you thought of how to avoid recursion in streams modules

#

its not as easy as with the IOPs because the streams part is like data-driven rather than request-driven

#

well idk i guess you can do it basically the same way where you have a per thread list of streams data packets which are annotated with their destination and you just run down that and send them off and repeat until that list is empty

#

and youd probably represent this whole thing with a one-level IOP

#

at the level of the stream head

warm pine
#

if that makes sense

night needle
#

it's not impossible

twilit smelt
#

idk

#

u tell me

warm pine
#

and with service routines you could allow them to make a call into the outer put loop when they want to put to the next queue

warm pine
twilit smelt
#

bc of what i mentioned

warm pine
#

i am codeveloping them

twilit smelt
#

about them being data driven instead of request driven

#

so IOPs arent really applicable as opposed to a bespoke data packet structure that you pass around instead

warm pine
#

i agree, it doesn't fit the concept

#

STREAMS are streams and you only introduce a level of complexity by pretending that there are discrete requests as such (there might be logically discrete packets from someone's perspective if it's a datagram stream but that's not well-represented by IOPs)

twilit smelt
#

your research into them has gone deeper than mine, i just read about them while racking my brain thinking there has to be SOME way to do the duplex driver thing in a cleaner and more generalized way and found that streams was the way

#

also a lot of questions were answered by a passage in one of those papers about using a stream message with type READ sent down the write queues when you initiate a read lol

#

explains when you set up zero copy stuff for devices where its relevant

warm pine
#

there are certain things that simply don't make sense for character devices/socket type things like cancelling an individual "request" and that makes life a lot easier in some ways v.s. the IOP world

warm pine
#

i saw it first in the STREAMS Programming Guide

twilit smelt
warm pine
#

since with character oriented interface you would never actually want to be able to just cleanly pluck something out of the queue but leave other stuff pending. if you are trying to cancel a write then something has gone horribly wrong and the stream is going to be abandoned

twilit smelt
#

well but like

warm pine
#

for reads i think it is slightly more debatable

twilit smelt
#

in old mintia it could happen that u start an async write to a tty over the serial port and then your process is terminated before that finishes

#

the write request just gets dequeued immediately

#

and that was convenient

warm pine
#

for a situation like that, if i really didn't want to just clear out all writes queued, i might just accept the MDL will persist for a short while

#

and it's a higher-level duty that the write queue isn't filled up so much that it burdens memory

twilit smelt
#

i was thinking the cancel routine in the streams driver (which provides the one-level iop facade) would lock the stream the iop was targeted toward, and walk a list of buffers dependent upon the mdl and mark them all with a "cancel ASAP" flag. next time a module sees it, it just discards the buffer and decrements a count and completes the IOP with like STATUS_IO_CANCELLED when it hits zero

#

so you call the cancel routine and then wait for final completion

#

so you can get completion much earlier than you might otherwise but still leave the buffers in the custody ultimately of the stream

warm pine
#

with classic STREAMS it is just sort of assumed that the arrival of some data to the queue is your point to complete read(), they didn't have an asynchronous interface to it so it waited synchronously at the level where the stream head interfaces to the VFS or the STREAMS-specific user API if e.g. flow control was asserted

#

so for us that is not an acceptable solution, and that's where we would instead have IOPs queued up

twilit smelt
warm pine
#

and cancelling the IOPs there is easier to do, since it's just the stream head logic that needs to take it off the queue, it's not made it into any of the modules

twilit smelt
#

its easier if you just pin anything you send down the stream since then you can just leave those pages orphaned if the source process terminates early, and they get freed when the refcount finally hits 0 later

#

i was hoping to sometimes avoid that though

#

that also has accounting problems

#

leaving those pages orphaned

twilit smelt
#

you could do it more like

warm pine
twilit smelt
#

each streams message has a pointer back to the originating IOP

warm pine
#

but your idea for expediting the process is not bad

twilit smelt
#

and thats the only direction you have to look in

#

you set a "cancelling" flag in the IOP

#

and the modules check that before they do anything with a message

#

if they see that they discard it and a count in the IOP is decremented

#

you could put this in your routine for popping a message block off a queue

#

so its transparent to each streams driver

#

and the IOP's existence is guaranteed by the fact theres an associated message block

#

so no locking required to check that flag

warm pine
twilit smelt
#

and the flag is advisory so yeah

#

if it turned out absolutely necessary to get robust cancellation, id do a big lock for the entirety of streams

#

i dont think it is though

#

but for me personally robustness >>>>>>>>

warm pine
#

i thought about it a bit when i was out for a walk and while it would be nice in a very abstract sense i just didn't see what value it would add either to pipes, to sockets, or to ttys to be able to undo writes that, as far as the application is concerned, have happened

twilit smelt
#

again its a memory accounting issue

#

if you did a 1mb write over the serial port and then bailed out, it sucks to have 1mb completely unaccounted for until the serial port has gotten around to it or whatever

warm pine
#

i feel that the accounting there should be done in terms of the receive buffer/send buffer size of the stream

#

for a 1mib write presumably some of that would be held off at the stream head by the flow control mechanism - the IOPs are queued up at the stream head, and a bit of them at a time is dispatched to the first module's queue, enough to fill to a high watermark, then when the low watermark is reached, a bit more of the IOP is dispatched

#

and the send buffer of the stream is accounted for as wired memory

#

this was also important to me because i want to make sure that i allocate a pool of mblks and dynamically size the pool so that there are mblks enough for all the existing streams to not run out of them at an inopportune time

#

this is easier said than done because with networking in particular you have parameters that can vary around things like the MTU, so knowing how many mblks you need is a dynamic question

twilit smelt
#

so you need a count of derivative mblks off the IOP anyway for this purpose

warm pine
#

but your solution solves that problem

twilit smelt
#

you can avoid this if the data is small though

#

if its like <256 bytes you can just do a non-derivative mblk backed by kernel heap that you copy the data into, and let the thread carry on

#

you can complete the IOP right away

#

as a matter of fact

#

and leave the mblk orphaned off in there until it gets out into the world

warm pine
#

so for an IOP pointing to an MDL which won't be turned into kernel buffer copies, you've got to keep track of it. but it's still data-based keeping track of things, rather than having to know at what is potentially a very low level when a request is really "complete" in some very specific sense, because with the character interface, "request completion" is when you've gotten a request in its entirety onto the first module's queue, but with an MDL the iop completion must be deferred

twilit smelt
#

doign a read is similar

#

or identical

#

when you send down the READ message you can attach an MDL to it

#

to read into

#

and this message adds to the derivative mblk count of the IOP

#

maybe

warm pine
# twilit smelt if its like <256 bytes you can just do a non-derivative mblk backed by kernel he...

these i'll be able to get very cheaply since i am taking a page from the BSD tcp/ip stack where there is a pool of mbufs (roughly equivalent to mblks) with preallocated data block of something like 150 bytes, and for a lot of the network stuff you do these work well, space can even be programmed to be left at the start of the mbuf, enough space for the tcp and ip and ethernet layers to insert their appropriate headers

warm pine
#

you can see easily how it would be terrible for performance when there's bulk transfers going on but every time you get a hundred bytes of data you complete an entire IOP

#

now in some cases you might direct an iop to be completed only when it's completely filled up. but that is not always what you want and some level of intelligent behaviour would be useful. i haven't figured out how this will look yet exactly. there's a very fine line that if you cross you'll introduce unacceptable latency

#

one of the papers i posted yesterday mentions the problem i think

twilit smelt
#

otherwise you just leave your IOP set up at the stream head and lazily collect data into it as it comes down the chain

#

plus reading in whatever is queued up already

#

this is how like a pty would likely work

#

at least in cooked mode

warm pine
twilit smelt
#

so when u write to a pipe thats being read from, that turns into literally just a MmCopyVirtualMemory between the writer process and the reader process inside the pipe streams driver

#

cooked mode pty will be allocating new buffers for cooking bytes into in both directions

#

so this isnt applicable there

#

i got basically one-copy working with cooked mode ptys in old mintia but it was soooooo clusterfucked lol

#

and probably not even faster cuz it required special copy functions that would cook bytes on the fly

warm pine
#

i was impressed by the old duplex driver (as much by what i didn't understand as by what i did) but i am really excited to see the terrible beauty that STREAMSified duplex will birth

twilit smelt
#

it was me learning why the NT guys didnt even attempt an async posix pty driver

#

this new streams understanding will make it a lot easier though i think

#

they did have a tty implementation but it was inside the posix subsystem server and operated by synchronous IPC iirc

#

and not the NtReadFile and so on

dense vigil
#

how are u

#

typing with your right only now?

twilit smelt
#

i can type with my left hand if i twist my arm weird

#

so im doing that

#

lol

dense vigil
#

thats probably not super healthy

twilit smelt
#

that sounds bad but the splint is keeping it in place while i do it so it doesnt hurt

#

so its probably fine

#

and using my left hand isnt in and of itself problematic

dense vigil
#

true

twilit smelt
#

cuz the problem is all the way at my elbow

dense vigil
#

i hope it heals fast

twilit smelt
#

thx

dense vigil
#

i broke my left arm when i was a kid

warm pine
dense vigil
#

the worst part was that i could barely move it after removing the cast

#

since my muscles basically went offline

#

during the montth

glass sparrow
#

ive never broken anything

#

im just that good

twilit smelt
#

i hadnt broken anything and was proud of that

#

then my legs slipped out from in front of me while i was taking out the trash at like 4am

glass sparrow
#

get fucked

twilit smelt
#

and now i have

glass sparrow
#

membership of the special unbroken boy revoked

dense vigil
#

lesson learned, never take out the trash

glass sparrow
#

no more free pizza party for you

white valley
#

i just keep it in my room

glass sparrow
white valley
#

im sitting in a huge pile of garbage rn

twilit smelt
white valley
glass sparrow
#

does breaking a bone hurt a lot

#

or is the shock dampening it

dense vigil
#

yes

twilit smelt
#

i didnt even notice i hurt my arm i just got up and kept taking out the trash

white valley
#

i imagine it hurts the most after u break it

twilit smelt
#

it didnt start hurting for about an hour

dense vigil
#

and it feels weird moving your arm

#

like it doesnt move if u try

#

or moves weirdly

cunning mortar
#

sucks to hear, will

#

have a swift recovery!

glass sparrow
#

it wasnt the leg so no cool cane

twilit smelt
dense vigil
white valley
twilit smelt
#

which explains why i didnt get what infy is describing bc its basically a crack in the knob that goes into the elbow joint and so didnt directly affect movement until the swelling set in

craggy spire
glass sparrow
#

a crack in the knob? damn man thought it was only bones you broke

twilit smelt
#

but i went to the urgent care instead when it opened and i think that was like $50 out of pocket so.

dense vigil
#

are u insured?

twilit smelt
#

it is illegal not to be insured

#

in the usa

#

i believe

#

so yes

dense vigil
#

ah ok

twilit smelt
#

nvm i got confused

#

i think i was thinking of car insurance

#

lol

white valley
#

so it is not illegal to not have health insurance?

dense vigil
#

being poor is illegal trl

twilit smelt
#

it is legal not to have health insurance

#

it is illegal to drive a car on the road w/o car insurance

craggy spire
glass sparrow
#

ill keep it in mind for the next time I consider hurting my richly innervated nociceptors

twilit smelt
twilit smelt
#

adrenaline for an hour?

dense vigil
#

lol

#

he wouldve died

white valley
#

idk what kind of drugs youve been using

#

maybe they combined into a painkiller

#

LSD?

glass sparrow
#

what

dense vigil
#

what th efuck

white valley
#

who tf takes out the trash at 4 am

#

he was clearly on something

twilit smelt
#

can i tell you guys about a memory from world of warcraft from when i was like 4 or 5 years old

dense vigil
#

it's your thread afterall

twilit smelt
#

okay

#

i wont then

glass sparrow
#

great

dense vigil
#

lol

twilit smelt
#

i only tell stories if it derails something inappropriately

craggy spire
twilit smelt
#

yeah maybe

dense vigil
#

me when i use smart words

twilit smelt
#

hes a doctor i think

#

or training to be one

dense vigil
#

ohh

white valley
#

is it possible that you happened to swallow one of these when you fell?

sterile frost
#

@zinc trout fact check pls thanks

white valley
glass sparrow
white valley
#

-# but is it not possible

twilit smelt
digital pivot
#

wtf you played world of warcraft when you were 4 years old

warm pine
dark shard
warm pine
#

it was called "Hell Joseon"

digital pivot
twilit smelt
# twilit smelt in the earliest versions of world of warcraft from the early '00s, before the fi...

if u see the bunny ear looking part in the top right, that part was very significant in the lore from warcraft 3, but hadnt been designed or put into WoW yet, so the bunny ear looking area was just blank and non-interactive on the map. there was a pass from one of the southern zones up north into it, but it was blocked by a fallen tree trunk. so obviously as a like 4 year old i was fascinated and wanted to get up to that big area

dark shard
twilit smelt
#

even though i was still on a coastline

#

next to some mountains

#

this was incredibly creepy to me

#

especially when i found a totally empty tower along the coast with seemingly no purpose, a 30 min walk from any game content in either direction

twilit smelt
#

they are blocked off by invisible walls

#

and the northeastern part of the continent was totally remodelled when they put something there

#

the strange thing is, they didnt put it here. if you walk along that coast, this is still exactly like this to this day, just blocked off by invisible walls.

#

they did some non-euclidean shit where the aforementioned mountain pass blocked off by a tree trunk was unblocked and if you walk down it, you go through a portal that takes you to a totally different place that isnt even on the same continent technically

#

so this place became even more limbo and strange

#

its like an alternate reality

white valley
#

wtf

#

portal as in like, a teleport or a literal portal that you can see through

twilit smelt
#

a teleport

white valley
#

ah alr

digital pivot
twilit smelt
#

technically "Quel'Thalas" but if you look that up, youll see the new quel'thalas accessible by the portal i just talked about

#

theres two quel'thalases

#

one is a like (for lack of a better word which id use if i could come up with it) liminal, backrooms quel'thalas and the other one is the playable, populated quel'thalas

#

this is backrooms quel'thalas on a detailed map that was official merch during that early period of the game

#

but when they added it as a playable area, they changed the map

#

but they didnt change that actual coastline. like i said, they turned that mountain pass into a portal

#

and the coastline is still fucked up and wrong and they hide it from you with invisible walls

twilit smelt
# twilit smelt this is backrooms quel'thalas on a detailed map that was official merch during t...

the creepiest part to me, of when i was trying to find this place as a toddler, is that there was no music set for that distant unpolished part of that coastline and so it defaulted to the music for the closest creepy-themed zone which was this https://www.youtube.com/watch?v=E-fMhVtaYVY

The Western Plaguelands are located in northern Lordaeron, wedged between Tirisfal Glades to the west, the Eastern Plaguelands to the east, and the Alterac Mountains to the south. It is filled with a smoky gray mist and the creatures here are blighted and sick, angrily attacking anyone who wanders too close with surprising ferocity. The land is ...

▶ Play video
#

so id just be hugging the coast with some tall mountains walking along a coast for like 30 min with this playing while the map says something "wrong" about where i am

#

so that was nightmare fuel as a little kid

warm mural
#

From STREAMS to WoW lore

#

This is peak osdev

twilit smelt
#

somehow to this day this is still strangely fascinating to me

white valley
warm pine
#

never mind, hell joseon turns out to be different after all

#

but the style is very similar to these wow maps

twilit smelt
#

thats a map of hellfire peninsula from wow

warm pine
twilit smelt
#

with korean text superimposed

#

you go through the portal on the right to get there

#

and technically its another planet

#

theres space aliens in wow

#

but theyre orcs so its still fantasy

digital pivot
#

you still log on to wow?

twilit smelt
#

not relaly

warm pine
#

you're right

twilit smelt
#

its part of outland.

#

i still remember this despite not playing the game regularly in literally 12 ish years

#

this actually ties in to what i was saying

digital pivot
#

what's happening on this map?

twilit smelt
#

i mentioned how they "added quel'thalas" by putting a portal in that mountain pass and blocking off the fucked up, incorrect coastline with invisible walls

#

and i said it wasnt even on the same continent

#

the quel'thalas you get teleported to is actually part of the outland world files

#

just like

#

50,000 miles to the southeast

#

both were added in the same expansion

#

if you edit the world files to add a land bridge you can walk from one to the other and confuse the shit out of people when you show up in outland as a level 1 blood elf (because the portal to outland is not traversable until a much higher level) and then get your account banned from the game.

#

there are videos of people doing this.

twilit smelt
#

magic blew up the planet

twilit smelt
# twilit smelt if you edit the world files to add a land bridge you can walk from one to the ot...

In this video, we will look at why we still can't fly in Quel'Thalas and the Azuremyst Isles even after the cataclysm revamp where flying was introduced in Azeroth. Enjoy!

=======================================
Music used:
Eversong Woods and Azuremyst Isles Music
Silent Partner - Yard Sale

Links:
Follow ...

▶ Play video
#

this is a video about this topic

#

if you cant tell i have a like secondary or tertiary autistic fixation on strange video game corner-cutting

#

which is probably 100% downstream of that experience i described of the map being "wrong" when i was like 4

#

now its like spiritually fascinating to me forever

digital pivot
#

for the current year it doesn't look very good

twilit smelt
#

the video is looking at content from 2006 or 2007

digital pivot
#

people are still sitting in locations this old?

twilit smelt
#

they r still integral to the game

#

you still quest through them to level up ur new characters and stuff lol

digital pivot
#

i see

twilit smelt
#

theyve built the content out in layers without ever completely obsoleting old content

#

if they do, they remove it, and theyve removed very very little since the game's launch in 2004

#

this is one of the things that makes wow really interesting for data mining and stuff

digital pivot
#

are new locations much different from the old ones ?

#

or is the core the same

twilit smelt
#

i dunno

#

i havent paid attention

twilit smelt
# twilit smelt https://www.youtube.com/watch?v=9rFE8HzIijY

at this timestamp he flies between hell joseon and new quel thalas https://youtu.be/9rFE8HzIijY?t=224

In this video, we will look at why we still can't fly in Quel'Thalas and the Azuremyst Isles even after the cataclysm revamp where flying was introduced in Azeroth. Enjoy!

=======================================
Music used:
Eversong Woods and Azuremyst Isles Music
Silent Partner - Yard Sale

Links:
Follow ...

▶ Play video
#

dont ask how he did that he probably used some custom world viewing tool that a group of 5 wow data miners keep under lock and key

#

apparently this guy died of cancer

#

like a year after making this video

#

so thats some information

#

after im satisfied with mintia and xrstation im gonna make a shitty mmo thats extremely shoddily put together on purpose so its fun to explore places youre not supposed to get to.

#

i will spend 8 years doing this

digital pivot
#

wow: lotr edition?

zinc trout
sterile frost
#

idk what i was referring to at this point lol

#

probably some of the "why it hurt only after some time part"

#

and the other stuff that was said

#

idk you're the medical guy meme

green pelican
twilit smelt
#

Coulda been worse I could have died!!

fair jetty
#

hope u will get better will

lucid umbra
#

^^^^ hope u heal quick

fair jetty
twilit smelt
#

tech bro pseud civil war...

#

the blue check Nazi eugenicists are turning on their master

white valley
#

theyre desperately trying to sound serious and insulting

#

but it just ends up being funny af

twilit smelt
#

i want to repeat that now, lest you think it a typo.

#

its scary the type of idiot who would take this super seriously is like the next ruling class

white valley
#

has the same energy as a middle schooler going "FUUCK YOU. Bastard. Hehehehe. You think i misspoke? FUCK YOU!"

white valley
twilit smelt
#

its just funny how dumb people talk when theyre trying to sound smart

signal zinc
#

who gaf 🥺

twilit smelt
white valley
#

and thinking it's a good measure

twilit smelt
#

ahhh youre not adding anything stop overanalyzing my shitpost

signal zinc
#

cta :)