#Ethereal

1 messages Β· Page 1 of 1 (latest)

cyan phoenix
#

Development of Ethereal mainly occurs in a different server, so updates here might be infrequent but I will post occasionally

cyan phoenix
#

Hmmm trying to get my GCC port running is not going well

#

Porting Mesa was very easy once I fixed my headers

solid stone
#

interesting, good luck with the project πŸ™‚

#

did you write a custom debugger for the kernel?

solid cobalt
#

Damn

#

Which libc are you using

#

Also a rare acpica user

solid stone
#

non-sleeping semaphores nooo

solid cobalt
#

Fr?

solid stone
#

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.

muted patrol
cyan phoenix
cyan phoenix
cyan phoenix
cyan phoenix
#

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

solid stone
#

lol nice, so how long have you been working on this?

cyan phoenix
#

it looked like this

#

Just a demo program in Hexahedron's fb kekw

torpid wolf
#

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?

cyan phoenix
cyan phoenix
torpid wolf
#

then why do you need grub?

solid cobalt
#

damn, gnu efi

muted patrol
torpid wolf
#

i see

cyan phoenix
cyan phoenix
torpid wolf
cyan phoenix
torpid wolf
desert seal
#

well

#

yeah it's unstable sometimes

#

but imo it's a pretty solid bootloader

gentle burrow
torpid wolf
#

like, specifically

atomic marlin
desert seal
#

haven't experienced instability myself but i could've sworn i've seen a little bit of people having issues

torpid wolf
#

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?

desert seal
#

can't recall

torpid wolf
#

(or even an example of one that was fixed, for completeness sake)

#

alright, sure

solid cobalt
torpid wolf
#

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

solid cobalt
#

Limine is unstable, btw I'm not gonna provide the evidence as to keep it this way trl

torpid wolf
#

that would be devilish

#

smh

solid cobalt
#

Lmfao

atomic marlin
ripe kettle
#

Only reason to not use the limine bootloader is custom boot GUI

#

Limine is 🐐

atomic marlin
#

custom bootloader running limine protocol trl

oak holly
torpid wolf
#

@cyan phoenix hey, i am still waiting for an answer...

#

πŸ˜”

muted patrol
#

πŸ˜”

cyan phoenix
#

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 kekw

cyan phoenix
gentle burrow
#

why would you

#

you just need the header for the kernel

cyan phoenix
#

Every other OS that uses Limine, at lesst in my community, does

cyan phoenix
#

Again I also am just lazy

torpid wolf
#

you can use whatever build system, you can use meson or whatever you prefer

gentle burrow
#

do you have a distro builder or something

cyan phoenix
torpid wolf
#

what is the shitty and hacky part in your opinion?

cyan phoenix
#

Mainly the gitmodules and calling a script from the Limine repo

gentle burrow
#

well you need something to build limine into your image

#

same way you need grub to make the iso

torpid wolf
#

what gitmodules? i am seriously confused

cyan phoenix
gentle burrow
#

that's not optimal

#

you should have a way of building an image

cyan phoenix
gentle burrow
#

limine bare bones includes kernel + bootloader

#

your kernel shouldn't need a limine build, just the protocol header

cyan phoenix
#

Nvm don't know where Unmapped got that from

gentle burrow
#

basically, you need a tool to build a distro

#

sooner or later

cyan phoenix
torpid wolf
#

yeah

cyan phoenix
gentle burrow
#

i do it in a generic way

torpid wolf
#

it's not mandatory

gentle burrow
#

i have the sections in my linker script regardless

#

i call them .boot{.init,.fini}

cyan phoenix
#

If I can I'll give it a go

cyan phoenix
#

Start button art, will add it in tomorrow

muted patrol
cyan phoenix
#

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

cyan phoenix
cyan phoenix
oak holly
#

What is Essence? Does it have something with nakst's Essence?

cyan phoenix
#

All usermode programs for Ethereal, besides ports of demos like glxgears, are all written by me

oak holly
#

