#Astral
1 messages · Page 32 of 1
yea guys what is the x86_64 archetecture?
never heard of it
probably some weird and niche arch i mean x86_64 is so weird
yeah everybody knows that PowerPC achieved world dominance already 
Also current image run in qemu as is just page faults before doing anything
💀
I need to update that stuff
When I work on the wine blog post Im likely gonna update a bunch of stuff
I have been trying to get steam to run for at almost 2 weeks now, maybe at some point I should just raise the white flag
so close yet so far
there is an EXTREMELY annoying bug where the unix syscall dispatch will be called with a zero rcx
and trying to get the dll from just the return rip has gotten me nowhere because I think it applied non-logged relocations
yeah I think I am just gonna take a small break from trying to get steam to run, see what other cool stuff I can try running and write a blog post and push whatever I have already
port gtk
I mean more as in wine stuff
I'm gonna probably try:
baldis cuz unity game - DEFERRED because unity bs might take too long
spooky jumpscare mansion - works, very slow
factorio - window opens, does not load
scp cb - no worky :(
ftl - works!
spooky! 
baldis seems to be doing some bullshit
ok I think baldi is going to take an eternity to do that so not gonna test that today
yoo
ftl seems to be booting up
its a bit in slow motion but its playable
spooky's jumpscare mansion seems to be loading
cool
this is so slow 😭
oh lord this is laggy
it reaaally doesn't like to respond huh
I think it wants a loopback tcp connection which is kind of broken on astral
anyways thats enough for me today
if anyone has any cool and reasonable game ideas for me to try, lmk
hello neighbor
hoi4
keyword reasonable 
hoi4 would probably run at like
1 hour per hour
real time ww2
or you can run age of civilizations 2
@grand shadow diversion: look into xnu's "zone cache" its their implementation of slabs and magazines its quaint
"maga zone cache". 😁
make america great again zone cache
is this trump's plan for managing the strait of heap-uz
How does it differ from the classic solaris way of doing things
is it described in the book? I haven't gotten that far yet, I should continue it
mostly implementational
honestly im not sure its unique actually
but like
they have a region of virtual address space where the slabs go
and they have an array of descriptors elsewhere which they index with the relative page number inside that region and they grow it as needed by adding more page frames to it
One thing that freebsd does different for example is having two different magazine types, one alloc and one free
Which prevents thrashing
is that different isnt that just how it works
the classic bonwick one doesn't do that
Ack, added into my list of stuff to look into
ayooooo 
local os dev discovers that mesa software rendering is actually dogshit and abysmally slow even on good hardware

Tbf it was like 1 core on a slow hobby os with questionable code quality
sure that may be contributing
but it does actually suck, this is not entirely your fault 
ULTRAKILL 
I don’t know any other DRM free games on steam
That would work well
True I should
0 fps gaming
bash 5.3?
how could you optimize it ?
I wonder what your main bottleneck is
CPU rendering
u cant say without knowing the linux numbers on a similar vm
also its a pixel game lol
Yooooo based game
same
Probably not one thing in particular but a combination tbh
Syscalls using cr2 as a temp 
And probably other things too
And don’t say talk is cheap send patches because I can’t even compile astral to make the patches which I would try to 
Software rendering should be plenty fast
yeah
is cr2 slow?
vmexit?
It’s serializing
ah
💀
I don’t expect the worlds largest speedup
It it certainly can’t hurt to patch it
💀
maybe fbdev is an issue?
tho it shouldn't be terribly slow
actually it shouldn't really matter because plainfb is similar enough to fbdev
Is there even an easy way to speed up fbdev? Idk how mode setting works though I know it’s in the middle of a full GPU driver and the GOP/VGA?
no
plainfb is whatever you get from the firmware
local man is baiting me to continue working on lil
Then fbdev is a thing for userspace to use that properly and get info on it and MMAP it?
fbdev is an interface
Yeah
Do it
is lil usable btw
it works fine but it crashes on 50% of real hardware
works for eDP output on Skylake/Kaby Lake/Coffee Lake, hopefully
LVDS output on Sandy Bridge/Ivy Bridge is in the works
Erm not anymore
Something something profiling is needed
Doing that made no difference btw
And now I use 8 more bytes of memory per cpu grrr
What a waste 
Should've done a tss scratch space like Linux
Yes its a secret cheat code to make your cpu 10% faster
literally unusable
Ive got the blog post almost drafted down on my notes, then Ill pass to my computer and do a second pass
it isn't, Mesa llvmpipe sucks 
that was at a much lower resolution, which a lower color depth, with an astronomically more optimized rendering pipeline
even on Linux it's still slow as crap
especially on weak hardware
I actively see it as low as 5FPS on weaker hw
if you have absolutely baller hardware to toss an entire fast as hell CPU at it then it can pull off some somewhat decent framerates
but for everybody with average hardware, and especially who isn't going to dedicate their entire system to it (only running the VM with a subset of their hw) then it very much does and will run like crap, because it's just slow
even for "simple" stuff like basic GTK apps it's still not that great
funny how you're shitting on llvmpipe despite multiple people here running it to great success, with surprisingly decent perf
on managarm, normal desktop (weston) use with a few GTK apps is easily in the hundreds of fps
and supertuxkart is still getting 40-60 iirc
so you all have stupidly fast CPUs then 
I'm talking about average CPUs like Math's 10300H
even the worst code will still appear to run fast if you just throw infinite compute at it 
it won't be great on some low-power CPU starved for clock and power obv, but that doesn't justify shitting on LLVMpipe, that's just a limitation of the hw
it's like having a slow-ass GPU and blaming the driver for low fps
it's not a hardware limitation, those CPUs are still plenty fast, and if llvmpipe was actually efficient it would be able to achieve far more competent fps on such CPUs
[citation needed]
the point is that LLVMpipe is very optimized, and to get something better is either very, very hard or might not even be meaningfully possible
compare it to softpipe for instance, LLVM is quite the perf uplift
literally just compare it to what came before it
go boot up like Debian 5 and compare glxgears perf against Debian 13
it's clear as day
ive had LLVM pipe run a 2d vulkan 1.2 unoptimized af game engine at a reasonable FPS on a 900MHz laptop Pentium
i dont think LLVM pipe is the issue here 
willing to bet it's some dumb config stuff as vsync on wayland 
nah, I'm not even talking about wayland anything here
anyways I need to go catch the bus in a few minutes so I gtg
but yeah it's really simple if you just benchmark them lol, the pre-gallium software rendering used to be at least semi-efficient, but llvmpipe is awful, and softpipe is even worse
the regression in perf was like 4x from my testing
though that was on weaker hw
would be curious to see how faster hw stacks up, to see if that influences my opinion any, since I don't really have any to test
there are so many other differences between those two that any comparison is meaningless
you really need to test with the only difference being the renderer
do you mean swrast?
I know I built my own Linux kernel for both, because I was testing it on niche hardware
(Nintendo Wii U
)
so that couldn't be a difference
yes iirc
though I don't recall exactly, I just woke up and am getting ready for school lmao
that got nuked from mesa a long time ago for being old and slow
swrast basically interpreted OpenGL state with little optimization, while LLVMpipe is a JIT
that goes to great optmization lengths
well it was significantly faster than both softpipe and llvmpipe on all hardware I've tested
¯_(ツ)_/¯
this was not the only thing I tested it on fwiw, I also did some stuff with misc x86 and arm devices
just much less extensive testing
don't have hard numbers for any of those off the top of my head
the problem with that statement is that it doesn't line up with either mechanistic logic, or people's experiences, making some issue in your testing plainly the likeliest scenario
but this was my actual experience across multiple devices, so that's what I based my opinion on
^^^
Ah
that's just where I remember that 4x number from
also imo it's stupidly normal, it's just 3x PowerPC 750CL cores each at 1.2GHz
though it's very bus constrained, all cores share a single 248MHz bus
however I do low level development for it and the other PPC consoles on a daily basis so I have become somewhat normalized to it 
Huh? It's pretty damn fast for what it is
I have written a faster renderer in the past but that was stupidly well optimized and not as generic
@formal patio i'm sorry i read that as lai 😭
i didn't even see that yall were taking about gpu stuff i just saw that message

It's possible that llvmpipe sucks on wii hardware
that wasn't the claim though
I could imagine that llvm output is worse than hand optimized swrast for ppc
Especially for stuff like old school fixed function pipelines
I am curious how many other hobby OSes implement this compatibility mode stuff
pmos
blog post underway™ I hope to have it written by tomorrow
https://www.reddit.com/r/osdev/comments/1sb3rm6/porting_wine_to_astral/ something something please updoot kind strangers thanks for the reddit gold
@prime juniper remember that managarm clock picture with like 3-4 different clock applications?
I have a new suggestion to add to it
wine clock.exe

I'm looking at the wine builtins and theres some cool shit here
4kb/4kb 99% cpu usage
Yeah of course
I made it
This is so cursed
Wine task manager with whatever WM's window decorations
Also you should try running my fireworks test on astral
I ran xfireworks a while ago
I should add a lua interpreter into the kernel
Lua eBPF for astral?
Sort of what netbsd has
Huh Thats interesting
So you can like make drivers via Lua?
Like a USB driver for a controller etc?
Idk what I will do with it other than its cool
I’d presume it would be good for HID shit like drivers for PS3 controllers etc
I know Linux’s driver for that is really fucking nasty to bootleg controllers so being able to tweak it in lua to work is nice etc
Not the same thing
My fireworks test runs each particle in an individual thread
Xfireworks probably just runs one thread entirely
True
🇧🇷🇧🇷🇧🇷🇧🇷🇧🇷
could that allow you to implement the age verification thing in lua?
age_checker.lua 🙃
🇧🇷 💪
It is more so a solution looking for a problem atm but it is a very cool solution
alright so
I won't have a whole lot of time this week cuz exams and all
but I might try to get some bugfixes done, especially some things that pitust raised
Astral has been brought up in the ReactOS discord server btw 
interesting
don't be e a vagueposter smh did they say anything
damn
just thought it was funny that it was mentioned at all lol
clearly you need to necro it to say how good astral is /j
lol
only gdts can be init ok 
epstein patches
ldt init ok is like elite osdev gdt init ok
what about allocator init ok
BUMP INIT... OK
keyboard interrupt enable 
lol bump alloc
I am currently brainstorming a basic debugger that can freeze the rest of the system and selectively step through just the one program
basically hijacks the scheduler
paging init: identity map
wait....I'm roasting myself

still failed 
console output: fa
<TRIPLE FAULT, REBOOTED>

Kerneç init... FAIL
loading kernel... kernel not found
Kerneç long mode init... FAIL - falling back to 16-bit kerneç
AS-DOS 
larp larp larp larp larp sahur
finally stopped being lazy and implemented this
so nice to get a backtrace through interrupts instead of manually backtracing
I have been slowly working towards something very nice today: a real init system
so far openrc starts up, does its stuff and then starts an agetty on console and com0
one small problem there seems to be: something seems to be HAMMERING the cpu which does not really sound good
I really need to add a way to list all the processes and their system load
theres still a lot of failures during openrc init I still need to fix/patch to do something astral specific
also I'll need to hook it up to astral's power infrastructure etc
gigabrain programming?
root@
No mail.
good work
which reminds me that keyronex needs service management
systemd? 👀
i'm going to write my own, but for pragmatic reasons i'll probably make it compatible with a subset of systemd
The cpu being hammered was likely init just spinning on polling the cmd fifo
Because of a misimplemented nonblocking open
InitWare resurrection?
less ambitious for now, only the subset of functionality that keyronex benefits from in the immediate term
but that might be the right way to go about it anyway
Of course
Also with systemd 259 and newer there’s a bit more libc is not glibc support so upgrading components (if you’re going the InitWare route)
I think my goal for upstreaming this should be writing a few service scripts like sshd, netd, acpid and making sure everything else works fine
So far it mostly works but still doesnt power off etc
I also have to fix up many service scripts
Keep yapping sir
I did it. How hard can it be 
Tomorrow I think one of the things I will work towards is making my mount utility better i.e. adding fstab support
Sorry I only have openRC ones saved
My servers run alpine Linux

Why not port aports and APK?
I’ve used the build system a little and hosted a repo for a bit privately and it was pretty nice
Become alpine larp
Gentoo larp is better cause if I compile all my packages in my os thats a big flex 
True
Wait wtf
Did I just see
Did
That Ben jammis person
Really do that
To this gif
😭
wtf i looked at astrals pushlock code
wtf is this lmao
thats not how atomics work
a compiler could soundly do a lot of wild shit here im pretty sure
If it works it works 
its not gonna work as soon as my new llvm pass lands
/j
What's your pass
?
well if you do a nonatomic access, then nothing which does synchronization, then atomics, then the atomic can be turned into a nonatomic access
Make a pr
the combination of [nonatomic load, atomic store] constrains you into having no other thread which accesses the value
llvm is really large tho
ask a clanker to do it 
its also not that easy to prove because you also have to make sure the value you loaded is noundef
i mean for astral
i mean i could
fix every ub in astral
fix all bugs in the current folder make no mistakes
I do have a rewrite of it in my local tree but I cant tell what you are talking about so Im probably doing it wrong again
So stop vagueposting and share your wisdom /hj
i mentioned above
its a nonatomic load lmao
yes
i like using a struct wrapper over all the atomics to make sure you cannot fuck it up
implemented fstab support in mount and now openrc mounts all the shi I tell it to
🔥
next thing up is add netd to it and properly daemonize netd (or at least add an autodetection to it)
What’s your plan for that?
disable gentoo newnet services -> add service for netd -> write device autodetection (probably just if_getindex() and find the first non loopback) -> properly daemonize it in the end with a TODO of sending keepalives
and ofc allow configuration for it in /etc/conf.d
well that was simple
I should also remove that netmount script since yknow
no network filesystem support yet
maybe the swap one as well
did you get steam or firefox installer working? I haven't been following
I wish
do not have the patience to debug another "absurd 1 line fix bug that takes a week to track down"
cloud plz fix all bugs make no mistakes
@grok is this real
root
root
BRUH
lmfaoi
groot
wrong window
clear
next thing I gotta do is get the hostname command working
hostname is up!
Next thing is getting it to shutdown properlu
awesome!
astral is just suckless managarm /s
aaand power button
I think this just leaves cleaning up some of these error messages and writing service scripts for things like sshd
sync takes quite some time
I dont think its actually syncing there I think its just general slowdown
Idk why it happens, its random and depends on how happy wsl is
You trying to upstream support to openrc right?
I hope they accept the patches
Probably not, I really doubt they would even accept it
I mean it is also managarm
Especially if everything is working properly
It has a whole team of people vs random ass astral made by one dev
Fair but astral is a pretty fucking good kerneç
Kerneç init...
Ok
Yeah lmao
memory corruption
didn't matthew just say it was a typo
i could have sworn it was due to that?
That's a crazy typo 
probably alt on some non-us keyboard layout or smth
lolwut
why is your kernel in tree with the distro
mine is too. its called a monorepo
Makes it easier to work on the kernel and distro at the same time
perhaps
The only disadvantage I can see to my way of two split repos is dedicated commits just for updating the kernel, though
Like it doesn't seem to make much of a difference in terms of that
hey have you ever watched cidade de deus
you probably have
its a banger
Not rly Im not very into warching movies
but managarm isn't astral, and bash isn't openrc
find complaining about EBADF standard output
look in syscalllog
no syscall returns EBADF
@prime juniper next time you in linux mlibc, can you try out find /usr/bin -name klhgdfhjdsoihfsdjhfdihfsdjfsdkgsfdjgs to see if its an mlibc issue or astral issue
I don't think that error is a big issue anyways so go go gadget //
HOT
just gotta write service scripts for like sshd now
Damn
astral is lowkey close to being daily driveable
I’d honestly replace my windows install with it at some point
yay
(local tcp is kinda borked rn tho)
I also need to figure out why it seems to randonmly take a while when exiting a process
alright, I think this is it
tomorrow I'm gonna work on upstreaming it
o7 trusty old init that lasted 3 years
Think this is one of the things Im gonna look into tomorrow as well, since now that the boot process starts up like a thousand processes....
Noting for testing later today
Ty bro
Astral got signed 8 bit overflow
this is so cool 😭
for some reason running poweroff with smp completely breaks the next boot, need to figure out why
Are you using uACPI? 
yeah, mostly talking about the openrc side
it gets to openrc but it seems to skip the runlevels, not sure whyt
lolwut
wouldn't the hardware powering off reset the CPUs to their default states on next boot?
fs corruption
maybe syncing disks should come after terminating all processes dont you think?
openrc-init does sync() after kill(-1, SIGKILL)
consider doing another sync after every process is killed
what if you have mmapped data that hasn't been flushed correctly
Yeah it could be it
lmfao I think I found why it randomly slows down then exiting from a process
peak astral code
if the exiting thread is lower priority... lol lmao xd
it has to wait until the waitpider gets its own priority lowered by running
Anyhow, fixed this and the openrc thing
Maybe I can look into doing some smp perf work tomorrow
Ive also done some more fixing on the things pitust had pointed out
The biggest issue right now for smp is on multithreaded applications I think
Because of tlb shootdowns related to how I handle anonymous mappings
Another thing I might look into is prefaulting already in core program pages on an elf_load
Speaking of vmm optimizations,
@prime mulch I remember you mentioning windows still has a zero page thread, do you think this is something worth doing?
with wise optimizations to limit bandwidth used yeah
i would use nontemporal writes to bypass cache and avoid obliterating the cache of the core the zero thread is running on
at that point you run the risk of causing massive bus contention
so you also want to throttle it to like
probably not more than a megabyte or two of zeroes per second
maybe you can do more if you know the whole system is largely idle
and less if you know its busy
I see, thanks!
The dragonflybsd guys found it to be worse for performance even, but ymmv
we showed that to an NT guy and he said "we saw that and were unable to replicate their findings"
so it is contested
same as linux
they found out its beneficial to zero the page on the faulting thread
so even if its beneficial, its not worth the complexity
thats not true
its pretty self contained
i think these guys didnt experiment hard enough lol
they condemned it based on lackluster implementations that hadnt been updated since the early 90s
I also wanna profile things like configure scripts
And gcc
I think my goal now is gonna be self hosting
Aka stability and perf work 

did you get all relevant drivers to work for the machine that you needed to run astral on?
how do you do local TCP
do you create a dummy interface for it that forwards outbound packets back again
Only missing xhci, really. Which is deep in git hell as its like 80 commits behind atp
Pretty much yeah
didnt you had xhci support
Iretq was working on it on a fork
no merges ???
It was kinda broken still
@robust geyser how much effort do you think it would be to rebase it
probably negative
16-bit support when
8-bit support when
how does it break, I'm curious
I just do this in my outbound packet handler
if (ip_is_loopback(dst_ip)) {
ip_scratch_sel ^= 1;
uint16_t pkt_len = ntohs(packet->length);
unlock_spinlock_irq(&tcp_send_spinlock, flags);
ip_handle_packet(packet, pkt_len);
return;
}
ip_scratch_sel just flips between two dedicated static buffers for shuttling localhost packets, probably not how you want to do it yourself
lol
I copy packets when they go into the inbound packet queue as it makes it easier for me to store them to deal with fragmentation
I have no idea, I thibk it is so.ething in the tcp code
Maybe theres something in astral packets that astral doesnt like
too much astral in your astral stream
say wallahi bro
glxgears
with 4 cores
the flamegraph is also quite interesting
like fuck you mean you spend like 10% of the kernel time in pushlock_acquire 
the kernel spends 50x more time on pushlock_acquire function than doing shootdowns lmfaoooooo
this shit is FUUUUUCKED
might just be contention
I would expect it to be sleeping
since this only tracks tsc cycles so running time
minecraft is 34.63% kernel time and 65.37% userspace time on max settings on the other hand
I'm calling mlibc perf here
uhmm
what the fuuuck bro
this is the mc flamegraph
😭
me when half of kernel execution time is spent in pushlock
the pushlock implementation I have in my tree is different from the one upstream, I wonder if it is this one which is fucking shit u
p
or if its a general problem
just make a better one
old pushlocks makes it even slower
yeah this shit is fuuucked bro
I think I am somehow hammering pushlocks somewhere
why are you using pushlocks even
wdym
why pushlocks
also I think I found the issue and you guessed it, it is extremely retarded inneficient code from 2023
theyre pretty simple and neat
static vmmrange_t *allocrange() {
vmmcache_t *cache = cachelist;
vmmrange_t *range = NULL;
while (cache) {
MUTEX_ACQUIRE(&cache->header.lock);
if (cache->header.freecount > 0) {
--cache->header.freecount;
uintmax_t r = getentrynumber(cache);
cache->header.firstfree = r + 1;
range = &cache->ranges[r];
range->size = -1; // set as allocated temporarily
MUTEX_RELEASE(&cache->header.lock);
break;
} else if (cache->header.next == NULL)
cache->header.next = newcache();
vmmcache_t *next = cache->header.next;
MUTEX_RELEASE(&cache->header.lock);
cache = next;
}
return range;
}
you get a paperclip if you can see why this code sucks ass
what the fuck was I even thinking bro
I hate my past self
turnstiles tho 🥺
like I did this in the most inneficient way possible
I gotta have some nt stuff here to balance out the unix smh
I have dpcs and irql (even if my irql implementation seems kinda questionable)
async io is way too not unixy for a unix clone tho 
anyways I am going to replace that entire inneficient system with just a slab object cache
atomic bomb vs coughing baby
much better
(new glxgears flamegraph)
a lot of time is just spent copying data around
and I think it was like a 75% userspace-25%kernel split
I can kinda feel a perf improvement in mc!!!
time to profile mc
and then try out the new stuff multicore
now mc is 72% userspace time and 27% kernel time
most of the mc kernel time just seems to be spent in the vmm
how many fps are you getting now
that's pretty good
for the first time I actually get a higher fps on multicore
though I think now the place to focus optimizations on is probably userspace side
which means profiling mlibc
yes unironically
mlibc builds as debugoptimized by default
(It breaks so much shit and can actually make stuff slower due to that, 0/10 would not recommend)
I should try to do another gcc compilation run on astral again to see if its still stable enough to do it
esp. with smp on
but first I'll do gnu hello and then mlibc
I tried it. And I didn’t have findutils installed yet lmaooooo. Will fix next week and report back
why?
that sounds like baseless speculation?
what operation in mlibc are you thinking of that would be slow?
the way it's built
i.e. compiler flags
debugoptimized vs release doesn't change perf
is debugoptimized the default?
debug is the default if you pass nothing but you should basically always pass debugoptimized
debugoptimized still has asserts though doesnt it
yes but asserts are usually cheap
btw @grand shadow kvm has paravirt helpers for tlb invalidation and ipis etc
if u implement it u could gain a lot of unfair advantage over managarm 

ipis work via a hypercall + bitmask
tlb flushing is a bit more funny, it's not actually assisted, but u can walk over all vcpus and check if they're currently preempted by host, and if they are just tell kvm to flush the tlb on resume, and clear them from the actual dst mask
pushed from astral for max aura farming
nice
built from astral
including git clone, downloading and extracting the linux tarball, installing linux headers, etc
Self hosting done?
big W for self hosting
nonono
only after I get a minimal distro from within astral
Whats missing atm?
stability mostly
and speed
other than that I think I have everything
I fixed one of the annoying bugs that happened when compiling gcc/doing heavy disk work
so it should be smooth sailing.... after I profile it a bit 
So like, u can compile the entire thing and run it now?
Well also kde is missing ofc 
theoretically yeah
realistically it'd probably take too long and probably crash on the way
doesn't jinx need namespaces and stuff
I read that somewhere
who said I would use jinx to do it lol
I will do it like a real man smh
configure make make install
How long does mlibc take to build on astral?
I wonder if you could use Astral to cross-compile other complete stuff atp
perf would suck as you've mentioned
but maybe it could do a small embedded buildroot image or something
would be a neat test
not that much but it could be better
I didn't really time it
don't see why not
I am gonna try to do a gcc build
full wget -> patch -> autoconf -> configure -> make -> make install
did it like crash in the background lol?
No its just prints
did something segfault
I should figure out a way to silence the non fatal ketnel prints when running xorg
Java did but its normal
lol
Something something segfault handling
ohh
you dont do that already???
how was it not annoying until now
Because it almost never happens tbf
Realistically it only happens when a program segfaults
There are very few segfault driven programs
for example
https://github.com/Wii-Linux/dol-tools/tree/main/src/dol-run
problem-state PPC virtualization in userspace
Java
(it's as slow and cursed as it sounds)
Jits do that in general I guess
yeah there's a few uses for that
I once used it for tracing nvidia's userspace library calls to the kernel driver
Got the clanker to write a stub clock_getres and FIONBIO for sockets for me, now meson subprojects download works
Which also means I should maybe be able to run mlibc tests wink wink
when move to #1495060704418463934 
Trvthke
When astral on openslopware repo
i cant believe you've done this
im going to commit to it
with astral
now you are cancelled
you're going to commit WHAT
ccplover0 is claudes greatest soldier
wrong im gemini user
Use Claude to make PR btw
Then openslopware can go onto openslopware
And it will implode
it was joke 🙏
openslopslopware
use claude to enumerate all lists on gh with CLAUDE.md and auto submit them to openslopware
ai in Astral
betrayed....
live reaction
😔
Added support for smap/smep
Im mostly gonna use it for static analysis and some pieces of code I dont care much about
The core of the stuff will still be written by me
about time
I've decided I'll only use agentic ai to debug specific bugs in my OS, which I cannot find myself after a reasonable time
It's such a slippery slope
its great for reviewing code as well
that doesnt make your code slop and u get a lot of bugs spotted for free
like just ask it to review (not make any edits)
it may spot fake/bullshit bugs as well but sometimes its useful
just remembered I never really profiled wine
maybe I should do that and find out what was causing shit to be extremely slow
still not really sure if I want to keep trying to tackle that GetAdapterAddresses() bug because damn that fucking sucks
maybe I can leave the clanker trying to see what that is about
The clanker took 40 minutes to find a tiny bug in my elf loading. I wonder how long it would take to find that bug 💀
autom4ate just fucking segfaults for some reason
💀
I really need to get some sort of userspace debugger going
go go gadget ptrace
oh hell naw perl bug
its a very silly context dump as well, I think perl is casting some pointer to int
0x000000001002e38d <+1853>: movslq %eax,%rdi
0x000000001002e390 <+1856>: add $0x1,%rdi
0x000000001002e394 <+1860>: test %eax,%eax
0x000000001002e396 <+1862>: cmove %rbx,%rdi
0x000000001002e39a <+1866>: call 0x10017010 strcmp@plt
spin the wheel, perl bug or gcc bug
(the reason why this did not happen before is because I recently changed the default base mmap to be somewhere in high 64-bit space)
((and for some ungodly reason this code wants uses a 32-bit pointer
congratulations
I think its because my_memrchr is not being defined
mmap have some lower memory flag
not my problem, they can just hint it to be at some lower memory 
"abandon all hope, ye who enter here"
theres code from 1991 here, damn
💀
Anyways missing -D_GNU_SOURCE award for my perl recipe
autoconf should work on gcc now... Hopefully....
Cant try until layer
Later
Yay xbps install from tmpfs is fixed
yo
try to run ultrakill on astral
with wine
Local tcp is also fixed now
Unity game 🥀
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
things I actually need to look into doing:
- continue iretq's xhci work
- profile gcc build (maybe I'll start by profiling an mlibc build)
- profile wine
I have a gcc build going rn
did wget -> untar -> patch -> autoconf -> configure and its now in make -j2
Really weird way to spell “h” but alright
h
h
yay I left gcc building overnight and it did
and if the stat is not lying to me, the last thing it did was around 4:48 am
File: x86_64-astral/libstdc++-v3/src/.libs/libstdc++convenience.a
Size: 39957322 Blocks: 9756 IO Block: 4096 regular file
Device: 7,1 Inode: 210496 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2026-04-25 04:48:49.000000000 -0300
Modify: 2026-04-25 04:49:06.000000000 -0300
Change: 2026-04-25 04:48:49.000000000 -0300
Birth: -```
which is, comparing with confure.log, a ~4h50m build
a MUCH bigger improvement than the olden over 24h
and this was with only a single core
Huge step in the right direction with this
Still could do better
With perl now I dont think youd even need to like patch the makefile for maie install anymore
yup, with perl it now installs in a single shot
so astral was able to do the full "download tarball -> untar -> patch -> autoconf -> configure -> make -> make install" process with gcc
astralbros we are so back
:p
broke: mount a real disk device or nothing
woke:
dev zero on root??
why is your tmpfs called none
df lists the source, not the type, and for tmpfs the source is ignored so you can just pass whatever you want to mount()
you can see this on linux too. if you do mount -t tmpfs none dir you'll see none mounted on dir in df
the "convention" for fses where source is meaningless is to make it the same as the type
or just some other descriptor for that matter
how does it get the list of fses? fstab?
/etc/mtab iirc
which on linux is a symlink to /proc/self/mount or something along those lines
/mounts but yes
My root device autodetection kinda breaks when there is no root device 💀
I need to make some virtual packages like "base" and "x11-base"
Ive already merged some of iretq's work and Im gonna start on finishing his evdev work
h
evdev merging progress: have gotten xorg server to enumerate and detect event* files
this neede some bullshit xorg-server detection code
but at least now theres no need for annoying /etc/xorg.conf
I think now its just a matter of doing a final review pass of the code and then committing it
udev the long way
it's not udev, right? It's changing the programs to work w/o it
which is a possible route to get it working
Yeah its not udev
yeah i was just joking
though you totally could do that 
"I like kicking pregnant dogs"
managarm kicks dogs
does selfhosting for you means being able to build and run astral on astral or being able to uninstall linux and use astral as the daily driver
being able to compile a minimal distro of itself inside itself, maybe extending that to being able to compile a distro that can compile another distro that can compile another distro etc.
just being enough of self replicating ig
ah
I've always followd the later as my definition of self hosting but people often mean it as just compiling the kernel
which is boooooring

Hmm do I work on xhci merging today or do I profile gcc
I vote for XHCI
XHCI for me too
Also how can I see the first post of this thread
I’m trying to read the project description but it doesn’t let me see it
there is an up arrow button (top right on desktop)
thank you
damn old astral is close to new astral but still so different
on ios you can always press on the clock or the top bar basically and it will take you to the topmost thing
like everywhere
oh wow it works
nice
it‘s very annoying most of the time when you accidentally activate that feature and it scrolls all the way back
astral is pretty close to 500 stars on github
where do I have to shill it to get to 500

LinkedIn buzzword soup
didn't sam altman post some bullshit about opertaing systems a few days ago
I should shill it to openai and get a job there
I should port startx
so I don't rely on this
stupid ass startwm script
thats more so a hack from before I even had signals
port wayland
ok I am going to start on the xhci stuff soon but like
first I gotta
noita
on astral
to see how faster it got
bruh
82% userspace hits
17% kernel hits
hell naw
maybe it is some bullshit in mlibc or whatever
Maybe it’s DNS
that must be it
u really need to port glibc just for performance comparison i swear
I should really stop procrastinating it and actually profile mlibc
wouldnt it be faster to port glibc just to confirm that its an mlibc problem 
I don't care who gloire sends I am not porting glibc
it would also help if I updated mlibc
I am currently on uh
4 month old mlibc
glorie is a front for big libc so they can push glibc harder
Maybe big libc would have better luck if they actually made a good libc

Just make a custom libc, duh
libc is for the weak
real men use raw syscalls
Implement Syscalls via page faulting at a canary address for a true challenge
lmao
make the address determine the syscall number
and not in the boring oh canary + 1 = syscall 1
no make it random
SASLR
You can already compare gcc perf on linux-mlibc vs any linux disteo with glibc
this will cause you a lot of problems if you try to use libc++
good thing we don't do that cringe around here
I suppose
i decided to do this, and there's a significant difference
left = arch linux, right = linux-mlibc, both using the exact same vm config
sure, what do you want me to test?
Maybe gcc
what would be a good benchmark for that
Seems like I should stop procrastinating and start profiling already
Ill keep saying this and keep procrastinating pls like scream at me if I dont
I wonder how we can profile mlibc
why are llvm versions different
Ideally we'd use something like perf but iirc that is a pain to compile
I thought that came with binutils
Oh nvm thats gprof
Or gperf
because arch packages a different version than linux-mlibc, but the difference between the two distros is too large to attribute it to that imo
And just compiling mlibc with gprof enabled probably won't work without massive do-not-instrument annotations
Yeah i agree, it's unlikely that llvm improved perf by a huge factor
within one release
Unless it's something like the mlibc version not using the same SIMD instruction set
valgrind 
given that the renderer strings both contain 256 bits i think the sets are the same
makes sense
yeah 5x diff is too much
I wonder if there is a more lightweight sampling based profiler than perf
Maybe i can vibe code a statically linked one in rust 
couldnt you try statically linking/compiling perf on your machine?
Probably if you can get the linux kernel build system to do that :^)
whats the problem with perf?
you can get perf built against musl i think anyway
It is built as part of the linux kernel's build system and iirc doesn't support cross compilation
id be curious to see musl vs mlibc performance as well
oh that sounds awesome (not)
LD_PRELOAD in something that sets up SIGPROF to run every once in a while 
Is it even any good
valgrind would probably be good enough to get a broad overview no?
instead of perf
I know it doesnt paint the whole picture because its an emulator
for go? yes
Interesting
surely you can set up a static musl sysroot and use that to build
there is also samply
which may or may not work for you and which is written in rust and doesnt need to be built in tree
yeah, probably
samply looks interesting
anyway here is a statically linked build of perf for aarch64
make -f Makefile.perf --no-print-directory -j8 O= CC='zig cc -target aarch64-linux-musl -Wno-gnu-variable-sized-type-not-at-end -Wno-uninitialized -fno-sanitize=undefined' CXX='zig c++ -target aarch64-linux-musl -Wno-gnu-variable-sized-type-not-at-end -fno-sanitize=undefined' all NO_LIBTRACEEVENT=1 NO_LIBELF=1 NO_BACKTRACE=1 perf```
and a patch
$ ./target/debug/vibeperf /usr/bin/ls
Cargo.lock Cargo.toml src target test vibeperf.out
$ cat vibeperf.out
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0x15844
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0x14317
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0x22f22
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0x7af2
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0xe130
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0x9272
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0xa094
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 0x1f4ad
/usr/lib/x86_64-linux-gnu/libc.so.6 0x28020
/usr/lib/x86_64-linux-gnu/libc.so.6 0x1669ae
/usr/lib/x86_64-linux-gnu/libc.so.6 0x164426
/usr/lib/x86_64-linux-gnu/libc.so.6 0xa33c8
:^)
so in the same amount of time i got most of the real thing working 🙃
obv missing debuginfo etc but like
yeah, proper perf is obviously better
why are you using zig to compile lol
doesn't clang work?
so that i can make a static binary?
if i had a sysroot yes, but i dont have one
Lol why zig
so that you get a static binary? idk whats so complicated about that
zig cc is the easiest way to do that
ah because it ships musl?
the code quality is definitely a bit questionable, particularly around the use of unsafe :^)
one obv bottleneck is printf/scanf code in mlibc I'd guess
I think the shader emitting/parsing could be sped up with some work
but I'd rather focus on getting it to be entirely correct + building out our testsuite to validate that first
well apparently mlibc is being built in debug mode which definitely doesn't help https://github.com/managarm/linux-mlibc/blob/6dcd0d591b02acf6074f50db7b583e9d0f1ffd7b/bootstrap.yml#L335
as in -O0
i recompiled it with -O2 and now it's 1.6k FPS
so still a big difference but not as big as before
CC @prime juniper
what if O3+LTO
compilation failure
[493/498] Linking target ld-linux-mlibc.so
FAILED: ld-linux-mlibc.so
x86_64-linux-mlibc-g++ -o ld-linux-mlibc.so ld-linux-mlibc.so.p/options_internal_gcc_stack_protector.cpp.o ld-linux-mlibc.so.p/options_internal_gcc_guard-abi.cpp.o ld-linux-mlibc.so.p/options_internal_generic_allocator.cpp.o ld-linux-mlibc.so.p/options_internal_generic_debug.cpp.o ld-linux-mlibc.so.p/options_internal_generic_ensure.cpp.o ld-linux-mlibc.so.p/options_internal_generic_essential.cpp.o ld-linux-mlibc.so.p/options_internal_generic_inline-emitter.cpp.o ld-linux-mlibc.so.p/options_internal_generic_frigg.cpp.o ld-linux-mlibc.so.p/options_internal_generic_ubsan.cpp.o ld-linux-mlibc.so.p/options_rtld_generic_main.cpp.o ld-linux-mlibc.so.p/options_rtld_generic_linker.cpp.o ld-linux-mlibc.so.p/options_rtld_x86_64_runtime.S.o ld-linux-mlibc.so.p/sysdeps_linux_x86_64_arch-syscall.cpp.o ld-linux-mlibc.so.p/sysdeps_linux_generic_sysdeps.cpp.o ld-linux-mlibc.so.p/options_rtld_x86_64_entry.S.o -flto -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,-soname,ld-linux-mlibc.so -nostdlib /var/lib/managarm-buildenv/build/tools/bootstrap-system-gcc/lib/gcc/x86_64-linux-mlibc/14.2.0/libgcc.a
/var/lib/managarm-buildenv/build/tools/bootstrap-system-gcc/lib/gcc/x86_64-linux-mlibc/14.2.0/../../../../x86_64-linux-mlibc/bin/ld: /tmp/ccgZv29Z.ltrans0.ltrans.o: in function `allocateTcb()':
<artificial>:(.text+0x2f69): undefined reference to `memset'
collect2: error: ld returned 1 exit status```
lto doesn't like libraries that define mem* ime
damn
wtf
I think the ~2.x difference was what fishix reported when switching between mlibc and glibc





