channel logs for 2004 - 2010 are archived at http://tunes.org/~nef/logs/old/ ·· can't be searched
#osdev2 = #osdev @ Libera from 23may2021 to present
#osdev @ OPN/FreeNode from 3apr2001 to 23may2021
all other channels are on OPN/FreeNode from 2004 to present
http://bespin.org/~qz/search/?view=1&c=osdev2&y=24&m=7&d=16
00:16:00 <heat> vin, correct
00:58:00 <heat> and even then it could be uncomitted pretty damn quickly, through swap or MADV_DONTNEED
02:15:00 <Matt|home> theoretical question - how difficult would it be to make a system either totally glitch/bug/issue-free outside of acts of god (e.g. a capacitor blows up), ooooorrrr have so much/enough support that any glitch would be almost instantly fixable at least within five or ten minutes
02:15:00 <Matt|home> we talkin feasible or no chance in hell jack
02:15:00 <gorgonical> that's just formal methods
02:15:00 <heat> very
02:16:00 <gorgonical> seL4 is a relevant instance of this
02:16:00 <heat> hardware failure is not an act of god
02:16:00 <Matt|home> i ask because i recently switched back to windows to get the hell out of the mess of technical issues i ran into just getting stuff to work out of the box
02:16:00 <Matt|home> and despite the massive improvement im still running into very weird seemingly unsolvable issues :p
02:16:00 <heat> oh, general purpose OS? impossible
02:17:00 <Matt|home> yeah i mean theoretically could you make some large scale user friendly system like linux or windows but with glitch free support
02:17:00 <heat> no
02:17:00 <Matt|home> fudge
02:17:00 <Matt|home> just too much software?
02:17:00 <gorgonical> yeah absolutely impossible
02:17:00 <heat> too many moving, complex parts
02:17:00 <gorgonical> proving correctness is basically inversely related to software complexity, but probably exponentially
02:18:00 <Matt|home> ah well. my fantasy OS will strive for achievements in excellence and perfection. it'll be the first 100% bug free system on earth
02:18:00 <Matt|home> and it'll be as popular as windows :D
02:18:00 <Matt|home> i won't.. really get anything out of it but i feel it's my civic duty to make it anyway
02:19:00 <Matt|home> actually i kind of have an idea about that. i feel like it's really really really simple?
02:20:00 <gorgonical> I mean additionally to do it with any kind of performance requires async, which fouls up the works hugely
02:20:00 <Matt|home> basically the idea is be as verbose as possible whenever you run into an error, and make sure you _fully_ document any kind of error or problem the computer can possibly run into and fully explain how each and every error is caught and what the various numbers etc mean
02:20:00 <gorgonical> adding race conditions, memory coherence, etc. really extremely complicates formal methods
02:20:00 <heat> SMP
02:20:00 <Matt|home> e.g. i see on the terminal "error: 404" and i just open the book, and it says "error 404: somebody shot the server with a 12 gauge, please approach with caution"
02:20:00 <Matt|home> something like that
02:20:00 <heat> windows already kind of has that
02:20:00 <Matt|home> yeah but it's obfuscated AF
02:21:00 <gorgonical> only to you
02:21:00 <gorgonical> ever ask a windows kernel dev?
02:21:00 <Matt|home> like i spent over a day tryna figure out
02:21:00 <Matt|home> lol
02:21:00 <heat> like, it's not like linux or windows software lack logs
02:21:00 <Matt|home> gorgonical - may i please beg your help? <3 if you're willing?
02:21:00 <Matt|home> or wait, are you a kernel dev?/
02:21:00 <heat> you just don't have the expertise to grok them
02:21:00 <Matt|home> ?
02:21:00 <gorgonical> I am not a windows kernel dev. I'm just saying it seems complex to you but that could be because you are unfamiliar
02:21:00 <Matt|home> aw
02:22:00 <Matt|home> maybe, but i spent quite a while trying to fix two complex issues yesterday and i couldn't for the life of me
02:22:00 <gorgonical> I am sure there are copious such manuals internal to microsoft you don't have access to
02:22:00 <Matt|home> figure out what was wrong
02:22:00 <Matt|home> right.. what im saying is my system will be made publicly available that kinda info
02:22:00 <Matt|home> it'll almost be open source :D
02:22:00 <gorgonical> and what heat said is also very true. It was probably 6 months of daily poring over the x86 SDM before anything really made sense when I was starting out
02:23:00 <Matt|home> that should be true for operating system development, but certainly not for basic everyday computer usage
02:23:00 <heat> in no way shape or form is debugging software problems basic everyday computer usage
02:23:00 <Matt|home> hm. apologies if im wrong
02:24:00 <Matt|home> but do you both feel relatively strongly about this/feel im ignorant about the subject?
02:24:00 <gorgonical> I don't like to speculate
02:24:00 <Matt|home> mkay. well i won't argue, i'll just respectfully disagree if that's the case <3 but i could very well be wrong
02:25:00 <heat> i'll give you an example: my relationship with linux desktop. i have approximately no interest in looking at logs and fixing weird bugs
02:26:00 <Matt|home> then let me ask this: in general what OS/computer set up are you most comfortable with, for work/home use? e.g. prefer mobile computing, mac for graphics, etc
02:26:00 <Matt|home> i'll never understand why, but my wife and sister are obsessed with mobile stuff. they genuinely think it's like the future of computers
02:27:00 <Matt|home> and i absolutely hate mobile screens :p
02:28:00 <Matt|home> but man.. ios is the absolute worst. i won't rant anymore, but seriously screw ios's UI :p
02:29:00 * geist yawns
02:29:00 <geist> hows everyone this evening?
02:29:00 * Matt|home snuggles geist <3
02:29:00 <heat> hi geist
02:29:00 <geist> howdy
02:30:00 <heat> i was asking around #riscv and apparently linux is wrong :(
02:30:00 <geist> yay, about what?
02:30:00 <heat> the non-leaf PTE changes thing
02:30:00 <geist> ah yeah
02:31:00 <heat> so The Proper Change would probably be to change spurious faults to shootdown the whole TLB
02:31:00 <heat> which is depressing tbqh
02:40:00 <geist> yeah though that's still only for the local cpu
02:41:00 <geist> oh wait, drop everything, dave on youtube is telling us about how he wrote the windows start menu
02:41:00 <geist> that's in addition to the task manager. damn!
02:41:00 <heat> indeed. fwiw there's an extension that allows you to skip invalidation on !Present -> Present, which probably helps a bunch
02:41:00 <heat> lol
02:44:00 <kof673> matt|home, one man's bug is another man's right to format my own drive :D
02:44:00 <gorgonical> hey heat what do you have to set as the user string to get the description plus your name?
02:44:00 <heat> hm?
02:44:00 <gorgonical> when you whois you, you see an x/y/z format, then afterwards your realname/gecos
02:45:00 <Matt|home> kof673 - good news, you won't have bugs with my system
02:45:00 <heat> you mean the @sortix/contributor/heat bit?
02:45:00 <gorgonical> yes
02:45:00 <heat> its a mask
02:45:00 <heat> or cloak or whatever
02:45:00 <heat> https://libera.chat/guides/cloaks
02:45:00 <bslsk05> libera.chat: Cloaks | Libera Chat
02:46:00 <gorgonical> oooh
02:46:00 <gorgonical> I see
02:51:00 <heat> my nightly CI fails every day at 3am and every day at 3am i get an email about it and i haven't fixed it yet
02:51:00 <heat> i lack agency in my life
02:54:00 <gorgonical> Sometimes I feel like a really good business would be to offer a service where people register impulsively when they have that surge of responsibility, but falter in the moment. The business solves this problem by arranging to punish you for doing something wrong. Like maybe they throw a bucket of paint on you when you're on a walk
02:54:00 <gorgonical> So then when doing the thing you're afraid to not do it because of what your past self arranged for you in the case of failure
02:55:00 <heat> YES
02:56:00 <heat> i need some good old threats to get things going
02:58:00 <kof673> you'll never write that line of code you #$@$$@#$@#$@ </happy gilmore red lobster guy>
03:03:00 <Matt|home> in my operating system it's gonna be really easy. you have an option to register, if you do you get full support, if you don't you're on your own, but i'll include the manuals and stuff
03:03:00 <Matt|home> i guess i could just require an email address and that'll be the end of it
11:34:00 <nikolar> KERNAL
11:35:00 <zid> nintendo ds kernal when, nikolapdp
11:35:00 <zid> You can implement unix on the arm9 and I'll write a shitty arm7 program to talk to it
11:40:00 <nikolar> How shitty are we talking about
11:41:00 <zid> at least three shitty
11:42:00 <nikolar> That's very shitty
11:43:00 <zid> if you like I could even write it in heat C++
11:43:00 <zid> int main(void){ int a = sizeof('a'); if(a != 1) printf("This is C++ dummy\n"); return 0; }
11:44:00 <nikolar> You're missing a lambda and a class there for heat c
11:45:00 <nikolar> But heat c++ works
11:45:00 <Matt|home> alo o\
11:46:00 <nikolar> Ello
11:46:00 <Mondenkind> zid: you mean == 1
11:46:00 <Mondenkind> 'a' is char in c++, int in c
11:47:00 <zid> nikolapdp: should have named 'a' class
11:47:00 <zid> but then it wouldn't compile with a C compiler but print the nasty message
11:48:00 <zid> I want it to berate you for compiling it as C, when it's obviously C++
11:48:00 <zid> (super mega obviously)
11:48:00 <nikolar> Lel
11:57:00 <guideX> when thinking about how my os runs a program, I'm a little confused on how to begin. right now all the programs run from the code of the os, https://pastebin.com/raw/6mRj1utJ heres the calculator program.. I run it like this, _apps[i].AppObject = new Calculator(); etc
11:57:00 <mjg> can you elaborate what is your overall goal here
11:57:00 <zid> load it into memory, jump to it with a privledge level reducing jump
11:57:00 <mjg> if you are trying to learn how to write a real operating system you are starting all wrong
11:58:00 <guideX> mjg, well I've written large portions of the os already https://gitlab.com/guideX/guidexos
11:58:00 <bslsk05> gitlab.com: guideX / guidexos · GitLab
11:58:00 <guideX> but the how programs run is like, a little different
11:58:00 <guideX> I haven't gotten that far yet, it just runs whatever programs are prewritten with the os, but I have no program from the outside concept yet
11:58:00 <zid> You don't have any programs
11:58:00 <zid> you have.. kernel modules
11:58:00 <zid> at best
11:59:00 <guideX> yeah
11:59:00 <zid> completely different concept, what I said is the concept for programs
12:18:00 <vin> The heap is really a stack isn't it (when used with sbrk)!? I can't return freed memory back to OS unless it is at the top of the heap. I could allocate a million 512B and free all the first 99K allocations and yet I can't now return this freed memory back because of the last 1K allocations
12:18:00 <vin> sbrk seems like a pretty bad way to allocate memory even for small objects
12:34:00 <guideX> zid, that helps my understanding when I go reading about the differences, but also this is like solaris docs https://docs.oracle.com/cd/E19253-01/817-5789/emjjr/index.html
12:34:00 <bslsk05> docs.oracle.com <no title>
12:35:00 <zid> They're using a very specific solaris meaning of kernel module there
12:35:00 <mjg> vin: sbrk is the legacy interface
12:35:00 <mjg> vin: you should mmap
12:35:00 <guideX> I guess it would be helpful <in pseudo code-talk> in simpler terms what my os is doing really really when loading a program from my file system, I'm a little unsure if I'm like, doing something myself with some script, or like something more magical
12:35:00 <mjg> which is what jemalloc is doing
12:36:00 <zid> seems like they're sort of microkernelly inerternally? a module looks to be an irq handler effectively
12:36:00 <zid> I could explain what.. a normal OS does?
12:36:00 <vin> mjg: libc malloc still uses sbrk for all allocations smaller than 128K!! https://www.gnu.org/software/libc/manual/html_node/Malloc-Tunable-Parameters.html#Malloc-Tunable-Parameters
12:36:00 <bslsk05> www.gnu.org: Malloc Tunable Parameters (The GNU C Library)
12:36:00 <guideX> zid, well, I am using .net, I suppose msil may be part of the picture
12:37:00 <guideX> but I'm not sure what that really really means
12:37:00 <mjg> vin: that's lame af
12:37:00 <guideX> as I understand it, I must go from (exe or dll) to msil or vice versa
12:37:00 <guideX> but what happens after that
12:37:00 <zid> that's all beyond the scope of an OS, if you want to run .NET userprograms you just need to have the programs load the .NET runtime and run under that
12:37:00 <zid> same as if you wanted to run python scripts
12:38:00 <guideX> zid, so .net (all of .net7 corelib) is inside my os
12:38:00 <guideX> without an external dependency
12:39:00 <guideX> so I can do everything .net7 can do inside my os, and that is the way everything works
12:39:00 <zid> that just means your OS can be written in .NET
12:39:00 <zid> if you want proper user programs, you need one per process, in userspace too
12:39:00 <zid> If you just want to add threads to your kernel, add threads to your kernel
12:40:00 <zid> Which is an option, given .NET is a managed language
12:40:00 <zid> in *theory* that makes it safe, and you don't need any of the process isolation and security features of your cpu
12:40:00 <zid> so you can ignore the kernel/user space distinction
12:40:00 <guideX> zid, ah so I have some options there
12:41:00 <zid> You always have options, but just remember what you're writing isn't an archetypal OS
12:41:00 <nikolar> *in theory*
12:41:00 <zid> It's.. a weird .NET environment for running scripts, running in kernel mode
12:43:00 <guideX> I was thinking of an approach like that, I would have like idk, zip files containing some c# script, which the os executes in a managed way
12:44:00 <guideX> it seems very simple way to do it, I already have a file system and stuff so idk if that'd be a good way
12:44:00 <zid> Basically I think you were conflating eval() with processes
12:49:00 <guideX> currently this is how I control "apps" inside my os https://gitlab.com/guideX/guidexos/-/blob/main/guideXOS/OS/App.cs?ref_type=heads
12:49:00 <bslsk05> gitlab.com: guideXOS/OS/App.cs · main · guideX / guidexos · GitLab
12:50:00 <guideX> I guess I just change this to look for apps externally, and then, put c# script somewhere inside the app executable, and something to describe the front end like xml, and I'm done
12:50:00 <guideX> I'm not sure if that's a good approach or not, I haven't developed an os like this before, I developed a simple cli os with math functions
12:52:00 <zid> I really think you need to stop saying OS
12:53:00 <guideX> is this not an os?
12:53:00 <zid> I'd say it's a self-hosted .net environment
12:54:00 <zid> You can claim it's an os, and there'll be all sorts of ways you'd be right, but it just isn't what people are going to think if you say 'OS'
12:54:00 <guideX> I guess at this moment, it's extremely limited for sure, but the goal is it to be an os
12:54:00 <guideX> like right now, it doesn't successfully fullfill much purpose, outside of a clock and calculator, with a gui
12:54:00 <guideX> but also, I only started working on it on like saturday at 4am
12:55:00 <guideX> also it has the potential to do more things to be useful I guess
12:59:00 <vin> mjg: I wish there was an option to force glibc malloc to only use mmap and not sbrk
12:59:00 <heat> why
12:59:00 <heat> brk is a perfectly cromulent system call
13:00:00 <mjg> munmap(heat, ...);
13:00:00 <vin> heat: I don't think so becuase it forces you to think of memory in one way (as a stack)
13:00:00 <heat> and?
13:01:00 <heat> it's still perfectly ok and probably faster than mmap
13:01:00 <heat> only issue might be heap reclaim, but on linux you can use MADV_DONTNEED and get the same effect
13:01:00 <vin> which is bad: imagine allocating 5M 1024B records and then you freed the first 4.9M records and kept the remaining 10K the freed area is not returned back to OS
13:02:00 <heat> MADV_DONTNEED
13:03:00 <vin> yea, well glibc malloc does not provide such a feature. Moreover, it now onus on you to keep track of the pages that you want to madvise on
13:03:00 <vin> even though you have indicating you don't need that much memory anymore with free()
13:03:00 <heat> mon
13:03:00 <heat> https://elixir.bootlin.com/glibc/latest/source/malloc/malloc.c#L5189
13:03:00 <bslsk05> elixir.bootlin.com: malloc.c - malloc/malloc.c - Glibc source code (glibc-2.39.9000) - Bootlin
13:03:00 <heat> mon2 https://elixir.bootlin.com/glibc/latest/source/malloc/arena.c#L525
13:03:00 <bslsk05> elixir.bootlin.com: arena.c - malloc/arena.c - Glibc source code (glibc-2.39.9000) - Bootlin
13:05:00 <vin> mtrim only trim the leading edge of the heap. That is if 128KB (default) is freed at the top of the heap then it will be released back to OS.
13:05:00 <vin> Doesn't handle the case I described above
13:06:00 <heat> maybe glibc malloc is complete wank, what do i know
13:06:00 <heat> i would 100% expect all such simple cases to be handled
13:07:00 <vin> me too! which is why it is a surprising result from my benchmarks
13:10:00 <vin> I mean there is no easy way to handle the case if one uses sbrk. You will be forced the move the allocations around (which you can't). So the only real answer is to use mmap
13:10:00 <heat> ... or madvise MADV_DONTNEED
13:11:00 <heat> whatever it is you want to do with mmap, you can do with brk
13:11:00 <heat> you can even *technically* munmap brk chunks, at your own risk
13:12:00 <nikolar> Define at your own risk
13:12:00 <nikolar> Does Linux specify what happens
13:13:00 <heat> AFAIK, nope
13:14:00 <vin> yes, I can imagine malloc doing this easily. If you find a contigous region allocated using sbrk then MADV_DONTNEED that part. Doing this will create address space fragmentation but that is not a real problem with 64/48 bits
13:15:00 <vin> surprisingly they don't need do it!
13:15:00 <nikolar> You can mmap it later if you really want
13:17:00 <vin> that's right! but make sure not calling brk on this mapped region when it time to shrink
13:21:00 <azonenberg> Is it possible to have multiple SECTIONS directives in a gnu ld script?
13:22:00 <azonenberg> looks like it is
13:22:00 <zid> I thought that was weird at first, but I guess that's just how chaining them already works
13:22:00 <zid> so maybe not
13:23:00 <heat> you're probably invoking nasal demons there, beware
13:28:00 <azonenberg> zid: so my standard stm32 linker scripts have one file that contains all the SECTIONS directives for putting .text and .rodata and such in flash, bss and such in ram, as well as all of the APB/AHB peripherals at the right addresses
13:28:00 <azonenberg> then i have a second file with MEMORY directives that includes the first one, which i can rearrange to have e.g. one file for a 32 kB bootloader at the start of flash and another for an application using all but the first 32 kB of flash, etc
13:29:00 <azonenberg> But now i have an FPGA connected to the stm32 via the external parallel memory interface
13:29:00 <azonenberg> and i want to be able to define SFRs in the linker script that live on APB within the FPGA, and have the MCU just see that as another APB bus segment
13:29:00 <azonenberg> without copy pasting the original linker script and duplicating stuff
13:29:00 <azonenberg> I think i know how to do it now
19:09:00 <heat_> >SUSE asks openSUSE to consider name change
19:09:00 <heat_> lmfao
19:25:00 <mjg> ? :D
19:29:00 <heat> i kinda want to rewrite my whole dcache
19:29:00 <heat> i shouldn't, but i want to. it's a refcounting and locking mess
19:29:00 <Ermine> heat asks heat_ to consider name change
19:29:00 <Ermine> but true, they should call themselves openSUSe
19:31:00 <heat> openSUS
19:32:00 <netbsduser> heat: i have been thinking of giving my namecache similar treatment, it isn't particularly complete yet anyway but now that i have RCU i can take liberties
19:32:00 <netbsduser> rcu has really changed everything for me
19:33:00 <netbsduser> i no longer like complex locking hierarchies with sophisticated strategies to permit inversions
19:33:00 <heat> the problem is that path walking still needs the refcounting + locking fallback :/
19:37:00 <mjg> the key to sensible namecache is not having entries tied to vnodes
19:37:00 <mjg> which is where most unixen are losing out
19:46:00 <netbsduser> mjg: when you say tied to vnodes, how do you mean? as in the namecache is per vnode and hanged off each vnode?
19:46:00 <mjg> i mean it entries go away if the vnode is recycled
19:47:00 <netbsduser> oh, i quite agree, i think the dragonfly/linux approach is much the superior
19:47:00 <mjg> right
19:47:00 <mjg> this also facilitates cheap nullfs
19:47:00 <heat> it's still a big mess with awful lock inversions
19:47:00 <mjg> aka --bind
19:47:00 <heat> and REFCOUNTS EVERYWHERE AHHHHH
19:47:00 <heat> and if you don't use refcounts, you use random sequence counters
19:47:00 <netbsduser> what sold me on it was the extremely cheap nullfs + the avoidance of the monstrous regiment of vnode locking that is found in the other BSDs
19:48:00 <mjg> layering filesystems just does not work
19:48:00 <netbsduser> the BSDs turned the lock vnode op into something which the VFS code consumes to lock vnodes around e.g. namespace manipulation, i don't like it
19:49:00 <mjg> it constantly runs into bullshit
19:49:00 <mjg> making nullfs work required tons of hackery
19:49:00 <mjg> and it resulted in regrettable behavior
19:49:00 <netbsduser> while dragonfly (and i assume linux) handle namespace locking at the namecache/dentry layer
19:49:00 <netbsduser> the traditional nullfs is an abomination
19:49:00 <netbsduser> looking at it just killed any remaining tendency in me to stick with the traditional unix approach to the VFS and namecache
19:50:00 <mjg> unix sucks
19:50:00 <mjg> is what it is
19:50:00 <heat> found dave cutler
19:51:00 <netbsduser> i love unix and its great tradition but i avoid a certain kind of cultism which you sometimes find around venerable technologies
19:51:00 <heat> is that why you ported systemd to the BSDs?
19:51:00 <netbsduser> the kind of cult where even limitations or compromises recognised as such by the creators are taken instead as great qualities
19:51:00 <netbsduser> i am thinking here of the amigaos community and their disdain for memory protection
19:52:00 <heat> the amigaos community would love the UEFI community
19:52:00 <heat> "memory protection is a debugging feature" and similar quoten
19:52:00 <mjg> :D
19:52:00 <mjg> dafuq
19:52:00 <netbsduser> systemd to the bsds was 1) out of curiosity to see whether i could do it, 2) so that i could have a basis to hack-and-slash systemd until it resembled something i like, and 3) for trolling, as a shitpost
19:53:00 <netbsduser> i think if someone wants to stoop to trolling and shitposting they should invest effort in doing it properly
19:53:00 <heat> in my next trick i'm porting systemd to artix
19:54:00 <netbsduser> i cannot overstate how funny it was for me to watch the comments roll in as i contracted friends to post systemd on openbsd to the tech forums
19:54:00 <netbsduser> it was less funny to get a threatening email comparing me to, and i quote, "jezebel, that false prophet who undone god's nation in a day"
19:55:00 <heat> hahahaha nah that sounds way funnier
19:55:00 <heat> did theo send that? :v
19:55:00 <mjg> well
19:55:00 <mjg> here is a story for you
19:55:00 <mjg> a freebsd friend of mine was attending a bsd conference
19:55:00 <mjg> was in a bus
19:55:00 <heat> grave mistake, run
19:56:00 <mjg> some guy in an openbsd t-shirt spotted him and said he would say hi, but he does not do that with freebsd people
19:56:00 <mjg> :d
19:56:00 <netbsduser> i think what bothered me by far the most was i created a reddit account to discuss things with the redditors and someone used this feature to report a poster as suicidal. it really bothered me that someone would do that
19:56:00 <mjg> > reddit
19:56:00 <netbsduser> lmao
19:56:00 <mjg> > discuss
19:56:00 <mjg> are you sure you are not the troll here mate
19:56:00 <netbsduser> that might have been the openbsd user's only chance to met another bsd person
19:57:00 <netbsduser> mjg: i was the trolled without a doubt
19:57:00 <netbsduser> i got drawn in to trying to clear up some bizarre claims that were being made about the historical relationship between BSD, the GNU project, and linux
19:57:00 <mjg> the openbsders show up to hackathons tho
19:58:00 <mjg> i got a guy claiming freebsd stole spinlock code from linux
19:58:00 <mjg> which was so absurdly false i don't even know where to begin
19:58:00 <heat> YOU WISH
19:58:00 <mjg> but the nagain, this was the person's only "point" against bsd
19:59:00 <mjg> hey did you know linux was trailing behind openbsd for like 10+ years on something
19:59:00 <mjg> and they STOLE it from there?
19:59:00 <netbsduser> i have soured on discussing operating systems outside of OS communities, and then only the technical parts of OS communities
19:59:00 <mjg> in the late 90s someone posted a paper with a bunch of fixen, including 2 level bitmaps for fd handling (as opposed to array walks)
19:59:00 <mjg> few years later openbsd implemented it
20:00:00 <netbsduser> it's just a bunch of empty claims and pop facts
20:00:00 <mjg> linux had one-levle bitmap until 2015 or so
20:00:00 <mjg> they have two
20:00:00 <mjg> so raising to the standard set by the aforemenntioned guy
20:00:00 <mjg> i claim linux stole shit from openbsd
20:00:00 <mjg> and late teoo
20:00:00 <mjg> 1/10 shite os
20:00:00 <mjg> just use the original!
20:38:00 <Ermine> Somewhy cpu temperature doesn't want to go under 30 C no matter what I do
20:39:00 <nortti> why do you want it to go under 30°C?
20:40:00 <Ermine> so fans could shut up
20:40:00 <heat> adjust the fan curve?
20:41:00 <heat> 30C isn't too far off summer time room temperature
20:41:00 <Ermine> it's night here now, so temperature is around 20
20:43:00 <Ermine> wouldn't cpu go even hotter if I adjust the curve?
20:45:00 <heat> i mean if you're giving it an impossible target it's futile to leave the fans on
20:58:00 <sortie> 30 C? I forgot how to count that low
20:59:00 <sortie> Ermine: It's absolutely safe for the CPU to operate at much higher temperatures so you can turn off the fan and let it find a higher stable equabilllium
21:00:00 <acidx> you can also try liquid nitrogen
21:00:00 <nikolar> Lel
21:00:00 <Ermine> kek
21:08:00 <Ermine> sortie, heat: thank you for advice
21:31:00 <heat> thou ist welcome
22:07:00 <sortie> Here's something most of you are not thinking about: Networked upgrades from version X of your operating system to the brand new version Y.
22:08:00 <sortie> I've had a prototype of this for many years now that has been incrementally improving and I'm working on finishing it up these days :)
22:09:00 <nikolar> Networked upgrades?
22:09:00 <sortie> You know, apt-get upgrade, but on your OS
22:09:00 <sortie> The reason why this is extra difficult has everything to do with forwards and backward compatibility. Version X has to be able to understand the remote data for version Y and be able to install it.
22:11:00 <sortie> That means that version Y is now constrained and locked in. It cannot change in any way that version X doesn't understand. If you want new packaging system features, you need to roll out the support and wait for version X to have it before you can use it in version Y.
22:11:00 <sortie> E.g. let's say you're like me and you cooked up some custom binary package format and you decide you don't like it, well, you can't change.
22:12:00 <sortie> Or other pieces of meta data like renaming packages, deleting packages, splitting packages, runtime dependencies of packages, if any of that data isn't understood by version X, the upgrade doesn't work.
22:13:00 <sortie> Plus in a custom OS, you might even incompatibly change the ABI, the bootloader, or the boot protocol, or any essential thing.
22:14:00 <sortie> Right? So that's the real reason why I have not merged this networked upgrade prototype officially yet. Because one I do, then I get a version X (the initial official commit with it) that must be able to upgrade to version Y (the upcoming 1.1 release, any decade now)
22:14:00 <heat> i'll call you when i get rpm and dnf working
22:15:00 <sortie> And in Sortix 1.2, I may want to make major changes to the binary package format, the kernel, the bootloader, the ABI, all sorts of things. And Sortix 1.1 has to be forward compatible with those changes.
22:16:00 <sortie> The essential part of this work has been to reduce and simplify, again and again, the complex relationship between version X and Y. Try to keep the inter-release relation as simple, well defined, and powerful as possible.
22:17:00 <sortie> For instance, since version X doesn't have the package utilities for version Y, I can't use those to extract the binary packages I installed. But a simpler way is to just change my binary package format so I can extract them with tar(1) directly. Now the upgrade tool just invokes tar instead of my custom programs. Much simpler, forward compatible.
22:18:00 <Ermine> heat: zypper is a bit faster than dnf
22:18:00 <heat> still uses rpm right?
22:18:00 <nikolar> heat pacman is even faster
22:18:00 <heat> pacman is not data safe
22:18:00 <sortie> Likewise if I wanted to change the bootloader or the bootloader protocol or the GRUB configuration, I defined a method where version X can run a script inside the downloaded version Y image and ask for the appropriate GRUB bootloader configuration, and then the upgrader puts that inside /boot/grub/grub.conf, so the next boot uses the new grub config to boot the new kernel
22:19:00 <Ermine> heat: yes, both are rpm frontends I guess
22:19:00 <nikolar> heat your os isn't data safe
22:20:00 <heat> my os is as data safe as the underlying filesystem
22:20:00 <sortie> If I wanted to change the ABI, it is already versioned with major/minor versionsa, and the operating system upgrader understands this, and never runs the wrong new ABI on an old kernel, but instead schedules the operatng system upgrade on the next reboot
22:21:00 <Ermine> A/B upgrades ftw
22:21:00 <sortie> Essentially over the past year, I've been doing lots of refactorings relating to this, the relationship between Version X and Y, so it can be simple, well defined, and powerful; letting me change things I need to, by planning ahead.
22:22:00 <sortie> The good news is that I'm nearing the finish line on this work. I'm starting to like what I've built and hopefully in the near future I'll be able to merge networked upgrades. Then you can run "tix-upgrade" or some such to automatically upgrade to the next release, whether a stable one, or a nightly
22:23:00 <heat> pretty cool but uh
22:23:00 <heat> rpm go brrrrrrrr
22:23:00 <heat> (not apt, we have values over at onyx incorporated)
22:23:00 <sortie> Even if you use rpm, how do you handle ABI changes? Or other big fundamental differences? Maybe you don't?
22:24:00 <heat> ABI changes? kernel ABI is stable, user packages better use that soname
22:25:00 <Ermine> does rmp use linux-specific facilities?
22:25:00 <heat> no
22:25:00 <sortie> Personally this is the part of osdev where it gets really fun and interesting. Planning ahead for the future, right now, so I can provide a fully supported experience for my users.
22:26:00 <heat> ermine i'm fighting with linux audio again
22:26:00 <heat> fuck this fucking shit
22:26:00 <Ermine> ugh
22:26:00 <sortie> You know how I'm thinking? 80 years from now, I want people to be able to boot Sortix 1.1, and then upgrade it all the way to Sortix 80.0
22:26:00 <sortie> Easily, too, I hope.
22:26:00 <Ermine> my condolences
22:27:00 <sortie> tix-upgrade --you-have-been-asleep-for-99999 # and it just figures it out and keeps looping and rebooting till the future is now
22:27:00 <sortie> Because HTTPS will be long dead by then
22:28:00 <sortie> No chance in hell that TLS continues to be compatible
22:28:00 <Ermine> sortie: actually it would be magnificent work if you manage to carry it out without breaking any of the user workflows
22:29:00 <sortie> In the distant future, people will have to fall back to HTTP because it will continue to work forever (I'll keep running it on my host for that reason, to be compatible with Sortix 1.1 in the distant future) and then rely on the secondary layer of release signing (which hopefully ages better)
22:30:00 <Ermine> FTP FTP FTP FTP FTP
22:31:00 <sortie> FTP will also live forever for that reason
22:31:00 <sortie> FTP kinda sucks tho
22:32:00 <sortie> You will also have to put Sortix 1.1 behind some IPv4<->IPv6 tunnel in the distant future
22:32:00 <Ermine> that's unlikely
22:33:00 <sortie> IPv4 will die out some day
22:33:00 <nikolar> Very questionable
22:33:00 <sortie> It's a numbers game. At one point, we'll have more than 4 billion hosts that people want to access.
22:34:00 <sortie> I grant you that it's going to a while.
22:34:00 <kof673> it will be up to ISPs...people can start their own "Internets" now but choose not to
22:36:00 <sortie> TLS has several interesting deaths, from the expiration of the root certificates, to the underlying cryptography being fundamentally broken
22:37:00 <Ermine> I'll die earlier even in the best case scenario
22:38:00 <sortie> I want people thousands of years from now to enjoy Sortix :)