I see, I guessed that it's the cli name, the name reminded me about that cool project, that now sits dormant.

cyan phoenix
oak holly
cyan phoenix
cyan phoenix
#

rtl8169 MAC address getting works

#

xHCI still doesn't work on real hardware kekw

#

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

cyan phoenix
#

RTL8169 working!

dusk crown
#

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

cyan phoenix
#

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

dusk crown
#

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

cyan phoenix
#

The initial idea was good in my opinion, before AML kekw

torpid wolf
#

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 )

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

cyan phoenix
cyan phoenix
solid cobalt
#

yeah

#

it also either lies or just completely omits a lot of very important details

dusk crown
torpid wolf
#

almost none

oak holly
solid cobalt
oak holly
#

I see, it's a total opposite to how I perceived it. 😁

cyan phoenix
#

Inspiron 1420 1 day of runtime

shell temple
#

Would be cool to see it with a day of runtime under a heavy load

cyan phoenix
cyan phoenix
#

Ethereal can now run the Bochs emulator

#

SDL2 is coming along great

solid stone
#

cool

#

can you boot ethereal in bochs under ethereal yet?

cyan phoenix
cyan phoenix
#

GUI at v1.0.0

topaz prism
#

Ayy! Looks awesome! πŸ‘

solid cobalt
#

p cool

cyan phoenix
#

Another photo of the GUI after adding a different wallpaper + font viewer

#

I probably should do a taskbar menu next

solid cobalt
#

wait wtf lol

cyan phoenix
#

Pulled together a small demo

solid cobalt
cyan phoenix
#

Icons in /usr/share/icons of course

topaz prism
#

looks great! :3

cyan phoenix
#

I think I'll do a poweroff sequence nw

cyan phoenix
#

poweroff sequence is done

solid stone
#

Nice

#

I wonder how many kernels here do proper shutdown

cyan phoenix
#

It's not like it really matters but I find it nice

solid cobalt
#

I don't think think any of them do

torpid wolf
#

Ironclad does

solid cobalt
#

Ah

dusky dew
#

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

shell temple
#

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

cyan phoenix
#

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

cyan phoenix
#

also taskbar design

#

it loads files (sorted by 01-entry.ent) from /etc/desktop.d and parses their icons, names, exec, etc. from it.

cyan phoenix
cyan phoenix
#

kernel is more unstable now in thread sleeping/mem system but it looks nice

icy junco
#

holy shit amazing and I love that logo

solid cobalt
#

yeah good logo

icy junco
#

good luck dude

cyan phoenix
icy junco
icy junco
#

how did dude pull vro

cyan phoenix
#

i got lucky lmao

icy junco
#

no bitches vro

