#Ethereal
1 messages Β· Page 1 of 1 (latest)
Hmmm trying to get my GCC port running is not going well
Porting Mesa was very easy once I fixed my headers
interesting, good luck with the project π
did you write a custom debugger for the kernel?
non-sleeping semaphores 
Fr?
yeah I believe so, there is sleep_untilCondition() which looks like it can be used to implement blocking waits, but it doesnt appear to be used.
I think it's a custom libc
A while ago, but it's abandoned
Custom libc
My semaphores were actually made only for ACPICA, and were made before I even had a userspace π
Even then I think they're pretty abandoned, they are used nowhere in the kernel
Yup! Other sleep functions:
sleep_untilNever
sleep_untilCondition
sleep_untilTime
My sleep system probably needs a rewrite because I don't like it being a clock callback and would rather threads that call sleep_wakeup to actually iterate the queue and wake the thread up instead of relying on this async garbage
Apparently vbox doesn't like requesting a 1920x1080 framebuffer.. it renders extremely small
lol nice, so how long have you been working on this?
about 8 months
it looked like this
Just a demo program in Hexahedron's fb 
using ACPICA is such an L for what is otherwise pretty much a completely NIH project... well i guess you also use mesa
whatever
your readme mentions you depend on grub but you also have a custom bootloader?
yea well I also have a mini ACPI driver I wrote, ACPICA is 100% optional
Yes, Polyaniline.
https://github.com/sasdallas/Polyaniline
then why do you need grub?
damn, gnu efi
looking at commits, polyaniline was only from about 3 weeks ago so probs just used grub first then moved over to custom (idk though just what it seems like)
i see
It's also shit. UEFI only and was mainly for fun
Actually Poly was in dev for over two years, but I only worked on it for probably 20 days total, including pre-rewrite
Writing a bootloader is cool but I like the whole OSdev part
use Limine then :3
Limine is ass
why?
i wouldn't say "it's ass"
well
yeah it's unstable sometimes
but imo it's a pretty solid bootloader
me when i'm wrong
what instability are you referring to?
like, specifically

