<moon-child>
just a missing or broken late-stage peephole
bch has quit [Ping timeout: 255 seconds]
bch has joined #osdev
alpha2023 has joined #osdev
gog has joined #osdev
xvmt has joined #osdev
<mrvn>
moon-child: it's only valid for f(1) and f(2) and for those cases it's bad code.
<moon-child>
it's bad code, but it doesn't demonstrate a structural problem, just a missing or broken late-stage peephole
<mrvn>
moon-child: what's the fail on your last example?
<moon-child>
(also: it's valid for f(3) too!)
<mrvn>
f(3) gives 3, not 4.
<moon-child>
oh, yes, I got confused with the gcc thing for a second
<mrvn>
yeah, gcc is correct for 1, 2, 3
<mrvn>
clang misses that (17+18) add+mov can be done with lea like gcc does. But does it make a difference? My guess would be gcc code is faster on some cpus and clang code on others.
<mrvn>
ARM code looks even nicer.
<mrvn>
Hmm, question: In g() why isn't "int r = x + y;" moved before the "eff();"?
<moon-child>
I would expect gcc's code to always be faster
<moon-child>
mrvn: what I'm looking for here is not necessarily for the addition to be performed before the function call
<mrvn>
moon-child: isn't the mov fused in microcode?
<moon-child>
as doing that right in general requires finicky heuristics that aren't reflected in this small example
<moon-child>
but the fact that it can tell the difference f and g at all is problematic
<moon-child>
because it demonstrates that the ir is baking in too many constraints, which don't appear in the source
<moon-child>
(in this case, basic blocks instead of something purely graphical)
<mrvn>
In SSA f and g should be the same graph
<moon-child>
ssa doesn't imply graphical
<moon-child>
I was informed recently that the instructions within a basic block are sequential
<mrvn>
right. And that will be the problem why f and g give different code.
<moon-child>
if you don't sequence everything, then you need explicit control edges. That's ideal. But without control edges, you need some way to ensure that eg if I say eff1(); eff2(), eff1 and eff2 are called in order
<moon-child>
(are sequential--in llvm and gcc; obviously you could do something different)
<mrvn>
eff1 and eff2 have unknown side effects so they must have a control edge. But both gcc and clang fail to notice that local variables can't be affected by function calls unless you pass their address. I noticed that a few times.
<mrvn>
A function call is somehow a hard barrier. They can do anything so we can't move stuff across it.
<mrvn>
https://godbolt.org/z/zoEWeWx91 Notice that when the compiler can look into the function it figures out that x/y won't be touched
<bslsk05>
godbolt.org: Compiler Explorer
tomaw| has joined #osdev
<mrvn>
same with noinline attribute
craigo has quit [Ping timeout: 248 seconds]
nur has quit [Remote host closed the connection]
<mrvn>
Oh wait, this is odd. Only on ARM does gcc put the add before the eff(). But they all use the fact that eff won't trash registers it cares about.
<zid>
yea found it, I need a backplate and it should be in the box, k
<mrvn>
zid: are those solid copper heat pipes or hollow with some magic fluid?
gxt has quit [Remote host closed the connection]
gxt has joined #osdev
<zid>
gog: Can you take both mobos out of their respective cases for me? I'm tired and hungry already
<gog>
yes be right over
<zid>
thanks babe
<gog>
:*
<zid>
not sure which case to use, mine which has no buttons or anything, or the one its in which I can't mount drives in..
<zid>
saves moving my drives over if I use mine, but I'll have to remove my mobo and stuff
<zid>
so I am sat here smoking a cigarette instead, now that the stress of not having a computer is gone
<gog>
i have not had a cigarette in 14 days
<zid>
You broke or just done with em?
<gog>
trying to be done with em
<zid>
if you made it past 24 hours you already are done with em
<gog>
that's not true
<zid>
the rest is just conditioning
<gog>
i went 3 months without nicotine and then one night of drinking and i'm smoking a pack a day again
<zid>
yea same
<zid>
I quit at random once, just randomly started again too
<zid>
imo it's important to already consider your self an ex-smoker
<gog>
i needed a lighter for other smoking materials last night and it took every ounce of self control not to say "oh and pack of marb lights too please"
<zid>
smoking is 99% mental
<gog>
i know
<gog>
i know that the small pleasure i get from it is nothing compared to how shit i'm going to feel after
<zid>
I mean it literally, the actual high from and dependance on nicotine is really tiny
<gog>
i know all of that
<zid>
people smoke because they convince themeselves they're expensively poisoning themselves for fun, or lowers stress, or whatever
<zid>
none of which is true
<zid>
so just consider yourself an ex-smoker and feel happy about it
<gog>
but smoking makes you look cool and rebellious
<zid>
Yea that's the one aspect, it makes me look incredibly daring
<sham1>
Ew
<gog>
but you are right
<gog>
i need to be done with it forever
<zid>
I don't smoke real cigarettes though so I look like a hobo instead
<moon-child>
no gog you're thinking of meth
demindiro has joined #osdev
<zid>
moonchild I've never tried meth, what's it like?
<zid>
Don't pretend you don't know with a nick like that
<heat>
gog, congrats gog
<heat>
keep fighting
<gog>
:<
<gog>
but i want one
<heat>
no
<gog>
but i just want one and that's it forever i promise pinky swear cross my heart hope to die
<heat>
i dunno how it is in iceland but here the packs have disgusting fucking pics of fucked up lungs and throats
<heat>
so think of that
<gog>
i already have respiratory problems for various reasons
<zid>
realtek's website has a whole shit load of things to download but idk which is right
<gaxar77>
lol
<geist>
joke answerws aside i'm sure the win95 team was probably at least hundreds at that point
<gog>
oh 7z on linux works on this neat
<geist>
the number of software engineers that built it, dunno
<zid>
oh we good then?
<heat>
geist, yeah but they are almost all frozen. and fwiw I think jon explicitly said it was ratified, but he's not a riscv guy so he may be wrong I guess
<gaxar77>
So, how do I start an OS Dev team? I want to begin writing an OS once I have learned enough, and then once it has grown somewhat big, invite other developers to help me build it.
<geist>
yah probably just defacto frozen but someone hasn't flipped the switch yet
<gaxar77>
because I cannot build an OS like Windows on my own...
<heat>
gaxar77, that's not happening
<gaxar77>
even if I had all that knowledge.
<gaxar77>
What do you mean?
<heat>
1) you are not building Windows 2) you are not making a team
<gog>
zid i got it
<heat>
none of those goals are realistic
<zid>
huzzah
<gog>
which ones you need?
<demindiro>
gaxar77: people will join if they think it is worth it, the chance of which is very, very tiny
<gog>
w7 64
<zid>
whatever looks like it's for w7/64, if you can read .inf files then 10ec:8168
<gaxar77>
Well, it could just be a fun project to build something better.
<heat>
but no one is joining you
<heat>
keep that in mind
<gaxar77>
why?
<heat>
because everyone here wants to build their own
<zid>
it's about as likely to happen as 140 people deciding to help you build your house
<zid>
do all your plumbing and stuff for free
<heat>
having 2 or 3 people contribute once to the same project is already a major win
<zid>
a friend comes over to help, at best
<gog>
zid how do i get this file to you now
<zid>
That is a question isn't it
<gaxar77>
I'm talking about if I also worked on the OS.
<zid>
best for me is wget
<gaxar77>
And made a simple kernel to start with.
<heat>
sortie has worked on his incredibly successful and complete OS since 2011 and only has 3 people that can actually approve a MR (probably some 10 individual contributors over these 12 years). he does development mostly on his own
<mjg>
windows 95?
<zid>
if you can figure out how to host it somewhere
<gog>
yeh doing that
<heat>
hell geist has a kernel that is *actually used* IRL and most of the core code is still probably mostly his
<demindiro>
gaxar77: consider the viewpoint of other people, why would they *want* to work with you on your OS?
<heat>
getting contributors is very very very hard
<mjg>
i think there were attempts at people teaming up
<mjg>
to write an os
<gaxar77>
because one person can't build one like Windows.
<mjg>
major shitshows
<heat>
mjg, yep, and flopped
<heat>
gaxar77, no one is building Windows pal
<demindiro>
But then why *your* OS and not say, another OS that already exists?
<heat>
Linux people (many of them on a payroll) can't build windows (they fail massively)
<heat>
BSD people can't build Windows (they fail ultra-massively)
<mjg>
bro bsd people don't even use windows
<heat>
that's true, bsd people use Linux
<mjg>
correct
<gaxar77>
I figure the vision for the project would attract people, if I could just come up with something cool enough.
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<kof123>
"it's about as likely to happen as 140 people deciding to help you build your house" I agree with zid, you must become amish, its the only way
<mjg>
gaxar77: no mate, the reality works differently
<kof123>
and travel back in time to 1700s -- john titor can help with this
<mjg>
does not wiki talk about this?
<kof123>
sincerely, kof123
<gaxar77>
I don't know if this is answered on OSDev, as I have never found the article, but always wondered about this: How do I store a kernel and other files in an ISO conforming to a file system? Is there a tool on Windows I can use?
<gaxar77>
Actually, I must admit that OS Development is intimidating to me, as some basic tasks seem like a lot of work.
<gaxar77>
Such as making sure the code is loaded at the right address.
<gaxar77>
Well, that's not a lot of work, but I already forgot how to do it. (I don't know assembly langage.)
zid has quit [Quit: Lost terminal]
demindiro has quit [Quit: Client closed]
demindiro has joined #osdev
<gaxar77>
Last time I mentioned Cosmos here I was told it was a bad idea. Is anyone here familiar with Cosmos?
<gog>
oh yeah i read about that
<gaxar77>
Should I use it?
<gog>
i was thinking about trying to write a proof of concept in c# but then i saw how much work it'd be lol
<heat>
yes, bad idea
<gog>
idk go ahead if you want
<gaxar77>
Or should I just learn assembly and Intel architecture?
<demindiro>
You will need to know assembly sooner or later
<heat>
yes
<gog>
idk find some starting point and go from there
<gog>
assembly is a good start
<heat>
I don't know how much more bad idea you can go from "operating system kit written in C#"
<gog>
OperatingSystemFactory
<gaxar77>
Well, I was never able to learn assembly as a teenager, even though I learned C++ then.
<heat>
oh sorry, "written in C# for Visual Studio 2022"
<gaxar77>
But writing assembly code doesn't seem difficult.
<gog>
it's more tedious and annoying
<gog>
and easy to fuck up
<gaxar77>
I mean writing things like loops and stuff (doing it my own way) seems easy.
<gog>
it's not hard, but it takes a lot of thought and no small amount of "fuck around find out"
<gaxar77>
I see,
<demindiro>
If you're not familiar with assembly yet I'd start with trying to get some assembly to work in userspace. It's a lot easier to debug at least.
<gog>
yes
<gaxar77>
Yeah.
<gog>
you can write assembly templates with clang and gcc using __asm__
<gaxar77>
In OS Dev, do I need to write a lot of assembly?
<heat>
no
<gog>
i have asome
<gog>
it's not a "lot"
<gaxar77>
ok
<gog>
i'm working on minimizing what assembly i do have
<gog>
only the essential
<gog>
the less you write by hand the less you gotta glue to a higher-level language somehow
<gaxar77>
Do you have to reimplement the standard library?
<gog>
you don't have to
<heat>
yes and no
<gog>
like
<gog>
it's a good idea
<demindiro>
Also: do *not* copy assembly code from someone else, especially if you don't fully understand it.
<gog>
because the idioms that the compilier is going to recognize and optimize are based on the standard
<demindiro>
Otherwise you will have a very bad time debugging it
<gog>
but you can also bring in an existing implementation of the standard library or some subset of it
<gog>
subset is best in kernel
<gaxar77>
Can I build a GUI OS given enough time?
<gog>
yes
<mrvn>
gaxar77: don't write assembler. At most write a few inline assembler macros and the bootstrap code. Even there you can write stuff in C and let the compiler output the assembler as a starting point.
<gog>
we have a few people here who have more or less written their won OS with GUI
<gaxar77>
ok.
<mrvn>
you can take that part from the wiki too.
<gaxar77>
Well, I need to learn assembly first. So I think I'll practice assembly in user mode code for a while.
<heat>
ok
<gog>
i'm going to write a very simple GUI at some point
<gaxar77>
I want to build a good OS.
<gaxar77>
But I am only one person.
<heat>
yeah
<gaxar77>
So I probably cannot.
<gog>
set your eyes on "one that you can play with"
<gog>
nothing is ever going to be as good as some firm with bottomless pits of money can engineer
<heat>
wise-gal gog
<gog>
i work for a company with a modest supply of money and the best we can do is a web site whose existing code base has made me cry several times
<heat>
deep
<gog>
yes
<gaxar77>
I see.
<heat>
i guarantee you my code is 100% all good fuck everyone else
<gog>
your code is the best heat
<heat>
no joke
<gaxar77>
lol
<gog>
don't let hte haters bring you down
<gog>
i mean i've seen your code it's better than mine
<heat>
i am legitimately convinced that my code is overall quite good
<gog>
it very well may be
<gog>
but i'm not actually a very good progrmamer and don't know what good code looks like
<gog>
so i can't judge
<heat>
it looks like mine
<gog>
lmao
<mrvn>
gog: like a locomotive
<demindiro>
I hope that everyone considers most their code to be good.
<gaxar77>
The problem is, I haven't even built a compiler yet, and I will need to build a user-mode compiler to run on the OS I want to write.
<demindiro>
Otherwise that'd imply intentionally doing a sloppy job
<gog>
i have decent and clever code
<heat>
gaxar77, you're so far from that
<gaxar77>
I'm still trying to learn compiler construction.
<sham1>
Code isn't good. Code is adequate
<heat>
you don't need to write your own compiler?
<heat>
actually, don't write your own compiler, please
<demindiro>
gaxar77: cross-compiler = existing compiler but configured for your own OS
<gaxar77>
Ok.
<gog>
the problem is often less my code than it is the code i depend on
<gaxar77>
So I would just need to write a back-end?
<gaxar77>
Wait...
<gaxar77>
No...
<gaxar77>
it would just be intel.
<gog>
you don't need to write anything just use a compiler that exists
<bslsk05>
wiki.osdev.org: GCC Cross-Compiler - OSDev Wiki
<gog>
compilers are more complicated than a kernel in many ways
<gaxar77>
oh I didn't know that.
<gog>
as time goes on and the language changes the compiler has to keep working
<gaxar77>
I wanted to write an execution engine on top of my OS to run most of the user-mode programs.
<kof123>
achievement: the birth of disgust (paraphrase, devils dictionary). that is just to say, it is not necessarily a bad thing to look back on prior-<insert you here>'s old code with disgust. call it fission :D
<gog>
if you look at old code and go "eeehhhh no" it means you've grown as a programmer
<kof123>
except heat is already perfect, so doesn't have that problem
<gog>
yes
<gog>
heat is the most perfect boy
<mrvn>
but he wants to be a real boy
<heat>
im a special boy
<kof123>
well, he needs to start lying more then
<kof123>
its a process
<kof123>
island of misfit oses
<gog>
we'll never work on an OS together, just rubber duck debug for one another
<gaxar77>
Actually, can someone who wrote a cool GUI OS give me a link to their repository so I can look at it?
<gog>
this is a support group for people with a very peculiar obsession
<bslsk05>
klange/toaruos - A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc. (459 forks/5419 stargazers/NCSA)
<demindiro>
We should take everyone's OS and smash them into one big BorgOS
<gog>
heat: ok as soon as i'm done with mine
<gog>
demindiro: your syntactic and technological distinctiveness will be combined with our own???
<gog>
sign me up
<gaxar77>
Will this run in VMWare Workstation Player?
<heat>
gog, send me pull request
<heat>
i take sophia
<heat>
i'll treat her well i promise
<gog>
i shouldn't poke fun at you, you're the only other person to ever have contributed :P
<gog>
i trust you to make your own branch
<heat>
damn right 💯💯 real ones help friends out
<gog>
:>
<heat>
actually your code is pretty decent tho
<sham1>
Programming language design might be the most difficult part of doing language stuff.
<heat>
the compiler is also pretty hard
<sham1>
Like compilers aren't trivial, but I'd say that the design is more difficult in terms of the process
<heat>
now that you can shit out llvm bytecode and get some good codegen it's easier, but building a good frontend is still hard
<klange>
funny weed number? that's my birthday you degenerate
<gaxar77>
But why does is resize Window contents when resizing the window?
<heat>
😭
<klange>
because that's a feature available in VMWare Workstation (and also VirtualBox, completely different interface - implemented that one first)
<gaxar77>
What do you mean?
<gog>
haha 69**420
<klange>
what do *you* mean?
<gaxar77>
I wasn't making fun of the OS..
<heat>
gog: gog
<gog>
heat: heat'
<gaxar77>
I was just wondering if the OS is retaining the graphics drawn on the Window while it is being resized.
<heat>
probably
<gog>
that's how i'd do it
<heat>
no one does window resizing quite as badly as late 90s early 2000s windows
<sham1>
The important question is: 69**420 <=> 420**69
<gaxar77>
Maybe it's just a cool animation feature.
<sham1>
Bah
<sham1>
I hate markdown sometimes
<klange>
Prior to the most recent release, ToaruOS only had lazy resize, and over the years went through several different approaches.
<gaxar77>
oh
<sham1>
69\*\*420 <=> 420\*\*69
<gaxar77>
How long did it take to write that OS?
<klange>
Originally I did box resize, where you draw a box representing what the new size of the window will be, but it was always a sub-par experience especially since I do client-side window decorations and the border around the window would make the box size confusing.
<heat>
i think toaru started in 2011 too?
<klange>
So eventually I switched to stretching, where the window is scaled to its new size - and for a lot of windows this looks very close to what the window will actually render as when the resize finishes, plus it's a really cute compositor effect.
<gaxar77>
I see.
<klange>
Now I have semi-lazy. Resize events are sent as you move the mouse, and if the application is too slow to respond to them it will do the stretchy thing.
<gaxar77>
Will I have to write a lot of device drivers?
<klange>
(or if the application refuses to accept a size, such as if you try to make the window too small, it'll start to squish and then bounce back when you release.)
<gaxar77>
To get my OS to run?
<gaxar77>
When I write one.
<klange>
To get it to run, no. To get it to support functionality on a lot of devices, maybe.
<gog>
target an emulator and write drivers for that
<gaxar77>
Ok
<gog>
or maybe a computer you already own
<gog>
it'll be easier to start on an emulator because you can attach a debugger to that easily
<gaxar77>
Well, I don't want to accidently erase everything.
<gaxar77>
I'm probably not skilled enough to write an OS right now.
<klange>
If you want to hack on stuff with an aim toward writing an OS in the future, I would choose a different environment than writing .NET applications.
<gaxar77>
like what?
<gaxar77>
WxWidgets?
<gaxar77>
In C++?
<gog>
c++ is possible with restrictions
<gaxar77>
Like what?
<gog>
no rtti, no exceptions
<gaxar77>
What is rtti?
<mrvn>
they are totaly possible, just take some work.
<gog>
i mean yeah
<mrvn>
wether they are a good idea I leave to the user to judge
* gog
shrug
<demindiro>
For apps with the aim to do OSDev later I'd go for something that needs to run fast, e.g. a 2D or 3D renderer, an interpreter, ...
<demindiro>
You'll learn to read assembly in the process, probably
<gog>
i think if you limit the number of ones that can propagate all the way up the call stack
<gaxar77>
I only know most of the original C++ language, not including the standard libraries.
<gog>
it might be fine
<gorgonical>
demindiro: at this point I can read three assemblies and that was on accident
<gaxar77>
I want to build GUI applications.
<gaxar77>
Desktop apps.
<gog>
best work on an existing system
<klange>
imma be real with you, I can manage to produce three assemblies, but *read* them? hell no
<gaxar77>
But if do it in C++, I don't know if I should use WinUI 3 or WINAPI.
<gog>
developing your own OS is like inventing the universe to make an apple pie from scratch
<klange>
You should use Qt.
<gog>
i like Qt
<gaxar77>
I don't have enough disk space.
<gaxar77>
I don't think.
<heat>
UWP guys!!!!!!111!!!!1111111111
<gaxar77>
Well, I have a SSD.
<gog>
i'm a qt
<gaxar77>
But not enough space.
* moon-child
pets gog
* gog
prr
<klange>
gog: qt is pronounced 'cute', not 'cutie'
<gog>
i know
<klange>
so you should say 'i am qt'
* moon-child
a cute
<gog>
the grammatical error was intentional
<gaxar77>
I guess I could give learning Qt another try.
<klange>
[Man Ray meme, but it's me trying to convince gog to say 'cute' instead of 'a cute']
<gorgonical>
you could use tcl/tk for an exercise in computing history
<gog>
i remember trying to use tkinter with python
<heat>
i am an aqt angle
<gog>
pyqt was way easier
<heat>
hehehehe
<gaxar77>
Why do you recommend against using C# and .NET?
<heat>
because no one writes OSes in that
<gaxar77>
Is it not a good platform?
<gorgonical>
that stuff
<gog>
it's a fine platform for enterprise and web applications
<heat>
and those languages suck ass
<gaxar77>
lol
<gorgonical>
Yeah if you just want to write desktop apps then go ahead
<gog>
it's harder to shoot oneself in the foot with it
<gog>
but i still manage
<klange>
There's nothing wrong with C# as a language, and if you want to go down that road there's even a framework specifically for doing so (COSMOS)
<moon-child>
c# notwithstanding
<demindiro>
There's also an OS written in javascript IIRC
<gaxar77>
Well, I'd been having trouble finding documentation on Cosmos.
<klange>
But .NET applications are not representative of how COSMOS works, and even if you use COSMOS to write an OS in the future you will not be able to reuse components you built while making those .NET applications.
<mrvn>
You could probably port mirage to c#
<gaxar77>
I ordered a book called "Inside OLE" so I could learn COM.
<gaxar77>
Without ATL.
<klange>
You're far more likely to be able to port Qt in 5 years than get a working port of the .NET WinForms.
<gog>
are you going to write applications for windows 98?
<gaxar77>
Why is that?
<moon-child>
hmmm maybe
<CompanionCube>
would the haiku port be evidence of this?
<moon-child>
I would expect qt to be full of platform crap
<moon-child>
whereas .net stuff might be better abstracted
<gaxar77>
gog, what do you mean?
<gaxar77>
COM is absolete?
<gog>
OLE and COM
<klange>
Qt is designed to be very portable and is a million times better abstracted than winforms.
<gaxar77>
OLE and COM seem cool to me.
<gog>
they're not obsolte they're just not the way things are going these days
<CompanionCube>
even microsoft has basically given up on winforms, no?
<heat>
no one does OLE nor COM anymore
<gaxar77>
Then that means no one writes Win32 API code anymore either.
<mrvn>
IDL? CORBA?
<heat>
except maybe d3d?
<heat>
Win32 has nothing to do with COM nor OLE
<gaxar77>
Well, people either use Win32 or .NET.
<gog>
gaxar77: have you looked at the tutorials?
<heat>
gaxar77, wrong
<gaxar77>
Yeah, but I want a full understandig.
<klange>
If you really want to learn GUIs, you'll skip all of this and write your own.
<gaxar77>
I've been wanting to implement my own GUI Toolkit for a long time.
<heat>
you can also port Xorg and die of depression
<gog>
understand that you understand nothing. embrace the void of your ignorance and strive to fill it with knowledge
<heat>
gog, yo you shoot some fire quotes sometimes
<gaxar77>
I was going to say, "Or some third party API"
<gog>
i'm intoxicated
<heat>
do you have a lisp?
<gorgonical>
tell me you're sipping brennivin with you're evening hakarl
<heat>
or are you just ada hehehehe
<gorgonical>
your*
<gog>
huehuehue
<heat>
brazilian laugh moment
<klange>
Learn something very low-level and barebones for getting pixels on screen, like SDL (the older 1.2, that one that only supports one window), and then build a windowing system within it, build your own widget toolkit, and then one day when you have an OS you can port your GUI to it.
<gaxar77>
So, you want me to implement a Windowing system that runs inside an SDL Window?
<klange>
My current windowing system started outside of the OS, doing exactly that - running in an SDL window on Linux.
<klange>
I would have to kick myself if I posted my first guess.
<gaxar77>
So, no one uses COM or OLE anymore?
<CompanionCube>
and X11 doesn't come with a toolkit anyway, and basically nobody uses the toolkit-like bits
<gaxar77>
What do they use instead?
<gog>
i mean they do
<gaxar77>
besides .NET and Qt.
<gog>
if they're writing drivers
* CompanionCube
sees what WinRT does: wikipedia lists it as using COM.
<gog>
and on the back end
<heat>
CompanionCube, they all use COM because of legacy garbo
<heat>
you cannot have d3d without COM objects
<gaxar77>
Well, I was writing a simple application for modifying the file new menu in explorer, and I need to know how to interact with the registry properly.
<heat>
hurr durr ->Release()
<heat>
great, but that's also very offtopic
<heat>
this is not a windows-dev channel
<gaxar77>
Also, I've been wanting to write a namespace extenson.
<gog>
my offtopics are better
<gog>
:D
<heat>
gog, in a scale of 1 to 10 how much do you like cwm
<gog>
i don't like it
<gaxar77>
DO any OSes besides Windows use COM?
<gog>
i think there's a sort of implementation for Mac OS 8 and 9 to support Office Mac
<heat>
I mean, not really
<gaxar77>
Oh
<heat>
who would ever subject themselves to fucking COM
<gaxar77>
COM is, in fact, an open standard.
<gog>
yeah microsoft has a lot of open standards
<gaxar77>
lol
<gog>
but is conveniently the only one with enough money to pay develoeprs to implement
<gog>
or has already implemented and owns the market share for the applications that use it
<gog>
either way
<heat>
gog, "make a standard so impossibly hard to implement we're the only ones that can implement it" is the classic Wintel standard
<heat>
see EFI, ACPI
<gog>
yes
<gog>
microsoft is profoundly evil
<gaxar77>
lol
nyah has quit [Quit: leaving]
<demindiro>
Then slap something "secure" on top of it to ensure a monopoly and e-waste
<gog>
you don't get to be a multibillionaire without being evil
<heat>
they're not evil, they just like GUIDs too much
<gaxar77>
lol
<gog>
GUIDs are good actually
<gog>
you can be evil and still invent something useful
<heat>
stop it gog
<gog>
no
<heat>
this needs to stop here and now
<heat>
GUIDs are not good, GUIDs are not cool
<gaxar77>
What's wrong with GUIDs?
<gog>
well
<gog>
there is one problem with them
<gog>
they say "globally" unique
<gorgonical>
they're awkward to pronounce
<gog>
when the earth is flat
<gog>
they're discly unique
<demindiro>
Hence why I'm in favor of UUIDs
<gaxar77>
So sometimes they fail to be unique?
<gorgonical>
no silly, planely unique
<gog>
it's not a plane a plane continues forever
<heat>
they are 128-bit hunks of data that are thrown around by microsoft and Intel like they're the hottest shit in the world
<CompanionCube>
hot take: efi is intel nihing the likes of openfirmware
<gog>
the earth has a definite demarcation between earth and not earth
<heat>
CompanionCube, that's a cold take
<heat>
colder take: EFI is Intel NIH'ing the NT kernel
<CompanionCube>
"make a standard so impossibly hard to implement we're the only ones that can implement it" applies better to OOXML, no?
<mrvn>
gog: but then the horizon would show a curve
<mrvn>
And as many flat earthers have shown the horizon doesn't have a curve.
<CompanionCube>
heat: more DOS than NT, surely?
<mrvn>
==> plane
<gaxar77>
How do you avoid name collisions?
<gog>
i mean a gemoetric plain
<gaxar77>
I think that's why MS uses them.
<gog>
plane
<mrvn>
gog: me too
<gog>
oh
<heat>
CompanionCube, definitely not
<gog>
because the atmosphere would curve it upward
<gog>
duh
<demindiro>
gaxar77: you avoid name collisions by having a sensible standard
<gorgonical>
hottest take: both sides are wrong and we live on the inside of a sphere
<gaxar77>
lol
<gorgonical>
like from halo or something
<mrvn>
gog: if the earth were a disc then the horizon would show a curve. If it is a square then it would show corners. Only way the hoirzon appears flat is a plane.
<heat>
CompanionCube, the code style was ripped straight from NT, the typedefs too, the GUIDs too, the whole initial prototype for early EFI (IBI - intel boot initiative) was designed by an ex-nt guy
<gog>
hm
<heat>
i'm fairly sure there were also actual NT folks helping out building the early stuff
<gog>
it's a distinctively microsoft-like coding standard
<gog>
with sugar macros and everything
<gaxar77>
Does anyone here find COM hard to use?
<heat>
it is because it's ripped straight from NT
<gog>
yes
<gaxar77>
Or do they have no trouble with it?
<gog>
i've never used COM directly
<mrvn>
gog: Hint: the horizin actually shows a curve, you just need a high resolution camera to show it.
<gog>
disc world proven
<mrvn>
gog: but that also works for a globe.
<gorgonical>
or a weather balloon
<gaxar77>
So, writing an OS is okay for someone who has trouble with COM?
<gaxar77>
I mean feasible.
<heat>
what
<mrvn>
gog: you also have to consider the curve is the same in all directions (not counting mountains). A disc doesn't have that.
<gaxar77>
I'm asking if anyone here finds COM had to use.
<demindiro>
I don't even know what COM is
<gaxar77>
Component Object Model.
<heat>
offtopic
<gog>
god is pressing the disc from the edges
<gaxar77>
I would think an OS Developer would have no trouble with it.
<gog>
so it's bowed opward
<mrvn>
gog: but hey, maybe light is refracted upwards due to air temperature or something.
<gorgonical>
here's an interesting thought: if you had a weather balloon image of the earth as a disc, could you use the known height of various towers, etc to determine parallax and thus that the disc projection isn't flat?
<bslsk05>
vzimmer.blogspot.com: Vincent Zimmer's blog: Ghosts of....
<mrvn>
gorgonical: fun fact about weather baloons: They drift.
<heat>
from one of the main guys behind efi
<gorgonical>
mrvn: I only learned that one recently. thanks news
<mrvn>
Did you hear about the chinese weather baloon the US shot down? Those flat earth haters just had to terminate the parallax experiment to proove the earth is a disc. right?
<heat>
CompanionCube, well, "directly" isn't mentioned. But I've had some conversations about this with some Intel folks and yes, NT people were on it as well for a bit
fedorafan has joined #osdev
<gaxar77>
I'll be back at some point.
gaxar77 has quit [Quit: Leaving]
<CompanionCube>
makes sense
* CompanionCube
doesn't think they'd bother with the whole PE/UTF-16 thing entirely on their own, even as a reaction to BIOS crappiness
<heat>
oh yeah, PE too, UCS-2 too
<gog>
i don't actually think the earth is flat
<gog>
fwiw
<heat>
yeah
<gorgonical>
just that it's hollow
<gog>
i'm a poor os developer heat
<heat>
gog, no you're not
<gog>
i can't use COM
<heat>
also the earth is a rhombus
<mrvn>
gog: hopefully nobody here is
<klange>
it's hollow and we're on the inside
<klange>
"but klange why does the horizon bend downward" gravitational lensing
<demindiro>
The earth exists purely in your imagination
<mrvn>
klange: and the moon is a projector for the stars?
<heat>
life is a myth
<gorgonical>
wouldn't lensing require the earth to be substantially massier
<mrvn>
gorgonical: there would have to a massive shell around the earth so we don't fall down.
danilogondolfo has quit [Remote host closed the connection]
<heat>
actually the earth is the inside of one of those fucked up throats in cigarette packs
<mrvn>
the universe is a soap bubble.
<demindiro>
The earth is an electron
<klange>
The entire universe is a simulation.
<CompanionCube>
demindiro: is it at least an updated electron
<mrvn>
demindiro: and the sun a proton?
<klange>
If you're a good person, the system will extract your consciousness when you die in this simulation and place it in another simulation.
<gorgonical>
just like harvester
<gog>
do i get access to the character creation screen if i'm really good
<mrvn>
gog: you didn't?
<gorgonical>
yes but you can only change your skin color to a random RGB value for the next playthrough
<gorgonical>
i hear from the seances that the next life is substantially more technicolor
<mrvn>
gorgonical: just like old films / the last loop was B/w.
<heat>
their routers suck
<klange>
turns out vmware is only presenting an ACPI 2 table in the EFI ConfigurationTable so I was failing to locate the RSD because I only look for an ACPI 1 table :(
<klange>
(i fixed it)
<heat>
heh
<heat>
vmware's firmware is cursed as hell
<heat>
the ACPI tables are so so so stupid
<heat>
they basically include everything you could ever imagine
bradd has quit [Ping timeout: 246 seconds]
<CompanionCube>
so it's an accurate represnetation of ordinary firmware? :p
<heat>
i mean, no
<klange>
vmware is the most like an actual machine, in all the worst ways
<heat>
ordinary firmware dynamically generates your tables and links multiple together
<heat>
vmware spits 40 different PCI bus objects while you may only have 3 configured and present
<heat>
also had something silly like 20 COM (serial, not the cursed windows thing) objects
<klange>
also they still emulate that weird ensoniq audio card
<klange>
which I did eventually write a driver for, at least
<heat>
i'm fairly sure having a PCI-to-PCI bridge in a sub-function makes no topological sense
<heat>
also PCIe with a PIIX4 chipset lol
slidercrank has joined #osdev
<mrvn>
crazy idea: Take 2 boards and connect their PCIe buses with something.
<clever>
i heard something about a cpu that had 128 pcie lanes, and it could either work as 1 chip with 128 lanes, or 2 chips, with 64 lanes of interconnect, and 64 lanes of pcie each
<klange>
oh hey and my audio driver is not working under EFI either... probably missing the interrupt to schedule it...
<clever>
but that was specially designed, to repurpose the pcie PHY's as cpu<->cpu interconnect
<demindiro>
Isn't that EPYC?
<CompanionCube>
subfunction is the last number on lspci, right?
<demindiro>
clever: https://en.wikichip.org/wiki/amd/epyc#7001_Series_.28Zen.29 "Each processor has 128 PCIe lanes and non-P models also support two-way multiprocessing utilizing 64 PCIe lanes for this purpose from each CPU. "
<bslsk05>
en.wikichip.org: EPYC - AMD - WikiChip
<heat>
CompanionCube, yep
<CompanionCube>
heat: then i present: '00:15.3 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB900 PCI to PCI bridge (PCIE port 3)'