cyan phoenix
icy junco
hoary pine
cyan phoenix
hoary pine
#

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 :(

tender verge
#

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

tender verge
cyan phoenix
#

dont feel bad :D

obtuse loom
oak holly
#

V trl

cyan phoenix
#

xHCI success finally

cyan phoenix
#

redoing my interrupt transfers to be asyncronous, then HID driver, maybe Hub too when I do USBHubInformation_t structure documentation

dusky dew
ripe kettle
#

Same

torpid wolf
#

same

icy junco
upper bronze
#

I'm also interested

cyan phoenix
icy junco
#

baller

ripe kettle
#

thx

dusky dew
#

thanks

icy junco
#

np

#

why am i saying no problem

#

crazy

solid cobalt
cyan phoenix
#

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

icy junco
#

does ur GUI use X

cyan phoenix
#

not at all

#

custom window server

solid cobalt
#

are u gonna add hw accel support?

icy junco
#

^

cyan phoenix
#

everything in ethereal is custom, minus a few things I will fix later like ACPI + libm + ttf

cyan phoenix
#

or do you mean SSE?

solid cobalt
#

well that and kernel drivers for gpus

cyan phoenix
#

SSE is already there

solid cobalt
#

and i guess userspace drivers since you're fully NIH

cyan phoenix
#

DRM is a bit away

solid cobalt
#

yeah

cyan phoenix
#

my drivers are kspace

solid cobalt
#

a huge part of gpu acceleration is userspace drivers

#

for generating shaders and command buffers

cyan phoenix
#

oh sure

#

oh yeah πŸ‘

cyan phoenix
#

right now the priority is fixing some kernel scheduler bugs (and maybe improving the very very shitty algorithm) and USB

solid cobalt
#

u could make your kernel drm compatible and port mesa

cyan phoenix
#

NIH :D

solid cobalt
#

OSMesa?

cyan phoenix
#

Mesa with framebuffer

cyan phoenix
solid cobalt
#

oh u have a mesa port?

ember hazel
#

OSMesa is not that

cyan phoenix
#

what?

ember hazel
#

OSmesa is mesa without OS support

cyan phoenix
#

off-screen rendering

#

which means rendering into a user allocated framebuffer

#

i need to switch to llvmpipe probably instead of using the default

solid cobalt
#

yeah llvmpipe is way better

ember hazel
#

llvmpipe does need llvm though, which if you are doing NIH may break a line

cyan phoenix
#

im not actually going to use llvmpipe/Mesa to render my GUI

#

i already have some SSE-accelerated graphics functions

ember hazel
#

So are you gonna write your own stack for desktop use?

ember hazel
#

For hardware accel in the desktop I mean

cyan phoenix
#

if you're talking about things like graphics API, yes
window manager API, widget API, etc

cyan phoenix
solid cobalt
#

do u have posix compatible syscalls?

cyan phoenix
solid cobalt
#

ah

cyan phoenix
ember hazel
solid cobalt
#

i mean even in a nih os u want ports

#

although ig not mesa

cyan phoenix
#

and you get glxgears

ember hazel
#

like, an OS only needs 1 GL stack

#

you could have glxgears with your own stack

solid cobalt
cyan phoenix
#

however I don't need OpenGL in the kernel

ember hazel
#

you dont need any of this in the kernel, the kernel shouldnt have to concern itself with graphics

ember hazel
#

you do need GL on the OS unless you want to make your own GL competitor for hardware accel

cyan phoenix
#

feel free to look yourself, the API contains graphics utility functions

ember hazel
#

complex effects and apps, your apps will need to talk to the kernel's graphic drivers somehow and GL is the standard for that

cyan phoenix
#

ill implement the GL api at some point

cyan phoenix
#

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

cyan phoenix
#

yay the kernel instability is in a system that commonly fails

#

this is actually good

#

because i think i know where it fails

tender verge
#

yay

cyan phoenix
#

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

torpid wolf
#

is your kernel built with -mcmodel=large or is it PIE?

cyan phoenix
#

-mcmodel=large

cyan phoenix
torpid wolf
#

why not -mcmodel=kernel?

cyan phoenix
#

wait, let me make sure its mcmodel large

#

yeah it is

torpid wolf
#

it must be given your load location unless it's PIE

cyan phoenix
#

iirc i switched to using mcmodel=large when i moved to higher half, and mcmodel=kernel resulted in a black screen

torpid wolf
#

hm that's weird

cyan phoenix
#

yeah, it was pretty weird.

#

i guess I kinda forgot about it

torpid wolf
#

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

cyan phoenix
torpid wolf
#

you'll need to move the kernel load address

cyan phoenix
#

oh

#

in that case maybe later

cyan phoenix
#

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

cyan phoenix
#

yup

#

i fuck up

#

still not sure where kekw

#

too tired will fix tmr kekw

#

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
cyan phoenix
#

the yes is off center im gonna kill myself

tender verge
#

i dont even see it

#

the yes button looks fine

formal phoenix
cyan phoenix
cyan phoenix
#

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

cyan phoenix
#

its pipes

#

specifically mouse events

cyan phoenix
#

this bug has been fixed! while the GUI runs like shit on non-KVM, it (shouldn't) crash

cyan phoenix
#

after a lot of fucking around, finally HID reading

cyan phoenix
#

another demo photo

#

doomgeneric port releasing later nekocatwoah

tender verge
#

doom generic

icy junco
#

baller!!!

#

also can u ask ur gf how she did the shading on that sphere

#

i needa know

cyan phoenix
#

ok flanterm is actually pretty cool

icy junco
icy junco
cyan phoenix
#

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

cyan phoenix
#

i have a custom libc + custom kernel + custom wm + etc. but ACPI, font renderer, and libm are stolen trol

icy junco
#

😭

cyan phoenix
#

i wonder if flanterm has better scrolling

#

probably than whatever the shit i was doing before has

icy junco
#

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

cyan phoenix
#

waIT

#

it didnt crash

#

no way

#

unresponsive though trol

icy junco
#

ummm lol

cyan phoenix
# icy junco epicc

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

icy junco
#

tell her shes an epic gamer

cyan phoenix
#

done kekw

icy junco
cyan phoenix
torpid wolf
#

btw, idk if you know this but it is likely that it has hanged for something completely unrelated to Flanterm itself

cyan phoenix
#

yeah it did

torpid wolf
#

i (and @amber gyro ) fuzzed Flanterm with the LLVM fuzzer for days

cyan phoenix
#

it was unrelated

#

interesting

torpid wolf
cyan phoenix
#

yeah this same thing happens on my custom emulator, and Flanterm hanged for unrelated reasons

torpid wolf
#

yeah

cyan phoenix
#

but very cool project

torpid wolf
#

ty

#

i appreciate

cyan phoenix
#

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

torpid wolf
#

ARGB in the sense of transparency? no, because Flanterm doesn't do alpha blending

#

or any other form of transparency

torpid wolf
#

mostly for performance reasons

cyan phoenix
#

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

torpid wolf
#

you want a mode where it prints pixels out with 0xff000000 ORed to them, or what? i am trying to understand, sorry

cyan phoenix
#

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

torpid wolf
#

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

cyan phoenix
#

0 = fully transparent, 255 = solid

torpid wolf
#

i see, then if that's the case it sounds reasonable to implement this

cyan phoenix
#

Perhaps something similar to SDL_MapRGB

torpid wolf
#

does passing a palette colour set with 0xff ORed to them not work?

cyan phoenix
#

Only really played around for around 15 mins

#

Can try tomorrow though

torpid wolf
#

sure no worries

torpid wolf
#

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)

icy junco
#

is mint ice cream adding alpha blending to flanterm real

cyan phoenix
torpid wolf
cyan phoenix
#

What you could do is just make it 0xFF if some config value is set or 0 otherwise

icy junco
cyan phoenix
torpid wolf
torpid wolf
icy junco
#

😭 πŸ’€

#

thats diabolical

cyan phoenix
torpid wolf
#

it's a reference to AI Deltarune

icy junco
#

lol

cyan phoenix
#

lmao

torpid wolf
#

also because their pfp is Kris

icy junco
#

yes

torpid wolf
#

yes

icy junco
#

i agree

cyan phoenix
#

anyways it's like midnight for me and I have a decent sleep schedule for the time being lmao

icy junco
#

i should not even be typing this i should be trying to sleep 😭 πŸ™

cyan phoenix
#

gn yall

icy junco
#

goodnight!!

torpid wolf
#

gn!

icy junco
#

decent sleep schedule imagine

torpid wolf
#

same

#

it's almost 7 am here

#

lol

icy junco
#

6am here lol

#

barely can sleep

turbid summit
cyan phoenix
turbid summit
#

i do everything in blender KEKW

cyan phoenix
#

ethereal would be incredibly ugly without her

turbid summit
turbid summit
cyan phoenix
#

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 CatThumbsUp

cyan phoenix
#

HID keyboards are done

#

mostly

#

I still have to do auto-repeat and more but I'll get to that later kekw

#

works on real hw too nekocatwoah

#

time for HID Mice

solid cobalt
#

Cool cool

#

For modern hw u probably want hub support

cyan phoenix
#

yeah agreed

solid cobalt
#

Since most stuff is behind internal hubs

cyan phoenix
#

i have to rework a decent bit of my USB stack though

cyan phoenix
#

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

solid cobalt
#

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

cyan phoenix
#

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

solid cobalt
#

Nice

#

Hubs are notoriously hard, managarm still doesn't handle them that well

cyan phoenix
#

afaik its just configure the initial slot context and configure the hub port endpoints differently

solid cobalt
#

Dunno, I just know its a lot of pain

cyan phoenix
#

@dusky dew pinging because you'd know

solid cobalt
#

xhci is the thing managarm struggled with

#

Idk the state of other hcis tho

cyan phoenix
#

then maybe im fucked kekw

#

but so far xhci is working pretty god

#

*good

cyan phoenix
#

they use QH/TDs

solid cobalt
#

Yeah I know they're a lot more manual

cyan phoenix
#

surprisingly i found them easier

#

its just QH/TD

solid cobalt
#

U have to allocate addresses, flip bits etc

#

Xhci kinda does that for you

cyan phoenix
#

yeah but you also do that on xHCI kekw

#

for the TRBs

dusky dew
#

xHCI is decent if it has sane hardware to my knowledge

#

now the quirks, that's the fun part

solid cobalt
#

Yeah

cyan phoenix
#

i wonder what quirks linux does

solid cobalt
#

It has a quirk mask for xhci

#

With 99999 quirk types

cyan phoenix
dusky dew
cyan phoenix
#

oh that's only PCI

solid cobalt
#

Thats pci

cyan phoenix
#

yea

#

didnt realize this was porn ok

solid cobalt
#

I think it has a separate file for xhci quirks

cyan phoenix
#

very possible idk

solid cobalt
#

Not at my PC atm so cant check

cyan phoenix
#

anyways back to mouse driver

cyan phoenix
#

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

icy junco
#

i thought the thread got deleted

#

😭

#

was scared for a sec

cyan phoenix
#

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
cyan phoenix
#

ethereal's sleep queue has now officially fucked itself

#

completely randomly

cyan phoenix
#

this was not random actually lmao

#

I fucked up a memcpy kekw

cyan phoenix
#

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 kekw

#

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 welldd

#

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

cyan phoenix
#

IRC clients + ping

#

once i get a web browser maybe ill log onto this Discord

dull crater
#

ok bro

#

only managarm has flexed that

#

#voice-0 message

cyan phoenix
dusky dew
#

yeahhh

#

about that

gentle burrow
#

do you like rust

dusky dew
#

highly unlikely that netscape can run that

cyan phoenix
#

yeah i've been more focused on other things so it mainly consists of initial build support kekw

#

but to be honest there's also the discord API so it's not that bad

cyan phoenix
#

i meant netsurf oh my god

dusky dew
dusky dew
cyan phoenix
#

I'm not an idiot.

dusky dew
cyan phoenix
#

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

dusk crown
#

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

topaz prism
#

port chromium trl

dusk crown
#

lol I guess? sounds like a lot of work

topaz prism
#

I was mostly joking lol

#

does indeed, sound like a pain

cyan phoenix
#

how is that against TOS

dusk crown
#

just is, discord be weird

#

I guess they don't want competing clients

dusky dew
#

that

#

and if we as a server find out, and don't act on it, we are at risk

dusky dew
topaz prism
dusky dew
topaz prism
#

wow! very impressive, and does indeed, sound very painful πŸ˜…

solid cobalt
dusky dew
#

Yes yes

#

But Managarm is currently on a bug hunting and correctness spree outside of the secret projects ongoing

solid cobalt
#

Understandable

icy junco
#

wait no

#

this is old

cyan phoenix
#

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

cyan phoenix
#

impressive work

#

does Chromium by default use those Windows 7 styled buttons? i cant recall it doing so

tender verge
cyan phoenix
cyan phoenix
#

goodnight everyone :D

dusky dew
dusky dew
dusk crown
gentle burrow
#

gotta port rust meme

dusky dew
#

bad

#

but not currently working on it

cyan phoenix
#

Anyways good morning

cyan phoenix
#

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

#

Fixed signal bugs + TTY bugs as well :D

#

Gonna keep working on AML parser using uACPI tests kekw

cyan phoenix
#

oh wow hi infy

solid cobalt
#

hello

cyan phoenix
#

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

amber gyro
cyan phoenix
#

let me see

#

at a glance i see it yeah

amber gyro
#

like, its not the exact same, and im not claiming it is lol

cyan phoenix
cyan phoenix
gentle burrow
#

i wouldn't say copying a folder structure is stealing code

cyan phoenix
#

(attributed)

amber gyro
cyan phoenix
#

its a fair assumption

amber gyro
#

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

cyan phoenix
cyan phoenix
#

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

amber gyro
#

yeah lol

#

libgfx is the window manager or something, right?

cyan phoenix
#

libgfx is my graphics system, celestial is wm

#

libcelestial is library for wm

amber gyro
cyan phoenix
amber gyro
#

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"

cyan phoenix
#

afaik its just little things like some flow control in E1000, ATA configuration code, TCP signatures, and the most grievous being printf

cyan phoenix
#

thanks!

amber gyro
#

np :3

hoary pine
#

do it in your own language and evade any accusations of plagiarism forever

cyan phoenix
#

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)

