klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
foudfou has joined #osdev
fedaykin has quit [Quit: leaving]
vdamewood has quit [Ping timeout: 276 seconds]
sbalmos has quit [Ping timeout: 260 seconds]
vdamewood has joined #osdev
sbalmos has joined #osdev
heat has quit [Ping timeout: 246 seconds]
<kof673> sadly they left > i think traditional c++ and a lot of exceptions would be an excellent start # that's good, because then it could maybe run on https://github.com/bgould/nestedvm
<bslsk05> ​bgould/nestedvm - Updated NestedVM toolchain for compiling C/C++ applications to run on the JVM (is fork /6 forks/28 stargazers)
Dead_Bush_Sanpai has quit [Read error: Connection reset by peer]
Dead_Bush_Sanpai has joined #osdev
X-Scale has joined #osdev
gog has quit [Quit: byee]
Dead_Bush_Sanpai has quit [Read error: Connection reset by peer]
Dead_Bush_Sanpai has joined #osdev
X-Scale has quit [Quit: Client closed]
youcai has quit [Read error: Connection reset by peer]
youcai has joined #osdev
X-Scale has joined #osdev
X-Scale has quit [Quit: Client closed]
fkrauthan has quit [Quit: ZNC - https://znc.in]
fkrauthan has joined #osdev
fkrauthan has quit [Client Quit]
fkrauthan has joined #osdev
fedaykin has joined #osdev
navi has quit [Ping timeout: 248 seconds]
childlikempress has joined #osdev
Mondenkind has quit [Remote host closed the connection]
kfv has joined #osdev
kfv has quit [Remote host closed the connection]
navi has joined #osdev
kfv has joined #osdev
steelswords9 has quit [Read error: Connection reset by peer]
craigo has quit [Quit: Leaving]
m3a has quit [Ping timeout: 252 seconds]
steelswords9 has joined #osdev
kfv has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
GeDaMo has joined #osdev
kfv has joined #osdev
X-Scale has joined #osdev
kfv has quit [Remote host closed the connection]
kfv has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
kfv has quit [Ping timeout: 265 seconds]
npc has joined #osdev
kfv has joined #osdev
kfv has quit [Ping timeout: 264 seconds]
kfv has joined #osdev
xvmt has quit [Remote host closed the connection]
xvmt has joined #osdev
goliath has joined #osdev
kfv has quit [Remote host closed the connection]
levitating has joined #osdev
levitating has quit [Remote host closed the connection]
levitating has joined #osdev
xenos1984 has joined #osdev
<kof673> busybox 1.31.1 "CONFIG_DEBUG_PESSIMIZE is not set"
<nikolar> :(
CaptainIRS has quit [Quit: Ping timeout (120 seconds)]
CaptainIRS has joined #osdev
<isabella> i'm doing a bit of a history dive
<isabella> i found out that some old systems used to call file descriptors "units"
<isabella> and by old i mean OOOOLLLLDDD
levitating has quit [Ping timeout: 260 seconds]
netbsduser has joined #osdev
elderK has joined #osdev
<nikolar> example?
<isabella> this came up from someone asking "why does bash have read -u$fd when you can just do read <&$fd", and the answer to that is that bash copied ksh88, and actually the man page for ksh93 in debian trixie still calls it that, but read --help doesn't say unit anymore
<isabella> i found the source for an older ksh here https://github.com/weiss/original-bsd/
<bslsk05> ​weiss/original-bsd - Original BSD history converted from CSRG's SCCS repository to Git (via SVN) (35 forks/140 stargazers)
<isabella> seems to be ksh86
<isabella> and this version prints the prompt to that fd, which is not what you'd get with read <&$fd
<isabella> so that's the reason why the option exists
<isabella> anyway
<isabella> f77 in there also calls it unit
<isabella> it says tape units
<isabella> so, that old
elderK has quit [Client Quit]
<isabella> i can't easily find older sources or docs
<isabella> f77 has a unit type that wraps FILE and adds metadata, and it used unit 0 for stderr, 5 for stdin and 6 for stdout
<isabella> so weird
<isabella> usr.bin/f77/libI77/fiodefs.h
<isabella> anyone know where this stuff is actually from? is it f77 that first called things units?
<isabella> ah i guess it's the same as a LUN!
bliminse_ has quit [Quit: leaving]
bliminse has joined #osdev
<isabella> https://en.wikipedia.org/w/index.php?title=Logical_unit_number&diff=prev&oldid=99748752 it could actually be a fortran invention to use unit to refer to effectively a fd?
bliminse has quit [Quit: leaving]
<nikolar> unix referred to them as fds since at least v7
<nikolar> probably way earlier but i haven't run those
<kazinsal> old unix manuals are fun to read
<zid`> Thanks, I'll get working on my ICBM project
<kazinsal> v4 is a real fun one because it's well typeset while also being a manpage collection
<kazinsal> it's also describing as much as possible in C form so you can use it as a good reimplementation base
<netbsduser> isabella: i suppose it's possible or it might have been a later invention
<kazinsal> fortran 77 may happen to actually be a device originating in 77
<netbsduser> io channel/channel id is another common older term used for FD-like entities
<netbsduser> but my favourite old term has to be [whatever] control block
<kof673> ^^^ i don't know these things, just seen stuff for algol IIRC to launch a program, think mainframey/batch systems, having to set the "channels". https://en.wikipedia.org/wiki/MTS_system_architecture # Input/output is done directly by referencing a file or device by its name (FDname) or indirectly by referencing a logical I/O unit (SCARDS or INPUT, SPRINT or PRINT, SPUNCH or OBJECT, GUSER, SERCOM, 0 to 99). FDnames a
<kof673> re assigned to logical I/O units using keywords in the command language or by default.
<kazinsal> man I need to get some of those pore strips. shit is off the chain
<kof673> i mean...1970s-era slang could have come from many places
<kof673> algol is also known as the demon star .....just saying, why would you choose that name? lol
<kof673> > $SOURCE and $SINK they were EE people i suppose...
<isabella> Bourne was an algol fan so that may have influenced it too
levitating has joined #osdev
<kof673> > after working on an ALGOL68 compiler well... > Bournegol – Algol-like dialect of C used to write the original Bourne shell (schmorp.de) don't listen to me, just thought was where i saw some weird batch language...
bliminse has joined #osdev
jedesa has quit [Remote host closed the connection]
hwpplayer1 has joined #osdev
voidah has joined #osdev
m3a has joined #osdev
muxelplexer has joined #osdev
voidah has quit [Quit: Leaving]
<kof673> https://try-mts.com/algol-60-introduction/ i think that is what i saw, but 68 apparently "standardized" > $run *algol scards=hello.al spunch=-load just saw something like that in some algol specification once, but don't recall if it was to run the compiler or your program wikipedia just says: In most operating systems predating Unix, programs had to explicitly connect to the appropriate input and output devices
<kof673> # and says f77 used UNITs 5/6/0 by "convention"
<bslsk05> ​try-mts.com: ALGOL 60 - Introduction · Try MTS
<kof673> wiki "standard streams" > previous operating systems usually required some—often complex—job control language to establish connections
chiselfu1e is now known as chiselfuse
npc has quit [Remote host closed the connection]
levitating has quit [Remote host closed the connection]
levitating has joined #osdev
youcai has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
Left_Turn has joined #osdev
levitating has quit [Ping timeout: 246 seconds]
youcai has joined #osdev
alpha2023 has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
alpha2023 has joined #osdev
levitating has joined #osdev
Left_Turn has quit [Remote host closed the connection]
Left_Turn has joined #osdev
heat has joined #osdev
<heat> netbsduser, using TYPESAFE_BY_RCU to Just Solve lock inversion problems is the most eye opening shit ever
<heat> i'll never go back to a huge fuckin lock
obrien has joined #osdev
<netbsduser> heat: it's so good
<netbsduser> for me the page struct was a preview (you can count on it always being a page struct)
<netbsduser> then realising that suddenly you can replicate these patterns everywhere with RCU...
<heat> yeah but i assume you're just using good old call_rcu/kfree_rcu for now?
<netbsduser> that's all i have at present, aye
<heat> TYPESAFE_BY_RCU is an even cooler idea, basically objects can get reused, but the type remains stable. *slabs* are the things that get freed using RCU
<netbsduser> i heard about it, very useful for saving on rcu heads for every object, and makes it trivial to rcu-defer freeing whole classes of data structures without having to change every free call
X-Scale has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 265 seconds]
muxelplexer has quit [Quit: Lost terminal]
Arthuria has joined #osdev
obrien has quit [Remote host closed the connection]
X-Scale has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
<nikolar> heat: why does it matter that reused objects stay the same type
<the_oz> presumably having similar types can result in less fragmentation and thus cache availability. But not if locality to each other is already not only not needed but opposite
<the_oz> it depends tm
<the_oz> but whatever, you can get it most of the way per cpu per size slab or whatever
<netbsduser> nikolar: if a piece of memory remains consistent in type then you can often solve problems of a form like this:
<netbsduser> you have a -> b, that's how you usually access them, locking a and b in that order with a guaranteeing b's existence
<netbsduser> but then in some case you've got to from b to a. b doesn't guarantee a's existence and you can't make it so
<zid`> TYPESAFE_BY_RCU apparently allows use-after-free
<zid`> deferred free to simplify some code, I guess
<netbsduser> if however you can guarantee that the memory backing some kind of object - perhaps the type of a or b - will not be reused for another type of object, then you might be able to do something else
<netbsduser> this is exactly the pattern of what i will be doing with pages and vm objects in the future, when i do the reform of vm locking i have been planning for my kernel
<netbsduser> generally the lock order should be vm object's page state lock -> page replacement queues lock, but for page replacement one wants to pop the head of the inactive queue, then dissociate it from the vm object it was in, if that vm object has not in the meantime dissociated that page (due to the vmo being destroyed or trimmed or whatever) or the page was reactivated
<nikolar> zid`: do you set it to invalid values or something so you can tell?
<zid`> no idea how it works
<zid`> I just looked it up
<nikolar> kek
<netbsduser> since page structs are inherently type-stable memory it's a soluble problem even without TYPESAFE_BY_RCU'ing the vm objects too, but that makes it a tiny bit easier; but for other problems where you don't already have inherently type stable memory involved, it's more useful
levitating has quit [Ping timeout: 246 seconds]
gog has joined #osdev
_ngn has joined #osdev
antranigv_ has joined #osdev
antranigv has quit [Ping timeout: 245 seconds]
Starfoxxes has quit [Ping timeout: 265 seconds]
antranigv_ is now known as antranigv
Starfoxxes has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat_ has joined #osdev
Arthuria has quit [Killed (NickServ (GHOST command used by Guest684531))]
Arthuria has joined #osdev
<heat_> zid`, it's not a deferred free
<heat_> it only gives you a guarantee that the type remains the same
<heat_> the object itself can be reused
MelaniUrsidino has quit [Quit: Bye Open Projects!]
<heat_> TYPESAFE_BY_RCU is almost always necessarily paired with a slab cache ctor, so the objects are constructed and valid when the slab is allocated, and always remain valid
Marsh has joined #osdev
MiningMarsh has quit [Ping timeout: 252 seconds]
Marsh is now known as MiningMarsh
heat_ has quit [Read error: Connection reset by peer]
heat__ has joined #osdev
heat__ is now known as heat
Ellenor has joined #osdev
Arthuria has quit [Ping timeout: 246 seconds]
hwpplayer1 has quit [Remote host closed the connection]
Matt|home has joined #osdev
Arthuria has joined #osdev
kilic_ has quit [Quit: Leaving]
spareproject has joined #osdev
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
netbsduser has quit [Ping timeout: 255 seconds]
Dead_Bush_Sanpa1 has joined #osdev
Dead_Bush_Sanpai has quit [Ping timeout: 252 seconds]
Dead_Bush_Sanpa1 is now known as Dead_Bush_Sanpai
bauen1 has quit [Quit: leaving]
bauen1 has joined #osdev
<geist> impressive, they ported Second Reality demo to commander x16
<geist> i remember SR coming out in the early 90s and it was mind blowing
<gog> oh yeah i saw he had a new video up todday
<geist> yeah couple new cards. one of which is serial + wifi
<geist> and a combo midi + wavetable card
<nikolar> that's neat
<gog> v cool
<nikolar> on a 6502 too
<geist> yah
<geist> granted its running at i think 8mhz, so to a certain extent it's faster than a slow 386, at least at 8 bit stuff
<geist> when this first came out i had a 386sx 16mhz and i remember it working relatiely okay. enough to completelu blow my mind but wasnt 60fps like we expect things today
<geist> but based on the kinda things you would expect from games at the time on the 386 it was great
<geist> but also there's the Vera FX which has some offload capability, so will be interesting to see what is offloaded. i'm sure the source to this is available
<nikolar> well i don't know what the vera can do
<nikolar> i think it does some sprite stuff, and maybe simple 2d transformations but no clue
karenw has joined #osdev
craigo has joined #osdev
X-Scale has joined #osdev
Matt|home has quit [Quit: Client closed]
Etabeta1 has quit [Quit: Ping timeout (120 seconds)]
Etabeta1 has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
<karenw> You know your code is good when it actually crashes qemu instead of just the guest
netbsduser has joined #osdev
Dead_Bush_Sanpai has quit [Read error: Connection reset by peer]
<heat> lol
<heat> that's actually not super hard
Etabeta1 has quit [Client Quit]
<karenw> I accidently put `where` into a PML4 entry instead of `where >> 12` and qemu attempted to acquire a mutex recursively and died. Kek.
<heat> huh, that's weird
<karenw> I mean, I expected the guest crash because other parts of the page table aren't correct and RIP would have become unmapped. Not a qemu crash.
Etabeta1 has joined #osdev
<heat> if your table ended up in non-ram that's pretty normal. qemu (and kvm, if enabled) tends to blow up once you touch non-ram
<karenw> Nothing should have been accessing virtual address 0xFFFF'FFFF'FFFF'Fxxx though? Meh.
<karenw> Recursive page tables make my head hurt
<zid`> but.. you do want where not where>>12 :(
<zid`> Unless you're doing bitfields I guess
<karenw> I'm doing bitfields.
<zid`> I'll find the pillory
<karenw> Not sure if I should, there's UB if it decides to reorder instructions so P gets set before the other bits.
<zid`> where | P
xenos1984 has quit [Ping timeout: 272 seconds]
<karenw> I think the page tables should be considered volitale if I'm doing it via bitfields, and that is horrible for many reasons.
xenos1984 has joined #osdev
<zid`> it can't decompose that into *a |= P; *a = where;
<heat> you should not use bitfields for page table entries
<karenw> Yeah but currently I'm doing `pDir[i].ADDR = where << 12; pDir[i].P = 1;`
<karenw> heat: Yes, I am discovering that right now.
<zid`> yea, just do .entry = where | P;
<zid`> I have an anonymous union of bitfield vs u64, but I only use the bitfield to toggle bits or create a temporary object that I use as an r-value
<zid`> but I made sure the codegen was what I expected before I used it in anger
<karenw> So like: `pDir[PAGES_PER_TABLE - 1] = where | PD_XD | PD_RW | PD_P;`
<zid`> yup
<karenw> I should probabally add a check that the lower 12 bits are 0
<karenw> Or hilarity ensues
<zid`> could just and it off
<heat> another tip: recursive page tables suck ass
<zid`> (p->e[pdpte].entry & 0xFFFFFFFFFE00ULL);
<karenw> heat: Yes, I am also discovering that :D
<zid`> I had fun with them
<gog> they're not worth the headache
<zid`> idk if they're LINUX WEBSCALE
<zid`> but it was simple and worked well
<heat> they're not LINUX WEBSCALE
<zid`> I did end up adding an offset identity just for memory allocator purpose later though
<gog> although my working branch does a little thing with the kernel area where the top 2MiB is a fractal map
<heat> the trivial solution is to just map it all
<zid`> so I could undo the recursive mapping now
<gog> and i use it for temporary mappings that will not be used by any other CPU
<gog> i will be doing away with it tho
<gog> someday when i work on it again
<gog> or never
<gog> life is full of surprises
<zid`> same, also same
<zid`> I am currently working on my C compiler, sorta
<zid`> and that project is years older than my OS
<zid`> Did you know the rule for \x123 is that you should consume all the hex digits, and then do implementation defined behaviour?
<gog> i'm not working on my website
<zid`> gcc seems to just shuffle them into a char[2], meaning you end up with the final two, which is kind of evil
<zid`> because it guarentees if you did it accidentlly that you get the wrong answer
<zid`> I've decided that the implementation defined behaviour is that it has the value of 7
xenos1984 has quit [Ping timeout: 246 seconds]
<heat> gog can you use mongodb with C#'s ORM
<heat> if not then why is C# not webscale
<gog> which ORM
<gog> also yes, you can probably use system.text.json to map mongodb entries to objects
<gog> it's not like efcore which is only for sql
<gog> if mongodb implements sql tho
<gog> then we're talking
<heat> iirc the premium mongodb mappings are in javascript
<heat> you can literally just shit out a javascript object into the db
<karenw> On the wiki it says that bits above 'M' in a physical address are reserved. What's M nowadays, or can I just assume it's 52?
<heat> you don't need to care, make it all 0
<heat> if you get a physical address above 'M' you're toast anyway
<gog> CPUINFO will tell you what M is
<heat> cpuid
jedesa has joined #osdev
<gog> yes
<gog> i'm not a programmer i'm sorry
<karenw> heat: Yeah, but it's nicer to explode with 'You tried to map a page above the physical maximum you doofus' than 'something happened'
<karenw> Unless you're a MSFT developer ofc
<heat> the something happened will be a page fault
<heat> with a "reserved bit set" error
xenos1984 has joined #osdev
<gog> heat: HttpClient has generic functions to take deserialize JSON messages to POCO
<gog> i'd make my mongodb orm with that
<heat> mongodb is crazy man.
<heat> they were like "what if we did a random database idk make it fast make it webscale" and they actually did it
<karenw> Oh ffs. Riiight, I can't use recursive page tables to set up my recursive page tables (cr3 is still pointing to the limine-provided page tables)
<gog> sure you can
<gog> well, you can prepare the recursive table in advance
<gog> if you're trying to save code and always work with paging structures in the same spot, it's really tricky
<gog> because then you get into this situation where you're doing something like fork()
<gog> where you need to shadow all the paging structures at some point
<karenw> Yeah, but I also have to prepare mappings for the HHDM and the kernel ELF before I can write cr3 with my new pml4
<gog> i just have two versions of the page table manipulating code: one for boot time and one for runtime
<karenw> Yeah, going to have to.
<karenw> The slow path can read the physical addresses and go via the HHDM
<karenw> I say slow path like it even matters
<heat> ah yes limine
<gog> premature optimization is very attractive
<heat> ur very attractive
<gog> eeeeeee staaaaahhhhp
* gog blush
<heat> :flushed:
<karenw> It''s not so much limine is the problem here, but the fact I'm trying to bootstrap paging from inside long mode (which requires paging)
<heat> limine is often touted as the best thing ever but it turns out it replaced the old set of problems with a new one
<gog> does limine need to write to any page tables after this point or is it just there?
<gog> if it doesn't, you can do a parasitic mapping where you copy its PML4 and work with that
<nikolar> heat: what are the new problems
<karenw> It's just there. I'm trying to write my own page tables in free memory so I can swap out cr3 then I can mark all the limine-owned memory as usable
<nikolar> i like that i don't have to touch the protected mode for example
<heat> i enjoy fully controlling my boot environment and knowing exactly how it's set up
<heat> even if it's not particularly trivial
<gog> i like UEFI
<nikolar> you get the same thing with limine though heat
<heat> /votekick gog
<gog> heat you're literally in the UEFI discord
<nikolar> it's not that much different from multiboot conceptually
<nikolar> /votekick gog
<heat> sure it is? it takes part in a lot more crap
<karenw> Except it's not braindamaged like multiboot
<heat> for instance my experience with grub is that the more you let it do, the more you're fucked
<heat> not in the good way
<nikolar> heat: i think most is optional
<heat> multiboot is absolutely okay, dunno what you're on about
<gog> can i make my case for UEFI
<nikolar> so you can just take the long mode and the framebuffer and completely disregard everything
<karenw> heat: Yeah, which is why I'm trying to bail out of needing limine any more once I've got these page tables sorted.
<mcrod> hi
<heat> uefi is aight
<gog> /votekick heat
<childlikempress> i like uefi
<heat> it's problematic in certain situations. like try to open your kernel or your initrd from a partition UEFI doesn't understand
<nikolar> /votekick childlikempress
<karenw> I think I'm going to abandon using recursive page tables. Maybe I can add them back later if I want them.
<gog> write a UEFI driver for it
<heat> i have
<heat> convince your IBV to include it
<gog> you don't need to, your application can load it
<heat> fair
<heat> but now nikolar's dumb ass is trying to boot on zfs
<heat> and i'm not writing a zfsdxe
<mcrod> onyx sucks
<mcrod> down with onyx
<heat> FUCK YOU
<gog> play nice, boys
<heat> YOUR IRC SERVER IS ASS
<nikolar> hello to you too heat
<mcrod> my IRC server is *fantastic*
<heat> nikolar, <3
<nikolar> <3
<heat> there's a project somewhere on the interwebs
<heat> that takes grub's drivers and wraps them for efi
<heat> which ...helps, but now you're stuck loading and packaging like 10 different drivers for various fs combos
<gog> fuse-efi
<gog> well it's not really userspace tho
<heat> funsafe-efi
<gog> funsafe!
<mcrod> gog
<mcrod> may I pet you
<gog> yes
* mcrod pets gog
* gog prr
<heat> i'm not bingoing today unless you people really start to talk about programming languages or linux desktop real fuckin quick
<nikolar> c++ sucks
<nikolar> there you go, mark a spot
<gog> linux sucks
<gog> mark another
<heat> there's no linux sucks
<gog> linux desktop sucks
<nikolar> systemd sucks
<nikolar> better?
<mcrod> no
<gog> systemd *strategically* sucks
<mcrod> i've never had a problem with systemd
<nikolar> gog: ?
<mcrod> or to be fair, init
<gog> nikolar: #archlinux reference
<mcrod> never had a problem with either
<nikolar> ah
<heat> !archsucks
<heat> oh, !ass
<mcrod> i have my arch setup just the way I want it
<mcrod> and *almost* nothing is broken on it
<mcrod> it's remarkable
<nikolar> kek
<heat> i told you
<gog> kekw
<nikolar> mine works fine too
<heat> aren't you on artix?
<mcrod> i don't care, one day it'll blow up in my face
<gog> kekw is the windows version of kek
<zid`> almost nothing is broken on my windows, except most things
<heat> wkek
<zid`> but only almost none of the time
<nikolar> heat: yeah, so?
<heat> that's not arch
<heat> !notarch in #archlinux references
<mcrod> I've thought about running a custom kernel
<nikolar> kek
<mcrod> still do
<heat> why
<heat> pain and suffering?
<nikolar> i don't think i've managed to use a custom kernel, though i have tried only once and it didn't work so i gave up :P
<mcrod> why else
<mcrod> note: i'll never do that seriously
<mcrod> i'm not insane
<heat> what
<gog> i remember when a custom kernel was feasible
<heat> so you'll do it... playfully?
<mcrod> it's a huge waste of my time for absolutely 0% benefit
<nikolar> gog: ?
<gog> where menuconfig didn't have 9000000 entries
<mcrod> yes
<heat> it's still feasible
* gog shakes her cane
<heat> make oldconfig or make localmodconfig
<gog> i'm too old for menuconfig then
<mcrod> as in, i'd never daily drive a custom kernel and have to build a custom kernel for every update
<mcrod> fuck that
<nikolar> heat: what's localmodconfig again
<heat> takes your loaded drivers and draws up a config
<nikolar> mcrod: you know you don't have to update you kernel with every upstream update right
<mcrod> of course
<mcrod> but unless you want to be big dick cutting edge like arch
<mcrod> you'll basically do that
<heat> big problem is kernel drivers
<nikolar> ?
<heat> you'll need to move it all to dkms
<heat> and if you want to run zfs KEKW
<gog> maybe if linux at some point in its history decided it was a good idea to have a stable abi for drivers
<heat> nah fuck that
<gog> this is the one thing i will give credit to microsoft for
<nikolar> heat: zfs is already dkms
<nikolar> so that one is solved :P
<heat> zfs has big troubles supporting mainline for all i know
<gog> windows nt is enterprise-grade
<mcrod> windows is the only thing that will allow me to portably say "download this toolchain and it'll work", at work
<nikolar> heat: they are a few minor versions behind as far as i can tell
<nikolar> i think they are targetting lts
<heat> yep.
<mcrod> if any of you remember, I tried to ship a toolchain, or work on a custom toolchain
<CompanionCube> nikolar: the releases page on github comes with 6.10 as of two weeks ago
<mcrod> for a public project
<mcrod> what a mess
<nikolar> mcrod: i mean every gcc toolchain i've downloaded just werked
* CompanionCube just checked
<nikolar> CompanionCube: it's often behind though
<gog> just use clang
<mcrod> nikolar: until you're on a musl thing
<heat> why would you be on a musl thing?
<heat> thanks.
<mcrod> because people *are*
<gog> clang clang clang went the trolley, ding ding ding went the bell
<nikolar> if you're on musl, you probably know what you're doing
<mcrod> oh by the way
<mcrod> gog is the curious gnome
<heat> ok so
<heat> >I tried to ship a toolchain
<heat> this is fucking wrong and i fucking spent too many minutes of my life telling you so
<mcrod> i don't care, the idea on its face was sound
<mcrod> the execution was impossible, to your credit
<heat> it is not sound
<nikolar> what are we talking about
<heat> this is googleware garbage
<karenw> Hmm, mapping the entire physical address space with 4k pages takes a while...
<heat> mcrod wanted to ship a custom toolchain FOR SOME REASON for his random userspace C project
<heat> karenw, uhhhh don't do that?
<karenw> Yeah, I should probabally use huge pages for this
<heat> i mean
<heat> don't map your whole physical address space
<heat> AND use huge pages
<karenw> Well, I'm mapping from 0 to the highest entry that actually has ram or a device.
<mcrod> at work, I stuff the project's toolchain in a folder called "toolchain" with git LFS
<karenw> Not the full 52-bits
<mcrod> guess what? you clone it and everything you have is there and it just fucking works even in the most disgusting code editor like vscode
<nikolar> mcrod: why, that's cursed
<heat> oh ok. even then it shouldn't take too long
<mcrod> i said git LFS, not git
<nikolar> yes i know what you said
<mcrod> to be clear, this is an embedded project with a downloadable toolchain from ARM themselves
<mcrod> this is NOT a userspace project
<heat> thank you.
<mcrod> shut up
<heat> fuck you buddy
<gog> boys+
<nikolar> get a room you two
<heat> we have one on discord yeah
<gog> please play nice
<mcrod> heat and I talk a lot on discord
<mcrod> i'm sad to say that he is my friend
<mcrod> :(
<gog> :(
<heat> <heat> fuck you buddy
<childlikempress> waow colours
<nikolar> :|
<heat> yeah sometimes hexchat copies colours for some reason
<mcrod> but yeah, the idea was "clone the project, you've got everything you need", and this seems to work well for teams
<mcrod> there's no system wide installations or other local installations you have to do
<heat> it's incredibly packager-hostile for various reasons
<nikolar> indeed
<mcrod> that's not what this is though
<mcrod> at all
<heat> it's an okay idea if you're working on an embedded project or a kernel or whatever
<heat> my OS has its own toolchain which you can build or download
<mcrod> and yes, I learned my lesson
<mcrod> in userspace land
<heat> having prebuilts is late stage googleware
<karenw> Ah, it's slow because it's wrong. It's only mapping every 4th page and qemu (even with kvm) is not enjoying that.
<mcrod> i do only support whatever ubuntu 20.04 is shipping at minimum
<mcrod> when that dies, 22.04
<mcrod> and so on
<mcrod> because I have to tell you
<heat> first you ship a bleeding edge clang and lld, then you ship your own cmake and ninja and gn, then you ship a glibc and now you're also stuck shipping a full bleeding edge rustc
<mcrod> I do not think anyone is on a machine that is seriously using anything older than gcc 9.3.0 or clang 10
<mcrod> or cmake 3.16.3
<heat> you're wrong
<mcrod> that shit came out when COVID hit
<mcrod> well then that's unfortunate for them
<heat> rhel.
<mcrod> sucks for them
<mcrod> holy shit I thought you were joking
<nikolar> LOL
<mcrod> oh well
<mcrod> sucks for those fuckers
<mcrod> nobody is going to run an IRC server on RHEL
<mcrod> nobody is even going to run an IRC server seriously anymore.
<heat> sure they will?
<mcrod> i'm only doing that project for fun
<CompanionCube> rhel only stopped supporting 2.6.32 a few months ago, so...
<mcrod> yeah no thanks.
<heat> also HAHAHAHA the default system compiler for RHEL7 is gcc 4.8
<nikolar> nice
<nikolar> not even the last c gcc
<nikolar> but the first c++
<mcrod> gcc 9.3 was released in 2020
<heat> IDEAL
<mcrod> that's good enough for me
<heat> hey nikolar did you know rpm 6 is introducing in-repo C++ support
<nikolar> what does that mean
<heat> rpm will have bits written in C++
<nikolar> yuck
<mcrod> who's going to test my IRC server with me
<heat> rpm.rs
<mcrod> i didn't even use libuv!
<heat> what do you need?
<mcrod> nothing
<nikolar> mcrod: i am not downloading a toolchain to build an irc server :P
<mcrod> you wouldn't have to..
<mcrod> wtf did I say like 10 minutes ago
<mcrod> i do however want to get this up and running sooner rather than later
<mcrod> i'm sure heat will criticize it to death but what are friends for
<heat> i want to test it with onyx
Fingel has joined #osdev
<nikolar> that sounds fun
<nikolar> heat: do you have a new enough toolchain though :P
<mcrod> you could do that if you have cmake support
<nikolar> mcrod: is it a c project
<mcrod> yes
<nikolar> what on earth made you use cmake for it
<heat> nikolar just popped an audible boner
<nikolar> no
<mcrod> because i don't want to use autotools
<heat> is it C89 or do you use newfangled stuff
<mcrod> it's C17
<heat> OH YOU SHOULD USE AUTOTOOLS
<nikolar> kek
<mcrod> i like living in the year 2024, even if it isn't perfect
<gog> i don't
<mcrod> and yes I am very much aware CMake is fucking terrible
<gog> can i be 20 years younger please
<mcrod> yes
<mcrod> i can give you more girl juice
<nikolar> mcrod: you probably would've been fine with a makefile
<gog> yes
<gog> although i'm more fit now than i was at 17 soooo
<gog> idk
<mcrod> i'm not fit at all
<gog> i'll be your gym buddy
<mcrod> :D
<mcrod> my blood pressure is awful
<mcrod> my cholesterol is awful
<mcrod> my sleep is awful
Fingel has quit [Quit: Fingel]
Fingel has joined #osdev
<_ngn> bro thats not a flex
<mcrod> it's not meant to be
<mcrod> ,.
<zid`> significant if valid
spareproject has quit [Remote host closed the connection]
Arthuria has quit [Ping timeout: 276 seconds]
andydude has joined #osdev
Turn_Left has quit [Read error: Connection reset by peer]
_ngn has quit [Ping timeout: 260 seconds]