haven't experienced instability myself but i could've sworn i've seen a little bit of people having issues
like
sure, bugs happen, but like, do you have an example of some "instability" that has been persistent and wasn't fixed quite quickly after a reproducible example was provided?
can't recall
How are u not furious over people shitting on it for no reason
idrc
i like if they provide evidence so i can fix whatever's wrong
if they don't... well, less work for me, and i am lazy
so that's a win
Limine is unstable, btw I'm not gonna provide the evidence as to keep it this way 
Lmfao
also being mad isn't exactly going to solve those magic problems that exist so potently
custom bootloader running limine protocol 
ah, makes sense!
You didn't know, you responded that to limine's author, did you? 
π
Was on a hiking trip 
Anyways no I didn't know you were the author nor do I really care
I don't have the time to write Limine support if GRUB works fine and Multiboot was already a pain in the ass
Most limine build systems (at least from other OSes I've seen) seem shitty and hacky
But it's a good project and I will add support eventually, I'm just lazy 
brother
i am not putting it in gitmodules
huh?
Every other OS that uses Limine, at lesst in my community, does
you can use whatever build system, you can use meson or whatever you prefer
do you have a distro builder or something
That's not what I was saying
what is the shitty and hacky part in your opinion?
Mainly the gitmodules and calling a script from the Limine repo
well you need something to build limine into your image
same way you need grub to make the iso
what gitmodules? i am seriously confused
here's the OS I'm basing most of my Limine knowledge off of
It's also similar to what Limine Bare Bones says I think - let me check
limine bare bones includes kernel + bootloader
your kernel shouldn't need a limine build, just the protocol header
Nvm don't know where Unmapped got that from
Then that's fine with me
yeah
Although don't you have to setup a special linker section
i do it in a generic way
it's not mandatory
True, I already have a multiboot section.
If I can I'll give it a go
Start button art, will add it in tomorrow
oh god please don't use this as your view of limine buildsys 
yeah use minse instead 
I love stanix but that buildsys is very, uh, interesting π
Anyways I'm actually going to probably add a few gfx functions to go along with this:
- gfx_drawRectanglePattern
- gfx_drawRectangleGradient with GRADIENT_VERT AND GRADIENT_HORZ
- gfx_drawRectangleRounded
maybe add png/jpg support
why rectangle parttern?
To let cool patterns be drawn. Can also make gradients easier
oh cool
Hover icons
What is Essence? Does it have something with nakst's Essence?
No, it is my own custom shell
All usermode programs for Ethereal, besides ports of demos like glxgears, are all written by me
I see, I guessed that it's the cli name, the name reminded me about that cool project, that now sits dormant.
Yeah I saw the project awhile ago and it looked interesting. Sad to see it died out
That's fantastic actually. Great job.
Thanks!
rtl8169 MAC address getting works
xHCI still doesn't work on real hardware 
My plan is to finish RTL8169 driver first so that I can have 3 different network card drivers
Maybe if I need it I'll do a PCnet driver but I don't have any machines that need that
After that it's profiling time to figure out why VMware is so slow single-core
RTL8169 working!
might also want to take a look how I did it, I use cmake which builds an image as part of its process but only builds what has changed, an image is always output if any depends of the image has changed
I don't know if what I did is considered "optimal" but it's a different approach so maybe you'll learn something different
(also it's using limine, so...)
yeah TacOS creator confirmed for me that is not optimal build system :D
limine support and fixing my broken mb2 is on my bucket list since RSDP finding doesn't work on some of my UEFI machines (as we all know since RSDP doesn't have to be in EBDP π)
i still have to fix RTL8169 sending packets/perhaps acknowledgement
personally i avoid acpi. havent needed to go further than the RSDP pointer limine provides for anything i do atm
its an eldtrich horror that thinks its an OS
if i did need to go deeper i'd probably use uACPI because it seems to be the most well supported way atm
I use ACPICA but due to some people not liking it (cough cough @torpid wolf
) I am writing my own AML parser as a side project
The initial idea was good in my opinion, before AML 
i mean, i don't like ACPICA because uACPI is just simpler and better lol
i would recommend against making your own (cc @solid cobalt )
i mean give it a try since you're doing full NIH anyway, but it is a lot of work to put it lightly
it's a crappy recursive bytecode with vague unstandardized semantics
I don't honestly have much use for it right now, besides APIC PCI interrupt pins but having battery support would be nice :D
Yes, I do remember trying to read through the spec and wanting to kill myself
how many assumptions does uacpi makes about what your os has availabile? probably off topic. I'll go read up and if I have any Q's I'll prod someone on the relavent thread
almost none
NIH is "not invented here". So it means porting something, made by others and not vice versa, isn't it? If someone makes their own say acpi implementation, it'd be IH. Why is it called NIH? can somebody using this NIH termin explain?
- Why not use X instead of writing your own?
- NIH.
I see, it's a total opposite to how I perceived it. π
Inspiron 1420 1 day of runtime
Would be cool to see it with a day of runtime under a heavy load
Yeah I should've launched more programs but the only reason it ran this long was because I forgot it was running
Yesh I just had to fix some alpha blending. I'll get a screenshot later
GUI at v1.0.0
Ayy! Looks awesome! π
p cool
Another photo of the GUI after adding a different wallpaper + font viewer
I probably should do a taskbar menu next
wait wtf lol
lol
Taskbar will load entries from /etc/taskbar/ or whatever path I want
Icons in /usr/share/icons of course
looks great! :3
I think I'll do a poweroff sequence nw
poweroff sequence is done
Not a lot, I can gurantee
It's not like it really matters but I find it nice
I don't think think any of them do
Ironclad does
Ah
Managarm can do it (well weβre donβt do sync yet but the kernel code has proper shutdown)
(And donβt try systemctl poweroff or friends, that shit broken for some reason
)
closest I have to proper poweroff is just sending SIGTERM SIGKILL and then sync and tell the kernel to poweroff
still missing stuff like telling drivers to denitialize etc but if you run poweroff (or press the power button) it should do all of that
xHCI is beating my ass
doesn't work on vbox/real hw but works on VMware + QEMU
on VBOX, the second device fails to init. real hw is mixed results but so far haven't gotten to actual CONTROL requests yet
also taskbar design
it loads files (sorted by 01-entry.ent) from /etc/desktop.d and parses their icons, names, exec, etc. from it.
Link to release 1.0: https://github.com/sasdallas/Ethereal/releases/tag/ethereal-1.1.0
holy shit amazing and I love that logo
yeah good logo
good luck dude
thanks! logo was designed by my girlfriend, she does most of the art assets
ask ur gf to design some shit for my project π 
just go date an artist 
bro thanks i can pull 
how did dude pull vro
im 15 so got plenty of free time and social events
i got lucky lmao
vro im 18 got no job
no bitches vro
the bitches don't matter the OS does π₯π₯
real π₯
i apologize for calling you histrionic i didnt realize you were just 15
doesn't matter, call me whatever you want. I don't get special privileges in arguments
you have the special privileges that come with being 15
such as not being completely responsible for being annoying
I miss that. Now I get in trouble for being annoying :(
just become the artist then
pretend like its the most essential part of your os and then try not to cringe at your previous artwork after 3 years after finishing it
nah though if i get into an argument i probably need to get called some shit lmao
dont feel bad :D
V 
xHCI success finally
redoing my interrupt transfers to be asyncronous, then HID driver, maybe Hub too when I do USBHubInformation_t structure documentation
if I may ask, can I get an invite to that server?
Same
same
baller
same
i want an invite too
I'm also interested
@icy junco @upper bronze @torpid wolf @ripe kettle @dusky dew
official dev server: https://discord.gg/cGeEGTuE
the community where Ethereal's dev thread is: https://discord.gg/r4dSnpkC
baller
thx
thanks
Lol
god my GUI runs like shit without kvm
still have to work hubs into my USB stack
probably will just add a HubInformation struct in the device and then have a hc->init_hub_port method fo xHCI
UHCI/EHCI I think are fine
are u gonna add hw accel support?
everything in ethereal is custom, minus a few things I will fix later like ACPI + libm + ttf
well that and kernel drivers for gpus
SSE is already there
and i guess userspace drivers since you're fully NIH
DRM is a bit away
wha
yeah
my drivers are kspace
a huge part of gpu acceleration is userspace drivers
for generating shaders and command buffers
im not exactly the best at graphics programming, libgraphics was probably the best thing I've done (?) graphics related so itll def take me a while
right now the priority is fixing some kernel scheduler bugs (and maybe improving the very very shitty algorithm) and USB
u could make your kernel drm compatible and port mesa
i already have OSMesa but i'd also like to do my own DRM api
NIH :D
OSMesa?
Mesa with framebuffer
it's a rendering backend
oh u have a mesa port?
OSMesa is not that
what?
OSmesa is mesa without OS support
off-screen rendering
which means rendering into a user allocated framebuffer
i need to switch to llvmpipe probably instead of using the default
yeah llvmpipe is way better
llvmpipe does need llvm though, which if you are doing NIH may break a line
it would be a port
im not actually going to use llvmpipe/Mesa to render my GUI
i already have some SSE-accelerated graphics functions
So are you gonna write your own stack for desktop use?
i did
For hardware accel in the desktop I mean
if you're talking about things like graphics API, yes
window manager API, widget API, etc
probably will
do u have posix compatible syscalls?
yes
ah
feel free to take a look: https://github.com/sasdallas/Ethereal
Why would you port mesa then
back when I ported Mesa it was just to port things like SDL + rendering acceleration without having to write my own damn renderer. libgraphics is definitely not a replacement OpenGL
however I don't need OpenGL in the kernel
you dont need any of this in the kernel, the kernel shouldnt have to concern itself with graphics
*in the OS
you do need GL on the OS unless you want to make your own GL competitor for hardware accel
now what would I need GL for? i have "a GL" but it's not a replacement for OpenGL
feel free to look yourself, the API contains graphics utility functions
complex effects and apps, your apps will need to talk to the kernel's graphic drivers somehow and GL is the standard for that
uh sure.
ill implement the GL api at some point
severe kernel instability is occuring π
i need to rewrite my ASM memcpy to use 32/64-bit writes first
non-KVM qemu really likes 32-bit writes
yay the kernel instability is in a system that commonly fails
this is actually good
because i think i know where it fails
yay
WOKEN_UP_ALREADY race conditionπ₯
i know damn well that this is poll's fault
its always fucking poll
ill just add a mutex around my waiter structure
is your kernel built with -mcmodel=large or is it PIE?
-mcmodel=large
i didn't really feel like doing PIE
why not -mcmodel=kernel?
it must be given your load location unless it's PIE
iirc i switched to using mcmodel=large when i moved to higher half, and mcmodel=kernel resulted in a black screen
hm that's weird
i am saying because, other than the fact that it's convention to load kernels at the top 2GB of the address space, -mcmodel=kernel generates better code
better in the sense of more efficient
let's try again actually, ill recompile with mcmodel=kernel
you'll need to move the kernel load address
the entire memory system is pretty fucked to be honest
definitely not my best work but it works well enough
and now ethereal doesnt build at all
apparently my GCC's cpuid is no longer liked by Ethereal
mutex does nothing to prevent the double wakeup
i love how the only way to trigger this bug is to grab a window and jerk it to the side really hard
only on non-KVM
this bug is not poll related its socket related!
or mutex, haven't figured it out
its circbuf related, which i believe is UNIX sockets
yup
i fuck up
still not sure where 
too tired will fix tmr 
anyways so:
- yay xHCI, but disabling slots is being buggy and leaking memory (and after detaching a device and freeing the DMA for device input ctx I get a parameter error when BSR = 1 on reinsertion)
- HID parser coming along great
- need to implement USB Hub logic
- need to fix that damn non-KVM bug and put out v1.1.1 bugfix release
- need to finish up NVMe, should take me like 15 minutes
- fix PS/2 stalling on my Lenovo Legion
the yes is off center im gonna kill myself

i dont even see it
the yes button looks fine
notice how it says that its inside of the abort function, did you forget a closing }
Oh shit you're probably right. I'll have to take a closer look
another day another bug
this is catching my eye, why is it losing its thread structure? this node was never supposed to wakeup
cpu_fpuInitialize is wrong too lmao
this bug has been fixed! while the GUI runs like shit on non-KVM, it (shouldn't) crash
after a lot of fucking around, finally HID reading
doom generic
yeah sure ill lyk what she says
ok flanterm is actually pretty cool
epicc
very much is
i wrote my own terminal driver before it
and im kinda glad i did since the project is barely on the edge of NIH
but this will be a cool backup to test out Vim + ncurses
NIH?
not invented here, it means the project is self standing
i have a custom libc + custom kernel + custom wm + etc. but ACPI, font renderer, and libm are stolen 
π
i wonder if flanterm has better scrolling
probably than whatever the shit i was doing before has
only one way to test
cat /dev/urandom
if u have such device
if not, on x86 u can use funny rdseed
mess around with that and very epic things happen
waIT
it didnt crash
no way
unresponsive though 
ummm lol
I did a light to dark gradient, bounce light on the bottom, additive layer for the shine at the top, rainbow and extra shine as an overlay layer
that's her response
epic
tell her shes an epic gamer
done 

here's the ASCII version btw 
that's speedy :3
btw, idk if you know this but it is likely that it has hanged for something completely unrelated to Flanterm itself
yeah it did
i (and @amber gyro ) fuzzed Flanterm with the LLVM fuzzer for days
like to make sure it has no bugs, especially nothing security critical
yeah this same thing happens on my custom emulator, and Flanterm hanged for unrelated reasons
yeah
but very cool project
do tell though if there's a way to use ARGB
like i mentioned in Unmapped Nest
because I had to modify Flanterm's code to mask with 0xFF000000
ARGB in the sense of transparency? no, because Flanterm doesn't do alpha blending
or any other form of transparency
no i meant
mostly for performance reasons
my window server does alpha blending
the pixels stored in the framebuffer have alpha calculated using ARGB
flanterm by default uses 0x00 alpha so its totally transparent
you want a mode where it prints pixels out with 0xff000000 ORed to them, or what? i am trying to understand, sorry
yes, exactly.
my framebuffers are all ARGB and by default flanterm uses a zero alpha meaning any pixels drawn are transparent :D
I'm fine with patching it just curiously if there was a builtin method
i can add it
it sounds useful
but isn't the way alpha blending works the other way around?
as in, 00 = fully opaque/0xff = fully transparent
Nope
0 = fully transparent, 255 = solid
i see, then if that's the case it sounds reasonable to implement this
Perhaps something similar to SDL_MapRGB
does passing a palette colour set with 0xff ORed to them not work?
Haven't tested it yet
Only really played around for around 15 mins
Can try tomorrow though
sure no worries
i kinda got confused because Limine's config takes a "TTRRGGBB" value for the text background, which is explicitly not AARRGGBB and works the other way around
i am not sure why it was done like this when this stuff was implemented, but it's been like 6 years so i don't really remember
maybe it's handier for a config writer
though it makes me wonder whether it should be changed to actual AARRGGBB with ff = fully opaque
(probably not worth the hassle)
is mint ice cream adding alpha blending to flanterm real
yeah this is practically just a me thing and I doubt anyone else using ft will have issues
no, that's not happening, lol
What you could do is just make it 0xFF if some config value is set or 0 otherwise
Nah my window manager alpha blends automatically so flanterm's 0 alpha makes it transparent
yeah, i was basically looking into doing just that
ok Krispy Creme
is this some weird pet name thing
it's a reference to AI Deltarune
lol
lmao
also because their pfp is Kris
yes
yes
i agree
i understand 
anyways it's like midnight for me and I have a decent sleep schedule for the time being lmao
i should not even be typing this i should be trying to sleep π π
gn yall
goodnight!!
gn!
decent sleep schedule imagine
use blender you can do this
Actually she did this on Ibis Paint
oh i didn't know this thing
i do everything in blender 
its actually just a paint app im scared by her skill 
ethereal would be incredibly ugly without her
next step : do the same as the guy who make photo realist things in paint
you would have to use "programer art" 
working further on HID parsing
finally works on real hardware + can receive interrupt transfers
just need to implement the extraction, driver logic, and write a quick keyboard driver
for drivers i won't worry about Ethereal's USB stack weak_bind priority setting and just trust HID drivers 
HID keyboards are done
mostly
I still have to do auto-repeat and more but I'll get to that later 
works on real hw too 
time for HID Mice
yeah agreed
Since most stuff is behind internal hubs
i have to rework a decent bit of my USB stack though
tested on my 2024 Lenovo Legion and it worked somehow 
but yeah my USB stack was designed with UHCI/EHCI in mind and has some xHCI hacks
would need to modify it to call a specific xHCI method to set the initial slot context up correctly
I was talking more about PCs, you know how they have multiple ports e.g. on top of the case? That's connected via one wire to the motherboard so iirc it appears as a hub
and add an init_on_hub_port method
yes it does, you are correct
hubs are next on the agenda
VMware also emulates hubs so for full compat gotta do that too
yes, ive had working hub drivers for UHCI/EHCI so hopefully wont be too much of a challenge (?)
afaik its just configure the initial slot context and configure the hub port endpoints differently
Dunno, I just know its a lot of pain
eh maybe xHCI is easier?
@dusky dew pinging because you'd know
UHCI/EHCI operate totally differently than xHCI
they use QH/TDs
Yeah I know they're a lot more manual
xHCI is decent if it has sane hardware to my knowledge
now the quirks, that's the fun part
Yeah
as with everything lmao
i wonder what quirks linux does
all of em 
oh that's only PCI
Thats pci
yea
didnt realize this was porn ok
so far what i can see is
https://codebrowser.dev/linux/linux/drivers/usb/host/xhci.h.html#1569
Source code of linux/drivers/usb/host/xhci.h linux v6.16-r on KDAB Codebrowser
I think it has a separate file for xhci quirks
very possible idk
Not at my PC atm so cant check
dw about it
anyways back to mouse driver
i just finished writing the shittest HID driver i think mankind has ever seen
complete with bad hacks to reverse linked lists
and shitty UsageId stacks
nah we cant kill ethereal
i just forgot to update lol
latest things that are happening:
- unix sockets are corrupting the heap βΌοΈ
- the entire thing will crash very quickly βΌοΈ
- but USB mouse and keyboard work on my hardware
My window manager feels a bit unstable on real hardware
The size of my Legion's screen is insane so could be related
its actually a 2560x1440 panel but Ethereal looks very tiny on it 
Here's a picture of Ethereal running (the moment I took this photo it crashed)
that weird background is because i dont scale (didn't want to implement that into my GL yet) and the default lines bg is too small
new debug information in Celestial as well
RPS, while accurate, there are no clips, so it's just "loops per second"
my wm doesn't use poll() for its sockets (it REALLY should, but my poll() is broken and I keep forgetting to fix it)
Now the wm crashes more because FreeType sucks, klange was right
i have an in progress Netsurf port :D
do you like rust
highly unlikely that netscape can run that
yeah i've been more focused on other things so it mainly consists of initial build support 
but to be honest there's also the discord API so it's not that bad
wait did i say netscape?
i meant netsurf oh my god
Sounds like custom clients. That gets you banned over here (ToS violations), and risks your account in general. Not the smartest move probably
Whatever is in Debian sid does not run discord in the browser (this is latest release)
Not a selfbot, instead a normal Discord bot (just as a PoC)
I'm not an idiot.
oh well :D
Thatβs gonna require cooperation of every server you wanna join tho. Nasty. Would work for a PoC, creative thinking I must admit
yeah, just in a test server ofc. nothing like that
Discord API requests can be sent over curl iirc if you set the right headers, and considering i have a curl port then
it's also against tos to use a bot token as a user
just throwing that one out there while putting on my "ackshaully" discord dev nerd face
best thing to do is either get electron apps to work, or discord in browser
port chromium 
lol I guess? sounds like a lot of work
really? i mean its just sending API calls though
how is that against TOS
it's against API to use the bot API for interactive user apps like a custom client, as it's against the rules to automate user tokens
just is, discord be weird
I guess they don't want competing clients
have tried, have actually ran shit, is a lot of pain, took me a solid month (also it's fucking massive)

wow! very impressive, and does indeed, sound very painful π
Yes yes
But Managarm is currently on a bug hunting and correctness spree outside of the secret projects ongoing
Understandable
v1.2.0 is preparing for release
the remaining things to fix:
- some minor HID bugs that certain mice dont like
- auto-repeat in HID keyboards
- calculator GUI app :D
- GPT partitioning support
- maybe some more work on R/W ext2?
also window manager optimizations as always :D
school starts next Wednesday and then this thread will slow down
a man can dream π
impressive work
does Chromium by default use those Windows 7 styled buttons? i cant recall it doing so
this looks like windows vista if you look very far
design inspiration
been considering doing more ports but so far this is the list
goodnight everyone :D
Yeah old
It does with my patchwork on that version 
"so that's what life would be like if id invented the finglongerported chrome"
gotta port rust 
How is the hell 
Checklist for today
I got completely distracted because I felt like writing an AML parser, but that's hopefully going to be completed + integrated into the kernel :D
(OSI test from uACPI)
other than that, I worked a bit on wm protocol and some bugfixing (such as ports of Bash and Vim)
Looks like there's still some annoying process bugs in Ethereal but I'll have to debug them further later
I also did a bit of alpha blending in the compositor to test it out (sadly the compositor does not like it
)
Fixed signal bugs + TTY bugs as well :D
Gonna keep working on AML parser using uACPI tests 
cool
oh wow hi infy
hello
as i was saying i dont know what you're talking about with copyright headers and folder structures?
the copyright headers are just what i wrote that clarifies the BSD 3-clause and name of the component
libpolyhedron looks quite similar on first glance to toaruos' libc, with some folders missing
like, its not the exact same, and im not claiming it is lol
you might find the contents of the folders are different
i mean i just picked that folder structure because i liked organizing them in header files
i wouldn't say copying a folder structure is stealing code
well to be fair some of my libc is ToaruOS code
(attributed)
yeah, but seeing toaruos copyright headers made me compare them lol
its a fair assumption
basically what im saying is that going around claiming everything you wrote is NIH while having very much taken code from other projects in not small amounts does come across a bit weirdly
yeah actually i remember the @file @brief structure from there
id say small enough? i mean its just libc and libgfx afaik
maybe kernel has some refs but if so that's probably really old by this point
i really dont remember
wait i can just check
hm that's a bit more than id like
thanks for bringing it to my attention, ill get most of these removed
libgfx is my graphics system, celestial is wm
libcelestial is library for wm
do try to remove them by not just like, removing attribution lol
yes i meant to rewrite the functions :D
you dont have to remove it ofc, but if you really want to NIH everything, do it properly lmfao
well, "properly"
nothing wrong with how youre doing it rn
just like, dont call something you didnt NIH "NIH"
afaik its just little things like some flow control in E1000, ATA configuration code, TCP signatures, and the most grievous being printf
i thought almost NIH covered that but yeah this is a bit much, i thught it was just like one or two files
thanks!
np :3
do it in your own language and evade any accusations of plagiarism forever
another task:
- remove ToaruOS
so i think ill start with kernel on that one since it barely has any refs to ToaruOS (just long replaced concepts, then libc, then gfx (since it has some stolen MMX alpha blending code that I think will be a pain in the ass to rewrite)
write it all in Zig, then no one will steal it
jackal
lmao @ when NIH master turns out to not be NIH
?
man i did not realize this much of Ethereal was taken lmao
tomorrow im removing this shit
no need to rub salt in the wound π
i mean acpica alone is probably bigger than the rest of your os
actually ACPICA is totally optional in Ethereal
I wrote a MinACPI subsystem that just does basic MADT parsing and it does still work
ACPICA is literally just there for poweroff 
i was gonna do _PRT rerouting with it but i guess ill just finish my AML parser and do it custom :D
yeah thats until u depend on more stuff from acpi
^
otherwise besides checking PS/2 FADT bit (and maybe scanning for a PS/2 device) I have no use for it
so technicaly I still get a NIH point 
_PRT is gonna be fun
when dtb 
musl is only needed for ports
because it also requires _CRS which requires parsing all acpi resources
aarch64 is long abandoned 
riscv64 
libfreetype is the actual only required external component sadly
i dont have plans to write a TTF rasterizer yet
ive been planning on removing ACPICA entirely and this AML parser is a good excuse to shave off a good like fucking 30s of compile time
I would love to also go mostly NIH, but I refuse to write an AML parser 
That's valid
I thought I was being special using ACPICA
it was never actually ethereal's plan to attempt to be be fully NIH
define "fully NIH"
i was planning on using X.org but then when I realized the support needed by libc I thought it was just "go nih or use external everything"
ye that makes sense
Instead of removing stuff in panick, maybe pay less attention to aggressive admirers? 
eh i respect my critics and augustsky and electronode are right, i cant call myself NIH until fully all external components are NIH
dunno what @dull crater 's problem is but id rather take a break and go NIH first
*almost NIH, I still don't have plans for a TTF rasterizer
wait they changed their name again π
but ACPICA + musl + others should be able to be kicked out
including the ToaruOS code π
the part of misrepresenting stuff is what rubs me wrong
im not misrepresenting, i said almost NIH
wdym almost
the thing i said in #when-your-os-goes-crazy is true.
ACPICA, freetype, and now this
acpica is easy to kill but freetype will be a pain
libc, gfx, some kernel code as well right
yeah but that's easy shit to remove, i was just lazy and then forgot about it
for the record theyre like 14
after looking over the kernel code there isnt really anything there anymore? Its just old concepts no longer in use really much
again my age doesnt matter
i deserve to get called out for shit
almost: an adverb;
not quite; very nearly.
i wont hold it against anyone who criticizes me justly
and they are valid to criticize, this is a concerning amount of external code in an OS that's supposed to be pretty NIH
i thank electronode for bringing it to my attention :D
15 iirc
yeah 15
but it doesnt fucking matter guys
if im old enough to comprehend C then im old enough to comprehend NIH 
are you gonna do an aml interpreter now?
lmao
yeah, i will finish ToaruOS removal tmr
AML is very complex
u wanna do it in a day? 
i would consider very carefully if you really wanna go there, given that making a AML interpreter (that is good and works on actual hardware) is not a small task
it is a task that, from what i heard / looked at, seems similar to making a entire OS
yes, i know. i understand AML
nah multiple 
aml speedrun
but i understand AML and ACPI enough to the point where I do have a basic interpreter
dang
right now im working on making it through the uACPI tests starting with OSI to get a grip on how i shuld structure my parser API
its really not that bad
i did HID bytecode before, and while this is structured differently its just bytecode at the bottom.
id trust whatever @solid cobalt says over me though given that they wrote uacpi
yeah basically mine took a few years on and off and like 20k loc iirc, also a lot of windows reverse engineering
yeah i know
find . -name '*.c' -or -name '*.h' -exec sed -i '/[Tt]oaru(OS)?/d' '{}' ';'
i have written bytecode interpreters too, specifically for amd atombios
Yours is also designed to be a commercial framework
thing with AML is that it is totally shitfucked basically lol

yes this is true
π€
thing with ACPI is that it is totally shitfucked
yeah, basically the spec omits half of the things and lies about the other half 
yes it does
thats true
mine is just designed to be a simple ACPI interpreter
not designed to run on Windows at all 
anyways if anyone else wants to roast the code then feel free to let me know what else i have to remove to be fully NIH
well simple or not you still want it to not hang/overheat your pc
of course 
anyway if you can pass most of the tests and not die on the --large test suite then it probably works
yeah and then i just have to cleanup the shitfucked API
shouldnt be too hard though
right now im just slowly working my way through it
--large basically just feeds like a thousand real hardware blobs
yes I read the docs
er actually maybe that was banan telling me
π
means you cant call yourself running any ported software fully NIH either i guess 
it should be easier since tests basically verify nt semantics i've RE'd etc so you dont have to do it yourself
running ported software isnt ever NIH 
although not sure if that is a important metric
my kernel uses nothing from libm though
i think it was just to build some random ass port? idk
so i can just drop musl with no consequences
well math helpers are pretty hard to get right
Well true, but Iβd draw the line at the libc level if youβre actively doing ports. Hell even that can be addressed, if properly marked as such. I wouldnβt expect a fully NIH kernel to have a NIH libc, unless the readme says otherwise (for example)
README does not mention anything about NIH iirc and it should not. NIH was never a goal of Ethereal it was just something i realized that i was doing
yeah im just saying that NIH wasnt ever a goal but i was wrong to keep calling it almost NIH if it was this far 
Yeah
i mean sure but im capable enough to figure it out?
yes
mlibc also uses libm from musl
which i believe in turn comes from the sun microsystems libm
so basically everyone copied each other
lol
dammn mlibc is not truly NIH
is anything truly NIH?
@hoary pine 's work
MINTIA is probably one of the coolest things ive seen in a while
what do you mean by resources?
any sort of documentation/tutorial/whatever
im mainly joking 
well partially yes
but it's hard to make anything that's not unix basically so it will have to use the same underlying algorithms and general structure etc
slowly getting through it
god damn the encoding on CondRefOp looks annoying as shit
yeah i know
im just saying reading the AML spec page
CondRefOp requires SuperName which needs SimpleName which needs Arg op, Local op, etc.
btw you should probably start with something simpler, like the return_* tests
u can implement that and actually pass that test in a few hours
well it requires named objects, condrefof, conditional logic etc
so i wouldnt say so
im up for a challenge :D
sure lol
uacpi wasn't built in an afternoon btw
// Name: Return Integer (Byte 0xCA)
// Expect: int => 0xCA
DefinitionBlock ("", "DSDT", 2, "uTEST", "TESTTABL", 0xF0F0F0F0)
{
Method (MAIN, 0, NotSerialized)
{
Return (0xCA)
}
}
These ones are nice to start with
if this explodes in my face at least you guys get a good show so id just let the show go on 
yeah i just need to fix my MethodOp incorrectly moving the pointer for some reason
fiexd
alright im gonna take a break this was a very pleasant way to find out i have a ton of shit to fix 
wdym?
lol
hmm FreeType seems to rely on Musl
(Musl's math library)
That means removal will be a bit more challenging than I thought but I'm dedicated
maybe you could just accept that it's not completely nih and be okay with that 
no way i feel bad for saying that it was almost NIH before
i have a guilty consciousness 
It's okay, dw
nah i also would like to be NIH
so many OSes here are very impressive like #1230349543623757845 and #1350438975386423296 but the only up I have on them is being more NIH
so i gotta maintain it 
i work best under competition
Does it matter, though?
What matters the most is having fun with your project
i work better under competition. ethereal has grown the most when i was competing
i have plenty of fun :D
just also hate to see the ToaruOS code considering the main thing I knew about was the inspired clock system and thats the only real thing I wanted to be taken
If you have fun NIHing everything, do so, but if it gets too much to NIH everything, no one is gonna dislike you for having a dependency or two or a billion
i mean i might just port Newlib for fun to test my kernel's system calls
i can hold off removing musl and freetype
but ACPICA + ToaruOS code has to go
yeah actually first im gonna port newlib
why newlib specifically?
from my experience its the easiest to port
although i do recall it not having some sys headers
uh oh here comes mlibc guy
fine ill do mlibc
Do whatever you want, Iβll let the record reflect I did not advise anything here, just made an observation
whatever you say 
but yeah i guess i wouldnt mind giving mlibc a go, it worked well for Nyaux
@cyan phoenix is it okay if I DM you for a second? I have a couple questions I'd rather ask in DMs about your project
yes
This thread is (temporarily) archived as the OP has left the server. Normally we wouldnβt put out a notice like this for threads, but this one had gained some traction, so a note seemed like a good move. This thread will be locked in the meantime to preserve its contents
welcome back
oh ok good
we up
many changes since:
- mlibc ported and old libc dropped
- vm, vfs rewritten
- page cache yippee
- xhci fixed
- rtl8169 fixed
- new window server rewrite
- cool window manager shit
- custom widget framework
- half life port
welcome back
file explorer based on widget framework
still working on my page cache, it seems to give "decent" performance
much better than not having it ofc
butterscotch on ethereal
my tcp driver is trying its best for ClassiCube
oh hey you're back! 
yes we are back
debugging GTK3, glib seems to have some corruption issues on its poll queue
shouldnt be too hard as i made a small reproducable
famous last words
damn, i was casting a short to a long and writing it
btw running glib tests was pretty nice to do
I haven't done that in a while on managarm, but last time we did, it uncovered a bunch of issues that we fixed
hey thanks that's a great idea
i was just writing my own tests i forgot they had a testsuite
did fix above issue and now GTK runs and can be interacted, but its slow as shit
i kinda just want to see if webkitgtk even launches
then i can start adding these ports to ethereal's ports repo
That glib test suite helped me catch so many bugs that was great
#! /bin/sh
name=icu
version=77.1
revision=2
tarball_url="https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz"
tarball_blake2b="7ee4457dbb9abfee543aa91314e052282fb1c73e5fd9d9b21777d2ea32ae29c3eb3d83a78aafc7d00530435c014aa0f6196faf82ed67593c844e28395ab4720e"
source_imagedeps="build-essential pkg-config"
hostdeps="gcc pkg-config"
deps="core-libs"
prepare() {
autotools_recursive_regen
cp source/config/mh-linux source/config/mh-unknown
mkdir -p cross-build
cd cross-build
${source_dir}/source/configure \
CFLAGS="$HOST_CFLAGS" \
CXXFLAGS="$HOST_CXXFLAGS" \
LDFLAGS="$HOST_LDFLAGS" \
--prefix=/usr/local
make -j${parallelism}
cd ..
}
configure() {
config_data_packaging=library
if [ "$JINX_ARCH" = riscv64 ]; then
config_data_packaging=archive
fi
configure_script_path=${source_dir}/source/configure \
autotools_configure \
--with-cross-build=${source_dir}/cross-build \
--with-data-packaging=${config_data_packaging}
}
build() {
make -j${parallelism}
}
package() {
DESTDIR="${dest_dir}" make install
post_package_strip
}
π
same result π
works for me
oh you need to patch it btw
diff --git icu-clean/source/data/Makefile.in icu-workdir/source/data/Makefile.in
index 266ad7a..71f7da2 100644
--- icu-clean/source/data/Makefile.in
+++ icu-workdir/source/data/Makefile.in
@@ -240,6 +240,7 @@ ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES)
@-$(RMV) $@
$(INVOKE) $(TOOLBINDIR)/icupkg -d $(BUILDDIR) --list -x \* $(ICUDATA_SOURCE_ARCHIVE) -o $@
else
+ @mkdir -p "$$(dirname $@)"
@echo "$@" > $@
endif
endif
you're welcome
let me test it
no change π
but thanks anyways
i ran autoreconf -f -i unless im stupid
where did you pull this patch from
i dont see it on the bootstrap repo
the managarm one?
i mean if my regen command was correct
i just ran it and it exited with success so
yeah it did regen
wait
ah thats why
my build env had $TARGET set
which was interfering with the buildsys
thats pretty stupid
damn i wonder why my og message got deleted in this thread
makes it look particularly ugly
keeps trying to include epoxy/egl.h even though i have egl off weird
and keeps trying to execute $SYSROOT/usr/bin/unifdef π
Okay back to building
Anddd nevermind 
webkitwebdriver compiled
π
What do I even do ππ
Maybe j1
C++ file of doom and despair
Yeah alright we're just gonna j1 ourselves through javascriptcore
this is like the 4th time its tried to use EGL
from epoxy
what do i even do
i guess i need to build with libdrm and a DRI GLX backend in mesa
unfortunate
finally got it to compile, fixing it rn
k webkitgtk boots up now
it doesnt complete its connection probably because of those earlier gtk bugs
JSC is bugged too
yeah ive seen it before
i thought it moreso tested libc and not syscalls
more, but not exclusively
adding credential + fd passing to my unix socket implementation
i really should do another rewrite of unix socket but i dont really care allat much
not dead
working on webkitgtk still
finally i can pass some more tests in glib
including the ones with SCM
i will taking a break from trying to port WebKitGTK in order to improve my existing GTK applications and port some other fun stuff
since the sysroot is incredibly big and i dont have root support i am tired of it
pushing all of my ports soon
got window resizing working in my homebrewed window manager
larp overdrive
Bro is using old mlibc π₯
can old mlibc not run fvwm3 π₯ π₯
Its bugged