cyan phoenix
solid cobalt
#

jackal

dull crater
#

lmao @ when NIH master turns out to not be NIH

cyan phoenix
#

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 πŸ˜”

solid cobalt
#

i mean acpica alone is probably bigger than the rest of your os

cyan phoenix
#

I wrote a MinACPI subsystem that just does basic MADT parsing and it does still work

#

ACPICA is literally just there for poweroff kekw

#

i was gonna do _PRT rerouting with it but i guess ill just finish my AML parser and do it custom :D

solid cobalt
#

yeah thats until u depend on more stuff from acpi

cyan phoenix
#

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 copium

solid cobalt
#

_PRT is gonna be fun

gentle burrow
#

when dtb KEKW

cyan phoenix
#

musl is only needed for ports

solid cobalt
#

because it also requires _CRS which requires parsing all acpi resources

cyan phoenix
gentle burrow
#

riscv64 meme

cyan phoenix
#

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

topaz prism
#

I would love to also go mostly NIH, but I refuse to write an AML parser KEKW

cyan phoenix
#

it was never actually ethereal's plan to attempt to be be fully NIH

hoary pine
#

define "fully NIH"

cyan phoenix
#

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"

cyan phoenix
#

mb

oak holly
#

Instead of removing stuff in panick, maybe pay less attention to aggressive admirers? trl

cyan phoenix
#

eh i respect my critics and augustsky and electronode are right, i cant call myself NIH until fully all external components are NIH

cyan phoenix
#

*almost NIH, I still don't have plans for a TTF rasterizer

topaz prism
#

wait they changed their name again 😭

cyan phoenix
#

but ACPICA + musl + others should be able to be kicked out

#

including the ToaruOS code πŸ’€

dull crater
cyan phoenix
#

for the record though i never called myself fully NIH

#

i called myself almost NIH

cyan phoenix
solid cobalt
#

wdym almostSKULL

cyan phoenix
#

the thing i said in #when-your-os-goes-crazy is true.

cyan phoenix
#

acpica is easy to kill but freetype will be a pain

solid cobalt
#

libc, gfx, some kernel code as well right

cyan phoenix
#

yeah but that's easy shit to remove, i was just lazy and then forgot about it

hoary pine
cyan phoenix
#

after looking over the kernel code there isnt really anything there anymore? Its just old concepts no longer in use really much

cyan phoenix
#

i deserve to get called out for shit

topaz prism
cyan phoenix
#

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

solid cobalt
cyan phoenix
#

yeah 15

#

but it doesnt fucking matter guys

#

if im old enough to comprehend C then im old enough to comprehend NIH kekw

solid cobalt
#

are you gonna do an aml interpreter now?

grizzled coyote
#

lmao

cyan phoenix
amber gyro
#

AML is very complex

solid cobalt
#

u wanna do it in a day? SKULL

amber gyro
#

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

cyan phoenix
cyan phoenix
solid cobalt
#

aml speedrun

cyan phoenix
#

but i understand AML and ACPI enough to the point where I do have a basic interpreter

cyan phoenix
#

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

cyan phoenix
#

i did HID bytecode before, and while this is structured differently its just bytecode at the bottom.

amber gyro
solid cobalt
cyan phoenix
#

yeah i know

grizzled coyote
amber gyro
cyan phoenix
amber gyro
#

thing with AML is that it is totally shitfucked basically lol

cyan phoenix
cyan phoenix
solid cobalt
cyan phoenix
#

yes it does

solid cobalt
cyan phoenix
#

mine is just designed to be a simple ACPI interpreter

#

not designed to run on Windows at all kekw

#

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

solid cobalt
#

well simple or not you still want it to not hang/overheat your pc

solid cobalt
#

anyway if you can pass most of the tests and not die on the --large test suite then it probably works

cyan phoenix
#

shouldnt be too hard though

#

right now im just slowly working my way through it

solid cobalt
#

--large basically just feeds like a thousand real hardware blobs

cyan phoenix
#

er actually maybe that was banan telling me

solid cobalt
#

πŸ‘

cyan phoenix
#

🀷

#

anyways if my code has been roasted enough i should get back to work kekw

amber gyro
solid cobalt
#

it should be easier since tests basically verify nt semantics i've RE'd etc so you dont have to do it yourself

cyan phoenix
amber gyro
cyan phoenix
#

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

solid cobalt
#

well math helpers are pretty hard to get right

dusky dew
cyan phoenix
dusky dew
#

Oh I’m not calling you out there

#

That was a generic example

cyan phoenix
#

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 kekw

dusky dew
#

Yeah

cyan phoenix
solid cobalt
#

yes

torpid wolf
#

mlibc also uses libm from musl

#

which i believe in turn comes from the sun microsystems libm

#

so basically everyone copied each other

#

lol

solid cobalt
#

dammn mlibc is not truly NIH

cyan phoenix
#

is anything truly NIH?

solid cobalt
#

@hoary pine 's work

cyan phoenix
#

if you didnt make the resources you used to create it

#

is it arguably NIH?

cyan phoenix
solid cobalt
cyan phoenix
#

im mainly joking kekw

solid cobalt
#

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

cyan phoenix
#

slowly getting through it

#

god damn the encoding on CondRefOp looks annoying as shit

solid cobalt
#

most ops are this way

#

they return a value and also have a target

#

e.g. Add etc

cyan phoenix
#

im just saying reading the AML spec page

#

CondRefOp requires SuperName which needs SimpleName which needs Arg op, Local op, etc.

solid cobalt
#

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

cyan phoenix
#

sure

#

i just figured _OSI would be easier

solid cobalt
#

well it requires named objects, condrefof, conditional logic etc

#

so i wouldnt say so

cyan phoenix
solid cobalt
#

sure lol

grizzled coyote
#

uacpi wasn't built in an afternoon btw

cyan phoenix
#

why does everyone keep joining the thread to tell me

#

im not remaking uACPI

solid cobalt
#
// 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

cyan phoenix
#

if this explodes in my face at least you guys get a good show so id just let the show go on kekw

cyan phoenix
#

fiexd

#

alright im gonna take a break this was a very pleasant way to find out i have a ton of shit to fix kekw

solid cobalt
#

wdym?

cyan phoenix
#

realizing how much ToaruOS junk is in my OS

#

by #when-your-os-goes-crazy callout kekw

solid cobalt
#

lol

cyan phoenix
#

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

solid cobalt
#

maybe you could just accept that it's not completely nih and be okay with that KEKW

cyan phoenix
#

i have a guilty consciousness kekw

cyan phoenix
#

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 kekw

#

i work best under competition

amber gyro
#

What matters the most is having fun with your project

cyan phoenix
#

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

amber gyro
#

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

cyan phoenix
#

i can hold off removing musl and freetype

#

but ACPICA + ToaruOS code has to go

#

yeah actually first im gonna port newlib

solid cobalt
#

why newlib specifically?

cyan phoenix
#

from my experience its the easiest to port

#

although i do recall it not having some sys headers

#

uh oh here comes mlibc guy

dusky dew
#

It’s also incomplete as hell

#

Last I checked

cyan phoenix
#

fine ill do mlibc

dusky dew
#

Do whatever you want, I’ll let the record reflect I did not advise anything here, just made an observation

cyan phoenix
#

but yeah i guess i wouldnt mind giving mlibc a go, it worked well for Nyaux

amber gyro
#

@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

cyan phoenix
#

yes

dusky dew
#

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

dull crater
#

welcome back

cyan phoenix
#

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
solid cobalt
#

welcome back

cyan phoenix
#

file explorer based on widget framework

cyan phoenix
#

still working on my page cache, it seems to give "decent" performance

#

much better than not having it ofc

cyan phoenix
#

butterscotch on ethereal

cyan phoenix
#

my tcp driver is trying its best for ClassiCube

topaz prism
#

oh hey you're back! catparty

cyan phoenix
#

yes we are back

cyan phoenix
#

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

dull crater
#

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

cyan phoenix
#

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

cyan phoenix
#

That glib test suite helped me catch so many bugs that was great

cyan phoenix
#

how the hell do you build libicu

#

this buildsys is ass

gentle burrow
#
#! /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
}
#

πŸ‘

cyan phoenix
gentle burrow
#

works for me

cyan phoenix
#

good for you

#

maybe its this ver of icu

#

nope its the same one

#

dammit

gentle burrow
#

oh you need to patch it btw

cyan phoenix
#

ohhh

#

wheres the patch

gentle burrow
#
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

cyan phoenix
#

let me test it

cyan phoenix
#

but thanks anyways

gentle burrow
#

F

#

you did regen right?

cyan phoenix
#

i ran autoreconf -f -i unless im stupid

cyan phoenix
#

i dont see it on the bootstrap repo

gentle burrow
#

gloire

#

wdym it's in the bootstrap repoo

#

patches/icu/

cyan phoenix
#

the managarm one?

gentle burrow
#

no

#

mine

#

zinnia

cyan phoenix
#

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

cyan phoenix
#

which was interfering with the buildsys

#

thats pretty stupid

gentle burrow
#

dam

#

all build systems have some flaw

cyan phoenix
#

damn i wonder why my og message got deleted in this thread

#

makes it look particularly ugly

cyan phoenix
#

all desps for webkitgtk compiled

#

its time

cyan phoenix
#

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 kekw

#

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

cyan phoenix
#

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

cyan phoenix
#

@shell temple thank you for mesa patches :)

#

now i can finally keep building

cyan phoenix
#

finally got it to compile, fixing it rn

cyan phoenix
#

k webkitgtk boots up now

#

it doesnt complete its connection probably because of those earlier gtk bugs

#

JSC is bugged too

dull crater
#

btw did I ever mention os-test to you

cyan phoenix
cyan phoenix
dull crater
#

more, but not exclusively

cyan phoenix
#

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

cyan phoenix
#

not dead

#

working on webkitgtk still

#

finally i can pass some more tests in glib

#

including the ones with SCM

cyan phoenix
#

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

cyan phoenix
#

pushing all of my ports soon

cyan phoenix
#

got window resizing working in my homebrewed window manager

cyan phoenix
#

larp overdrive

shell temple
#

Bro is using old mlibc πŸ₯€

cyan phoenix
shell temple