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=23&m=3&d=13
00:20:00 <moon-child> mrvn: so like umonitor/umwait?
00:20:00 <moon-child> wake one is not really feasible
00:21:00 <moon-child> as the rfo goes out indiscriminately. It's infeasible to find out if you were the 'first' to get it
02:23:00 <qxz2> are sparc processors used anymore?
02:24:00 <bnchs> are m68k processors used anymore?
02:24:00 <qxz2> i don't know
02:25:00 <Mutabah> Likely somewhere, but not in general user/datacenter usage as far as I know
02:25:00 <qxz2> legacy solaris systems, i suppose
02:25:00 <Mutabah> I think m68k might be semi-common in older embedded contexts?
02:26:00 <qxz2> the older lower-end ciscos used m68k, iirc.
02:27:00 <qxz2> so did some telecommunications hardware, like circuit switches, e.g. dms-100
02:28:00 <qxz2> manufactured by the now defunct northern telecom
02:28:00 <qxz2> i think they're still in use. i guess someone acquired the IP.
02:30:00 <qxz2> they ran an operating system called SOS
02:30:00 <heat> weird trivia question: what happens to open(name, O_CREAT) when name refers to a broken symlink
02:31:00 <qxz2> the file that the symlink points to is created?
02:31:00 <heat> yep
02:31:00 <heat> this does not happen with mkdir
02:32:00 <heat> intensely stupid UNIX path walking semantics
02:33:00 <Mutabah> There's definitely hardware still being made/shipped with those architectures...
02:33:00 <Mutabah> but, do you as a general os/kernel developer need to care? Not really.
02:34:00 <qxz2> do you think x86_64 has a promising future?
02:34:00 <heat> yes
02:34:00 <Mutabah> It has massive inertia, it'll keep going
02:34:00 <heat> anyone that thinks any alternative is any close to taking over is really on the apple koolaid
02:35:00 <qxz2> kind of upset that apple switched to arm, probably because i'm biased in favor of x86_64
02:35:00 <qxz2> like x86 assembly
02:36:00 <qxz2> and hence am a fan of x86_64, its successor
02:36:00 <Mutabah> As much as I have a soft spot for intel assembly, it's nice seeing ARM have some use in the desktop space.
02:37:00 <qxz2> why is it nice?
02:37:00 <qxz2> (i don't know much about it)
02:39:00 <heat> because why not
02:40:00 <qxz2> change is good? hah i thought there might be more technical reasons
02:41:00 <heat> well, arm64 is less disgusting legacy-wise
02:41:00 <klange> Architectural competition is good for the same reason there being multiple x86 vendors is good, for the same reason having multiple compiler implementations in regular use is good.
02:42:00 <heat> ^^
02:43:00 <qxz2> so it's a competitive market, as opposed to a stagnant one.
02:44:00 <Mutabah> Yep. Monocultures lead to stagnation.
02:44:00 <qxz2> anybody do embedded systems development professionally?
02:44:00 <Mutabah> And the longer there's a lack of variety, the harder it is for a new player to enter (as they have more inertia to overcome)
02:45:00 <Mutabah> qxz2: I did for a while, albeit in an ancillary role (I'm primarily a higher-level software engineer, but I did some firmware work for a while)
02:48:00 <qxz2> higher-level as in what?
02:49:00 <qxz2> language used?
02:49:00 <Mutabah> Professiionally I use C++, I tend to work on "business logic" (which is image analysis and 3D maths for us)
02:49:00 <qxz2> very cool
02:50:00 <qxz2> what kind of math? linear alg and multivar calc?
02:52:00 <Mutabah> Getting offtopic: But I work for a company that makes equipment to measure rail infrastrucutre. The software takes sensor inputs (mostly images) and transforms them into measurements of components.
02:53:00 <qxz2> nice!
02:54:00 <klange> I, for one, am quite happy with Apple's architectural decisions. Makes things more fun. https://klange.dev/s/Screenshot%202023-03-13%20at%2011.52.19.png
02:56:00 <Mutabah> :)
02:56:00 <qxz2> what is ToaruOS?
02:56:00 <Mutabah> There is a selfish side - Apple are making desktop ARM a thing
02:56:00 <Mutabah> thus making it easier for hobbists to develop for
02:58:00 <qxz2> nevermind! i found a description
03:02:00 <klange> Hopefully one I wrote and not some rando's take on it.
03:02:00 <qxz2> yes, one you wrote
03:02:00 <heat> just a sec let me write a bad review for toaru
03:02:00 <klange> "needs more anime waifus" is not a valid criticism
03:02:00 <qxz2> you've done some pretty cool work
03:04:00 <sakasama> klange: Are you claiming you supply sufficient anime waifus?
03:05:00 <kazinsal> package manager has insufficient waifu packages in the main distribution, OS unusable
03:05:00 <klange> Yes, I find zero is sufficient for an OS.
03:06:00 <heat> this is exactly why you need a web browser
03:06:00 <heat> infinte waifus
03:06:00 <klange> Even for one named after an anime franchise. Perhaps especially, as obviously the only appropriate waifus would be ones from that series, and that runs afoul of many things.
03:07:00 <klange> heat: working on it, slowly, eventually
03:07:00 <moon-child> huh? Aren't you the anime waifu of toaruos?
03:07:00 <klange> Unfortunately, my background was in compositors, not web browsers.
03:08:00 <sakasama> You may be in a position to provide a bundled AI-powered waifu generator.
03:08:00 <heat> pull a serenityOS and do a web browser full time
03:08:00 <klange> That's what I'm referring to when I say my background is not in web browsers.
03:08:00 <klange> Kling's background was in web browsers. The whole of Serenity was a backdoor project to kick off a web browser.
03:09:00 <heat> ah, i had no idea
03:09:00 <heat> makes sense
03:09:00 <heat> they really should scrap the OS and just do it on linux or something
03:11:00 <klange> I do intend to write a browser, I have written prototypes in the past. I even have a character name reserved for it already.
03:11:00 <kazinsal> considering serenityOS was designed to be user hostile for non-grognards I would hate to see how unusable a serenity browser is for anyone who doesn't have a degree in applied unix greybearding
03:12:00 <heat> htmld | cssd | jsd > /dev/fb0
03:27:00 <klange> Originally my plan was to write a browser engine in Python, knowing full well it would be slow as shit, but it would be fun. This was several years ago. The prototype exists in the form of the old Toaru 1.2.x "Help Browser" program that can be made to load from URLs.
03:28:00 <klange> At one point I thought maybe continuing that but with Kuroko would be a good idea.
03:29:00 <klange> I'm in a tough spot as obviously my main goal here is to have a browser for my OS, but that has implied requirements around language and use of third-party stuff, and I'm not going to attract any contributors with "let's write a borwser engine in C with no external deps!"
03:29:00 <heat> i mean
03:29:00 <klange> Much less for "let's write a browser engine in a language you've never heard of that is just as slow as CPython but with none of the standard library!"
03:29:00 <heat> they did that with C++
03:30:00 <klange> "Modern C++" is a bit of an easier sell.
03:30:00 <moon-child> you could make kuroko faster; lots of literature on the topic
03:31:00 <moon-child> more importantly, if the browser itself and the js can share an object model and runtime, a lot of nice stuff pops out
03:31:00 <moon-child> implementation wise
03:31:00 <klange> The main way to make Kuroko faster would be writing a JIT, which I kind of don't want to do - I like that Kuroko is plain stupid C that can run on anything without me doing more work on it.
03:32:00 <klange> And all of the work towards writing a codegen for an in-house JIT would be equally applicable to writing a compiler backend for something targeting native machine code.
03:33:00 <moon-child> weren't you planning to do the latter anyway?
03:33:00 <klange> There's a gradient here, and "native-compiled language" is farther towards the "vague idea" side than "browser". "Browser" is much more in the realm of real planning.
03:36:00 <klange> Really, if I could get off my ass and write a box layout engine I would be farther ahead than I was with the previous Python prototype, and I am in dire need of one of those anyway for general text layout.
03:39:00 <moon-child> hmmm how does the box layout thingy actually work? I did a hacky thing in my old ui lib, but not sure if there's a 'proper' solution
03:40:00 <klange> I wish Matt had gone further with this: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html
03:40:00 <bslsk05> limpet.net: Let's build a browser engine! Part 1: Getting started
03:41:00 <klange> https://github.com/litehtml/litehtml is also inspiring in its size:capability ratio
03:41:00 <bslsk05> litehtml/litehtml - Fast and lightweight HTML/CSS rendering engine (198 forks/1507 stargazers/BSD-3-Clause)
06:28:00 <geist> heat: just discovered this
06:29:00 <geist> with all of your memcpy optimizations, have you considered what it does to the audio? think about the damage
06:29:00 <geist> https://www.audioasylum.com/messages/pcaudio/119979/
06:29:00 <bslsk05> www.audioasylum.com: RE: A revolution in audio rendering - SBGK - Computer Audio Asylum
06:31:00 <heat> lol
06:32:00 <heat> BYTE *sound_buffer = new BYTE [sizeof(BYTE) * nBytesInFile]; <- lol2
06:32:00 <geist> make sure your memcpy doesn't introduce any hard edges to the audio
06:35:00 <heat> use avx512 stringops and watch memcpy hard edge all over your audio
06:55:00 <sham1> > sizeof(BYTE)
06:55:00 <sham1> It's just 1
06:57:00 <heat> and new[] operates with element counts, not bytes
06:57:00 <heat> so new BYTE[nBytes] is the correct form
06:58:00 <sakasama> "I have found the best sound is an infinite goto loop with it throwing an exception after it reads beyond the end of the buffer, I set exceptions off so it doesn't crash the program."
06:58:00 <sakasama> WTF am I even reading?
06:59:00 <sham1> heat: Must have been copied from a malloc
07:14:00 <kof123> https://www.audioasylum.com/forums/pcaudio/messages/12/121118.html there is a list of claims there
07:14:00 <bslsk05> www.audioasylum.com: RE: Linux Build? - SBGK - Computer Audio Asylum
07:24:00 <mrvn> geist: do you also buy $400 digital audio cable because they sound better?
07:24:00 <sakasama> I am slightly curious about what msvc does for codegen when given an otherwise infinite loop throwing exceptions but exceptions are disabled.
07:25:00 <mrvn> Normaly I would say fails to build but we are talking msvc here. They also catch, ignore and somehow continue on nullpointer exceptions in java unless it's a debug build.
07:26:00 <heat> terminate
07:26:00 <heat> it's the only compliant behavior
07:26:00 <heat> std::terminate()
07:26:00 <mrvn> "I'll be back"
07:26:00 <sakasama> Well, clearly in this case its producing superior audio.
07:27:00 <mrvn> std::terminate() produces a sharp clack in the audio.
07:27:00 <mrvn> (hence the need to disable exceptions)
07:28:00 <sakasama> (Hence the question about what that even does.)
07:29:00 <heat> i assume he's either never triggering the exception or he's catching it
07:32:00 <sakasama> "I set exceptions off so it doesn't crash the program" implies that neither is the case.
07:33:00 <sakasama> ... unless maybe he botched something in the catch statement and that's what was crashing it.
07:34:00 * sakasama doesn't have enough narcotics to contemplate this further.
07:41:00 <mrvn> heat: he's just totally trolling
07:53:00 <sakasama> mrvn: Never attribute to malice that which is adequately explained by stupidity.
09:58:00 <mrvn> sakasama: it sounds better when you use "new" instead of "malloc"? You think that's serious?
10:15:00 <sakasama> mrvn: It's too many posts of mostly nonsense for me to take it seriously; either way, it's a special brand of stupidity.
10:26:00 <FireFly> it's probably honest but by someone who doesn't really know anything by programming and with some lack of critical thinking (but yeah, same reasoning that leads to $400 gold-plated HDMI cables or whatever
10:29:00 <gog> they make sure all the bits get to the monitor
10:29:00 <GeDaMo> Not just ordinary bits, gold-plated bits :P
10:32:00 <kof123> i remember decades ago on winamp forums, someone saying they swore some plugin version sounded better, and to revert. the author IIRC said he was a professional, and programmed soundforge IIRC. and was telling them "its the same damn bits! something changed in your setup!"
10:39:00 <FireFly> every bit is sacred
10:40:00 <zid> gog: I use special cables that randomize the phase of my bits
10:40:00 <zid> I wouldn't want them to all be polarized in the same way, and wear a groove into my cable
10:40:00 <moon-child> lmao
10:44:00 <gog> yes
10:44:00 <gog> increase the longevity of your $400 investment
11:36:00 <netbsduser> writing a web browser strikes me as a promethean punishment
11:37:00 <netbsduser> drag your rock all the way up the hill to standards conformance then it rolls back down again as yet another new thing is added
11:38:00 <gog> just fork chrome
11:38:00 <gog> don't even try
11:38:00 <GeDaMo> https://drewdevault.com/2020/03/18/Reckless-limitless-scope.html
11:38:00 <bslsk05> drewdevault.com: The reckless, infinite scope of web browsers
11:39:00 <gog> unless you're some kind of serious masochist who really, really enjoys that kind of punishment
11:39:00 <netbsduser> i think it would actually be a fun exercise to do a minimal browser with no pretences of supporting the full web
11:39:00 <gog> or
11:39:00 <gog> only the latest standard
11:39:00 <gog> or the most useful subset
11:39:00 <netbsduser> it's definitely a project from which i would learn a lot about a problem domain i've never tackled
11:39:00 <gog> i just think web dev is a disaster in general
11:39:00 <gog> from both sides
11:39:00 <zid> you can't write a web browser
11:40:00 <zid> Like, it's not possible
11:40:00 <netbsduser> gog: i think it's a tragedy in the greek sense of it
11:40:00 <zid> https://drewdevault.com/2020/03/18/Reckless-limitless-scope.html
11:41:00 <zid> "The number of W3C specifications grows at an average rate of 200 new specs per year, or about 4 million words, or about one POSIX every 4 to 6 months."
11:41:00 <Ermine> Drew's obligatory post
11:41:00 <netbsduser> the web was a fantastic invention and i fundamentally like the concept of it, it's a lot like sun's news
11:41:00 <Ermine> gog: may I pet you
11:41:00 <zid> web browsers develop at the exact speed that chrome can write whitepapers about shit they already wrote
11:41:00 <netbsduser> but the web as it is today is basically impossible for a single person to implement (even msft gave up)
11:42:00 <zid> so you need a bigger team than chrome's, good luck
11:42:00 <GeDaMo> Web standards have been distorted to benefit commercial interests
11:42:00 <zid> GeDaMo: web standards are literally just "write down what chrome did"
11:42:00 <gog> Ermine: yes
11:42:00 <zid> oh, squardle time
11:42:00 * Ermine pets gog
11:42:00 <netbsduser> it doesn't have to be so. you could have something which is a lot like the web (i.e. not some regression to gopher like some advocate) but without requiring 25 manyears to read all the specs (let alone implement them)
11:43:00 <GeDaMo> The special appears to be the British spelling one
11:43:00 <GeDaMo> At least, that's the one I'm doing :P
11:43:00 <zid> bad vowels
11:43:00 <zid> is yours bad vowels
11:47:00 <zid> 23 words
11:48:00 <GeDaMo> Yeah, that's today's one
11:49:00 <zid> done done
11:53:00 <kof123> quoth the link "But WebVR is cool, right? Right?"
11:53:00 * kof123 points at VRML corpse
11:53:00 <zid> I think express took me about as long
11:55:00 <GeDaMo> VRML was cool ... for a brief period in the 90s :P
11:55:00 <GeDaMo> I was at uni at the time and they has some SGI machines
11:56:00 <kof123> i dont know the details on either...just makes one wonder how much is nih
11:56:00 <corecode> heh is it possible that this embedded sdk/examples never use their initial stack after starting the RTOS? i think so... 3000 bytes (out of 8192) just unusable
12:03:00 <corecode> ah no i have 32KB RAM, still
12:52:00 <lovenot> Hello
12:54:00 <GeDaMo> Hi lovenot :)
12:55:00 <lovenot> Hi
12:56:00 <lovenot> Is the bot invasion over yet?
12:57:00 <GeDaMo> I didn't notice one :|
12:58:00 <lovenot> Oh, alright.
12:58:00 <lovenot> I remember there was one and someone left the quote "No matter how good you build your systems, someone will build an even stronger idiot." or something.
12:59:00 <GeDaMo> "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
13:00:00 <lovenot> Yeah, I think that quote.
13:12:00 <mjg> that's giving may too much redit to programmers
13:13:00 <gog> i'm mostly trying to me-proof my programs
13:13:00 <gog> and i'm something more than an idiot
13:13:00 <gog> i'm a fuckup on a cosmic scale
13:25:00 <zid> The problem is just that it isn't zero-sum
13:26:00 <zid> You get LTO or fancy error messages, pick
13:26:00 <Ermine> gog: compared to me you're genius
13:28:00 * Ermine wonders which tex distribution sets pdf title to dvi absolute file name meanwhile
14:14:00 <corecode> who would not use pdftex directly
14:20:00 <zid> is this a quiz, sane people?
14:20:00 <zid> did I get it right?
14:20:00 <lovenot> [ yes ]
15:03:00 <mrvn> Does uboot have a feature that can check a GPIO pin on a SoC and then use one of two kernels depening on if the pin is high or low?
15:12:00 <marshmallow> could we expect the linux kernel to enable DVFS / adjust the cpu frequency when the battery saver mode is turned on on an android device?
15:20:00 <mrvn> isn't that what android does?
16:14:00 <mrvn> to answer myself: https://community.toradex.com/t/how-to-get-gpio-value-from-u-boot-for-futher-processing/9020
16:14:00 <bslsk05> community.toradex.com: How to get GPIO value from u-boot for futher processing - Technical Support - Toradex Community
16:22:00 <heat> gog, ur not a fuck up
16:23:00 <heat> you can do it
16:23:00 <gog> i can't
16:23:00 <zid> what can't we do?
16:23:00 <gog> i'm gonna let the void reclaim me
16:23:00 <zid> become a crab
16:23:00 <gog> yes
16:23:00 <gog> become crab, have crab rave
16:23:00 <zid> it's what nature wants
16:23:00 <zid> CARCINIZE
16:23:00 <gog> nature is cruel but just
16:24:00 <zid> https://qph.cf2.quoracdn.net/main-qimg-cef1bcd6a8d2468ac1107c9e99e88b69-lq
16:24:00 <zid> https://www.explainxkcd.com/wiki/images/9/9e/carcinization.png
16:24:00 <heat> gog, why cant
16:25:00 <gog> heat: i mean i can i just would rather be doing sometihng else rn
16:25:00 <gog> rather than once again working with this fucking API backend
16:26:00 <gog> which is totally not congruent with our product model so i keep having to do weird things to make it work right
16:26:00 <sakasama> zid: Why is she disappointed? It's evolution!
16:26:00 <gog> and now it's my top priority to finalize it
16:50:00 <gog> my boss got a new computr and he's having a Good Time setting it up
16:50:00 <gog> (he's not having a good time at all and it's kinda funny)
16:53:00 <heat> joder esto hijo de puta ordenador eres una mierda
16:53:00 <heat> gog viene ayudarme
16:58:00 <gog> yes that's basically how it's going
16:58:00 <gog> except he didn't ask for my help
16:58:00 <zid> like, he's failing the lego step?
17:01:00 <stopPING> yeahhh
17:01:00 <gog> no, like he's having an issue installing some stuff
17:01:00 <zid> ah okay
17:01:00 <zid> My lego step was really boring this time around
17:01:00 <stopPING> "(
17:01:00 <gog> :(
17:01:00 <stopPING> .(
17:01:00 <zid> I opened the manual to see whether it wanted A1+A2 or A1+B1 for dual channel
17:01:00 <zid> click click click, done
17:01:00 <stopPING> fdom
17:01:00 <stopPING> don don
17:02:00 <stopPING> dom do do do don
17:02:00 <stopPING> fck ebable russian music
17:02:00 <gog> wha
17:02:00 <stopPING> is playing in my occupated by nazi's head s
17:02:00 <zid> Didn't even get to do the really annoying mounting procedure for my 212 because of the stupid AM4 clip mount being too easy :P
17:02:00 <stopPING> wall hack a yeah man you're RIGHT.
17:03:00 * stopPING eruns away
17:03:00 * stopPING runs e back
17:03:00 <gog> it's time to go home
17:03:00 <stopPING> WARNING WARNING ROCKIT Atag :: WARNBI:N WADFGSHThfdgfgh fck is this it this bnutton
17:04:00 <stopPING> ok ok destroy in g
17:04:00 * stopPING ejects
17:04:00 <stopPING> Quit: Konver
17:05:00 * stopPING UKRAINIAN! UKRAINIIAN! SCIENTOOGY TO MON!~!!! SCIENTOLOGYW WIRE!!!!
17:05:00 * stopPING ejects twice (first time forgot about ESC press twice algo)
17:05:00 * stopPING <empty>
17:05:00 <heat> geist sortie Mutabah klange
17:05:00 <stopPING> ihure amigo L=-C masstard e
17:06:00 <stopPING> fitblade
17:06:00 * stopPING <emptiest>(100%)
17:06:00 * stopPING is not runnin g (110%)
17:06:00 <stopPING> ah this is osdev
17:07:00 <stopPING> sry guys i really miss the fucking theme in adirc
17:07:00 <stopPING> we have another channles
17:07:00 <stopPING> i have red title with white font:P
18:06:00 <corecode> what is going on
18:08:00 <gog> many things
18:09:00 <zid> gog is here, for one
18:09:00 <zid> we're undecided if this is good or bad yet. gog did you bring bread?
18:09:00 <gog> já ég er með brauð
18:10:00 <nortti> huh, do you say "I am with …" for "I have …" in icelandic(?)?
18:11:00 * geist yawns
18:11:00 <gog> yes
18:11:00 <gog> well
18:11:00 <gog> it depends on context that i don't fully understand
18:11:00 <nortti> reminds me of how it works in finnish
18:11:00 <nortti> minulla on leipää, lit. 'on-me is [some-]bread'
18:12:00 <gog> when you're telling a receptionist like "i have an appointment with..." you say "ég á tima hjá"
18:13:00 <gog> or "i have gone" would be "ég hefa farið"
18:13:00 <johngammerson> hey guys
18:13:00 <nortti> right, though that is a bit of a different kind of 'have'
18:13:00 <gog> yes
18:14:00 <gog> it's not like the english adverb
18:14:00 <zid> AUXILLARY VERBS
18:14:00 <gog> yes
18:14:00 <zid> For when one verb isn't enough and you need to verb your verb to add aspect and tense
18:14:00 <gog> english is a disaster like that
18:14:00 <nortti> (in finnish you use olla 'to be' for that. finnish tense marking on verbs is quite germanic-influenced)
18:15:00 <zid> finish has 37483 inflections
18:15:00 <zid> disregard finnish
18:15:00 <zid> I only accept plurality
18:15:00 <johngammerson> https://paste.sh/Jgcxi-b3#9g1yfe6aMj4pq3Bbu5TCPp9C is something wrong with this header
18:15:00 <johngammerson> (multiboot)
18:16:00 <zid> Presumably you're asking this because grub won't boot it?
18:16:00 <johngammerson> qemu -kernel won't boot it, yes
18:16:00 <zid> is it within the first 64kb or 16kb or whatever of the final image?
18:16:00 <nortti> < zid> I only accept plurality ← rip english then with its oblique case marking on pronouns huh
18:16:00 <gog> yes there is something wrong with it
18:17:00 * zid finds his own github, having lost all his browser history
18:17:00 <zid> yea looks grand, probably an issue with how you have it in the binary, like I thought
18:18:00 <zid> https://github.com/zid/bootstrap/blob/master/boot/boot.asm I have near on the identical thing just with a different flag
18:18:00 <bslsk05> github.com: bootstrap/boot.asm at master · zid/bootstrap · GitHub
18:18:00 <johngammerson> oh wait i just realized i have . = 1M in my linkerscript
18:18:00 <zid> ah looks like qemu checks up to 8kB
18:18:00 <johngammerson> i'll change that to 16kb
18:19:00 <zid> why not have it like, 100 bytes in?
18:19:00 <johngammerson> so at which point should i start my kernel
18:19:00 <zid> just after the program headers is a personal favourite of mine
18:19:00 <zid> 1MB is correct
18:19:00 <zid> but that's the VMA
18:19:00 <zid> not the offset of this structure into the file
18:19:00 <zid> that's controlled via the LMA
18:19:00 <johngammerson> oh so how do i see the offset
18:19:00 <zid> which is why you don't have a 1MB + 4kB image in the first place
18:19:00 <zid> linker script
18:20:00 <zid> AT() or > it or : 0x400 or such
18:20:00 <gog> yeah
18:20:00 <johngammerson> https://paste.sh/Jgcxi-b3#9g1yfe6aMj4pq3Bbu5TCPp9C
18:20:00 <johngammerson> linker script
18:20:00 <gog> just like put it after your PHDHRs
18:20:00 <zid> https://github.com/zid/bootstrap/blob/master/boot/linker.ld
18:20:00 <bslsk05> github.com: bootstrap/linker.ld at master · zid/bootstrap · GitHub
18:20:00 <zid> I just have it first in .text and the way the file is organized, .text is first
18:21:00 <zid> so it goes ELF headers, program haeders, .text, .rodata, .data, .bss, .shtrtab .symtab etc
18:21:00 <zid> johngammerson: readelf -a output'd be useful
18:21:00 <gog> yes
18:21:00 <gog> read your elves
18:23:00 <zid> I am making chili, it tastes good, I think
18:23:00 <zid> it's hard to tell because my face dissolved
18:24:00 <johngammerson> no readelf on mac wtf
18:24:00 <zid> your binutils is broken :(
18:24:00 <johngammerson> wdym
18:24:00 <zid> readelf is part of binutils
18:24:00 <zid> your binutils does not have readelf, ergo your binutils is broken
18:24:00 <gog> because it's mac
18:24:00 <zid> qed mac
18:24:00 <gog> it doesn't have ELF
18:24:00 <gog> it has MACHO
18:25:00 <zid> his x86 cross compiler should have come with binutils
18:25:00 <gog> oh
18:25:00 <zid> The one he definitely made, right?
18:25:00 <gog> idk what he does
18:25:00 <gog> ¯\_(ツ)_/¯
18:25:00 <zid> Absolutely started by making a cross compiler like a good boy
18:25:00 <gog> the goodest boy
18:25:00 <zid> not like the rest of us savages that just use x86_64-linux-pc from their desktop and force all the -fno-PIE etc things to make it work
18:26:00 <johngammerson> realized i reset my pc a few weeks ago and since haven't installed binutils
18:26:00 <johngammerson> nice
18:26:00 <zid> yea I installed this PC fresh 2 days ago
18:26:00 <gog> i use PIC
18:26:00 <zid> so I am missing absolutely everything
18:26:00 <gog> because i need it
18:26:00 <zid> I find out every 4 hours I am missing some random utility or bookmark that I need
18:26:00 * geist yawns
18:26:00 <gog> i have my computer just how i want it now so it'll be an opportune time for my SSD to reveal itself as defective
18:26:00 <geist> wheres the kitty
18:26:00 <geist> oh there's the kitty
18:26:00 * geist pets gog
18:26:00 <zid> that's what I just did gog
18:27:00 * gog prrr
18:27:00 <zid> PC died, I finally revive it on new hw, I'm just getting done setting up my shit how I want it
18:27:00 <zid> chmod windows.old/ so I can copy my Users/zid/AppData/Roaming
18:27:00 <zid> SSD dies
18:27:00 <johngammerson> https://paste.sh/Jgcxi-b3#9g1yfe6aMj4pq3Bbu5TCPp9C
18:27:00 <johngammerson> readelf -a output
18:28:00 <geist> johngammerson: wait are you the one asking about multiboot on mac the other day?
18:28:00 <ilovethinking> yes
18:28:00 <zid> okay so you have .boot and .text in program header [1], at 0x1b offset in the file, loads to 0x100000, seems good
18:28:00 <geist> ah yes. please try to use the same nick if you can. helps us track who is who
18:28:00 <ilovethinking> yes im sorry
18:28:00 <zid> oh now I have to unignore one sec
18:28:00 <geist> no worries
18:28:00 <ilovethinking> wtf zid
18:29:00 <zid> I've never seen align 0x10 before
18:29:00 <zid> but qemu only wants align 4 so whatever
18:29:00 <zid> I'd go with a hex editor at this point cus it all... seems fine to me
18:30:00 <gog> lmao
18:30:00 <zid> I like a hex editor
18:30:00 <zid> fuck, I need to install a hex editor.
18:31:00 <geist> or at least a hex dump
18:31:00 <geist> like `hexdump -Cv`
18:31:00 <mrvn> zid: multiboot header must be in the first 8k
18:32:00 <zid> yea hexdump -C is legit
18:32:00 <ilovethinking> i should compile boot.asm with elf64 right?
18:32:00 <geist> in the first 8k is why i always do that trick of jmping around it and putting it in the .text.boot section
18:32:00 <ilovethinking> or wait
18:32:00 <ilovethinking> no
18:33:00 <geist> and then make sure that links at the front of the binary
18:33:00 <geist> ilovethinking: i thought you weren't doing 64bit yet?
18:33:00 <mrvn> zid: your linker script only works by accident.
18:33:00 <ilovethinking> wdym? im gonna jump to long mode after
18:33:00 <ilovethinking> but for now im reptty sure i should do elf32?
18:34:00 <geist> oh. yeah no yu need to link boot.asm as elf64 if you want to link it with the rest of it
18:34:00 <geist> since you can't really mix elf32 and elf64 in the linker
18:34:00 <zid> k I has hex workshop, love that guy
18:34:00 <mrvn> zid: but don't worry, 99% or people do it like that.
18:35:00 <ilovethinking> maybe smth is wrong w my procedure? i link with ld.lld -n -o kernel.bin -z max-page-size=0x1000 -T src/linker.ld src/boot.o
18:35:00 <geist> the lld part may be more difficult, but aside from that
18:35:00 <geist> is there a reason you are using lld vs binutils ld?
18:35:00 <mrvn> ilovethinking: 1. ld normaly outputs elf, not bin. 2) your kernel only consists of boot.S?
18:35:00 <ilovethinking> yes
18:35:00 <ilovethinking> for now
18:35:00 <geist> okay
18:35:00 <mrvn> 3) link with $(CC)
18:36:00 <mrvn> 4) follow the barebones example in the wiki
18:36:00 <geist> which compiler are you using? clang or gcc?
18:36:00 <geist> #3 is not required, i wouldn't mess with that yet
18:37:00 <ilovethinking> the barebones is for a 32 bit kernel tho
18:38:00 <geist> yeah
18:38:00 <geist> and i kinda thought your point was to steer away from the tutorials
18:38:00 <ilovethinking> yes
18:39:00 <ilovethinking> but fuck man it's hard to get the start done
18:39:00 <geist> anyway. re lld vs binutils. what toolchains are you using?
18:39:00 <ilovethinking> :cry:
18:40:00 <gog> clang clang clang went the compiler
18:40:00 <gog> ding ding ding went the linker
18:40:00 <ilovethinking> geist: x86_64
18:40:00 <geist> ilovethinking: yes. what toolchain? clang? gcc?
18:40:00 <ilovethinking> clang
18:40:00 <geist> okay, thats why you're using ld.lld then?
18:40:00 <ilovethinking> but for now none cuz no c files
18:41:00 <ilovethinking> yes
18:41:00 <geist> what assembler are you using then? (gcc and clang are perfectly good assembler front ends)
18:41:00 <gog> you can assemble .S files with clang
18:41:00 <ilovethinking> nasm
18:41:00 <geist> oh hrm. suggestion, move to using clang and/or gcc for that
18:41:00 <gog> you can assemble .S files in intel syntax with clang
18:41:00 <geist> but nasm should work i guess. but part of the probelm is you're starting to use more and more generally nonstandard tooling for a lot of us
18:42:00 <geist> since most folks here dont use clang, AFAICT (me included)
18:42:00 <geist> and dont use lld (though some do)
18:42:00 <ilovethinking_> lld is fine
18:42:00 <geist> well.... you say that.
18:42:00 <gog> are you looking at its output
18:42:00 <gog> i have a feeling it's not sane
18:42:00 <geist> when you have trouble it'll be a little harder for folks to help, because what they suggest may not be exactly applicatable to lld (vs binutils or gold)
18:42:00 <geist> exactly
18:42:00 <gog> but i'd need to readelf it and maybe (probably) objdump it
18:43:00 <geist> not saying you can't make clang/lld/nasm/etc all work, it's just more variables outside of our control
18:43:00 <geist> which clang toolchain are you using? the built in mac one?
18:43:00 <geist> does that generate and link ELF files?
18:44:00 <gog> UwU
18:44:00 <ilovethinking_> no i generate a an elf file with lld
18:44:00 <gog> the elf file is probably wrong
18:45:00 <gog> in some way
18:45:00 <gog> do you have an entry point
18:45:00 <geist> can you paste a readelf -a of it?
18:45:00 <gog> and will it hang and loop or smth
18:45:00 <ilovethinking> ues?
18:45:00 <ilovethinking> geist: i did
18:45:00 <gog> he doesn't have a readelf
18:45:00 <geist> do it again
18:45:00 <ilovethinking> zid said it looks fine
18:45:00 <ilovethinking> sec
18:45:00 <gog> o
18:45:00 <gog> o i see
18:46:00 <geist> along with dissassembly via objdump -d
18:46:00 <ilovethinking> https://paste.sh/Jgcxi-b3#9g1yfe6aMj4pq3Bbu5TCPp9C
18:47:00 <zid> I said the align 0x10 was odd, but qemu only needs align 4 so no matter, but otherwise I don't see a problem
18:47:00 <zid> and to just hexdump it
18:47:00 <zid> either the magic is there or it ain't
18:47:00 <gog> ok can you objdump -D it
18:47:00 <geist> yeah so probaby i'd call the .boot something like .text.boot
18:47:00 <ilovethinking> https://paste.sh/-LJ8n02B#NselGLvTqY5Vmqw2rnFm38Pf
18:48:00 <geist> it's not getting the X bits for it, and the alignment isn't merged with .text
18:48:00 <gog> oh you did
18:48:00 <geist> usually i do .text.boot and then make the linker script sort it first as it merges with .text
18:48:00 <gog> oh wait no i want capital D
18:48:00 <zid> as usual
18:48:00 <mrvn> ilovethinking: grub won't boot ELF64
18:48:00 <ilovethinking> i’m using qemu -kernel
18:48:00 <geist> nor will qemu
18:48:00 <geist> that's okay, you can flatten it into a binary. but get the objdump -D first
18:48:00 <ilovethinking> ?
18:49:00 <geist> qemu doesn't do elf64, iirc. that's okay
18:49:00 <ilovethinking> geist: check the link again
18:49:00 <ilovethinking> did capital D
18:49:00 <geist> ah well then that's your problem
18:49:00 <geist> somehow there's no multiboot anywhere. -D shold have shown it
18:49:00 <gog> yeah
18:49:00 <geist> since it's saying 'dissassemble *everything*'
18:49:00 <geist> vs regular -d
18:49:00 <mrvn> ilovethinking: your .boot is 1 byte alined, that can go wrong
18:49:00 <gog> it's helpful when you're just looking at bytes in file
18:50:00 <geist> oh wait, they repasted it
18:50:00 <geist> hang on. look at the link again
18:50:00 <zid> 02 b0 ad 1b 00 00 01 00 ee 28 52 e4
18:50:00 <gog> oh i see
18:50:00 <gog> ok it's there
18:50:00 <geist> there's a multiboot there now.
18:50:00 <geist> so try to flatten this thing to bin first, then -kernel that
18:51:00 <geist> qemu -kernel x86-64 IIRC doesn't understand elf64 (though it does elf32)
18:51:00 <zid> can someone add 0xe45228ee to 0x100000 and 0x1BADB002 for me
18:51:00 <geist> but it'll always take a flat binary with or without multiboot
18:51:00 <geist> if it's a flat binary i think it just loads it to a known spot and branches into it, so *really* multiboot isn't required
18:51:00 <mrvn> geist: arguably an ELF64 should load as raw binary image but that's broken in qemu.
18:52:00 <geist> mrvn: yes. but that's specific to x86-64. it just is that no one bothered to add that support because linux doesn't need it
18:52:00 <mrvn> geist: as raw binary the multiboot header gets found in the first 8k.
18:52:00 <geist> and really the purpose of -kernel is to load links
18:52:00 <zid> it looks for a linux header then if it doesn't find it it looks for a multiboot header
18:52:00 <geist> mrvn: yes i know, but if it doesn't have th eheader it just falls back to 'load to fixed spot, branch into it'
18:52:00 <geist> hence why multiboot is technically unnecessary
18:53:00 <mrvn> geist: maybe. but then you really need your .boot to start with a "jmp _start"
18:53:00 <ilovethinking> wait so what do i do now
18:53:00 <geist> yes. that's why i'm not recommending it right now. multiboot also gets you the memory map, etc
18:53:00 <zid> what was that thing it always used to print
18:53:00 <zid> EMRS OUT OF CHEESE or whatever
18:53:00 <gog> UEFI UEFI UEFI
18:53:00 <geist> ilovethinking: flatten to a binary with objcopy -O binary
18:53:00 <geist> load that
18:53:00 <zid> because it'd detect multiboot wrong
18:53:00 * gog does a dark ritual for dark firmware
18:53:00 <geist> create an elf, then create a .bin from it, -kernel that
18:54:00 <mrvn> ilovethinking: did you use the grub tool to check if your image is multiboot2? Don't know what it's called but grub has a tool for it.
18:54:00 <geist> also has the advantage that you can use hexump -C on the binary to validate that it precisely looks as you expect
18:54:00 <geist> mrvn: not using multiboot 2 because qemu
18:54:00 <mrvn> same with multiboot1
18:54:00 <ilovethinking> ok i flattened it out
18:54:00 <geist> hexdump -Cv that and pastebin it (if it's not too large)
18:55:00 <mrvn> ilovethinking: hd kernel.bin | head --lines 100
18:55:00 <zid> flat bin has the issue of needing to jump over the header
18:55:00 <zid> but it'll work for verifying it isn't trying to load it as the wrong image type
18:55:00 <geist> zid: not if the multiboot header has the appropriate entry, but yes the jmp is a good idea anyway
18:55:00 <zid> ah yea you can do the extendo one
18:56:00 <geist> which i think they're asking for, but not filling in, if theyre using flags[16]
18:56:00 <zid> this is honestly the worst part of x86, booting
18:56:00 <geist> since thats the bit that says 'read the additional fields that describe the binary'
18:56:00 <geist> so i think theyre wrong currenctly, but we can work on that next
18:57:00 <mrvn> geist: maybe instead of flat binary just objcopy to ELF32.
18:57:00 <geist> mrvn: possibly, but i have no idea if the llvm tools can do that, which they're using
18:57:00 <geist> and i really dont want to debug that
18:57:00 <mrvn> me neigther. I know GNU can and that's how you should od it.
18:57:00 <geist> i have much less experience with the llvm equivalents to binutils, except in general they're not as polished
18:59:00 <johngammerson> mrvn: the output https://paste.sh/-LJ8n02B#NselGLvTqY5Vmqw2rnFm38Pf
18:59:00 <geist> good.
19:00:00 <geist> now just have to debug that multiboot header, which i think may be incorrect
19:00:00 <geist> but alas i have to get to work
19:00:00 <geist> note the flag 16 is set, which i think says 'look for extended fields after it' which you're not providing
19:01:00 <geist> sinc ei think in that case it makes the multiboot header at least 0x20 bytes long
19:01:00 <geist> https://github.com/littlekernel/lk/blob/master/arch/x86/64/start.S#L44 these 4 fields
19:01:00 <bslsk05> github.com: lk/start.S at master · littlekernel/lk · GitHub
19:01:00 <geist> the flag is MULTIBOOT_AOUT_KLUDGE (which is bit 16)
19:01:00 <ilovethinking> what other flag doni set then
19:02:00 <ilovethinking> do i*
19:02:00 <geist> bit 16
19:02:00 <geist> we had a whole discussion about it. you set it so you can provide more data as to how to load it
19:02:00 <geist> either you do that and you provide the data to the loader, or you dont set the flag and then it loads it whereever it does
19:03:00 <geist> you are currently setting it, but not providing the data
19:03:00 <geist> alas i really need to get going and do some work
19:03:00 <geist> good luck! gettig close. it's annoying, but this is also really annoying. welcomg to early osdev nonsense hell
19:06:00 <geist> you're dealing with the result of a 40 year old computer architecture with endless backwards compatibility. if commodore 64s had survived to this day and were the dominant thing you'd just have to put in some other silly nonsense to bootstrap from 6502 to some 64bit mode by constructing an audio tape digital image or some other shit
19:06:00 <ilovethinking> thanks geist
19:06:00 <ilovethinking> can i just set the flags to 0?
19:06:00 <ilovethinking> so that at least i can get the kernel to boot
19:07:00 <zid> ooh that's a good idea
19:07:00 <zid> bootstrap my PC over a cassette
19:08:00 <geist> zid: if you had a old IBM PC 5150 you could load stuff over the cassette port sure. i dot think any emulator bothers emulating that functionalty since zero people used it
19:08:00 <mrvn> ilovethinking: your checksum is also wrong I think: 0x1badb002 + 0x001000 + 0xe45228ee == 0xffffe8f0
19:09:00 <mrvn> 0x1badb002 + 0x00010000 + 0xe45228ee = 0x0000d8f0 I mean
19:10:00 <mrvn> geist: now there is an interesting idea. a 64bit 6502 variant CPU :)
19:10:00 <geist> mrvn: right? imagine if that somehow became the dominant thing
19:10:00 <geist> or of 68k had. though motorola wasn't able to succeed in their later designs, so i suspect what would happen is more folks would be using PPC
19:13:00 <geist> zid: iirc there was some sort of diagnostic mode on the original IBM PCs where you could load code over the keyboard port. folks figured this out later
19:13:00 <geist> basically factory diags, a way to get code onto the motherboard
19:15:00 <zid> geist: How long do you think a bios will wait for a floppy sector before giving up? :P
19:15:00 <zid> tape is kind fast though
19:16:00 <mrvn> zid: That's actually in the specs. Reading an non existing IO port is how you wait a fixed time on x86.
19:17:00 <geist> yah and a floppy i think you can kinda detect fairly quickly that it's not responding
19:20:00 <mrvn> geist: nope. there is no way to see if a floppy is connect unless it responds.
19:20:00 <geist> right, but i think on Pc you can at least see data moving under the head
19:21:00 <mrvn> I think the idea was to use a tape on the floppy controller. While rewinding the tape to the right sector you will run into the IO port timeout.
19:28:00 <mrvn> .oO(How good will a WiFi card work without the antenna?)
19:47:00 <gog> not good
19:50:00 <mrvn> gog: 30cm from my phone to the SoC?
19:50:00 <gog> hmm
19:50:00 <gog> idk
19:51:00 <mrvn> Maybe I will just put it off for tonight and wait for the antennas to arrive tomorrow.
19:51:00 <gog> if it has a backup little fractal antenna it might work fine
19:51:00 <gog> but idk what kind of card
19:53:00 <mrvn> M2 E-key module
19:54:00 <sakasama> It might work fine at that distance anyways as long as the lead is long enough.
19:55:00 <sakasama> If it's in the 5GHz band or thereabouts odds are good.
19:55:00 <mrvn> the connector is right next to the shielded enclosure for the chip. not much lead there.
19:56:00 <zid> Anyway, I bet I could play a recording of a floppy disk into the head of a floppy controller
19:56:00 <zid> might need to underclock the floppy drive a lot though
19:57:00 <mrvn> zid: like those CD players for cars that only have tape decks that have a fake tape with a magnet that triggers the tapes reader?
19:57:00 <zid> (I'm back, with a weird sort of burrito thing I made)
20:04:00 <heat> hello it me onyx operating system developer
20:05:00 * mrvn has some Chicken Korma in the microwave
20:13:00 <heat> geist, is there a need to write-barrier on riscv when doing page table modifications?
20:14:00 <heat> or better yet, on what archs do you need to do that?
20:14:00 <heat> I would assume arm needs it ofc
20:22:00 <mrvn> heat: wouldn't you have to do that on all archs that have caches that aren't snooped by the TLB?
20:29:00 <danlarkin> heat: yes you need to fence after modifying page tables
20:50:00 <mrvn> danlarkin: on guard
20:50:00 <danlarkin> en garde
20:51:00 <nortti> skipped over etes vous pretes smh
20:51:00 <mrvn> Fences are such lovely things: https://i.otto.de/i/otto/3026faa9-f7bb-5ecc-9f6c-90936311d168?h=520&w=551&sm=clamp
20:51:00 <nortti> or wait, no, that was after en garde, before allez
21:16:00 <zid> oh thanks american DST being on a silly day, honzuki an hour early
21:18:00 <sham1> Ugh, thanks for reminding me that the Euro DST is in over a week from now. Now I'm annoyed
21:20:00 <brunothedev> i am so angry at kde and wlroots that i want to write my own compositor from the ground up on the tty
21:20:00 <brunothedev> pwd
21:20:00 <geist> heat: i dont think so, but there's some talk about it
21:20:00 <geist> i forget where. newer versions of the priviledged spec, etc
21:20:00 <brunothedev>
21:21:00 <geist> re arches that do. ARM
21:21:00 <geist> that's all i know about
21:21:00 <geist> it's because the TLB is cache coherent on ARM, it's just an 'external observer' from a weakly ordeed memory model
21:22:00 <geist> so it's the same rules as 'do you want another cpu to see this write *now* and in order'
21:22:00 <geist> think of the TLB as just being another cpu
21:28:00 <gog> daylight? what's that?
21:28:00 <sham1> That thing that occurs outside
21:28:00 <gog> oh
21:28:00 <gog> never been
21:28:00 <sham1> At day
21:28:00 <gog> also what's a good cheap vps
21:29:00 <sham1> This OSDev channel is sponsored by ExpressVPN
21:29:00 * sham1 runs
21:29:00 * brunothedev throw rocks at sham1
21:30:00 <gog> VP _SSSS_
21:30:00 * CompanionCube wonders what brunothedev is angry about
21:30:00 <CompanionCube> inb4 'use x11 instead'
21:31:00 <brunothedev> CompanionCube: i dont have a bif problem with the x11 protocol, but XOrg SUCKS
21:31:00 <gog> idk i have this TNAhosting offer for $15/yearly, it's not a lot and i don't need much
21:31:00 <CompanionCube> isn't xorg sucking a direct result of the former, though?
21:32:00 <gog> i'm about to pull the trigger but if there's anything better i'm open to it
21:32:00 <mrvn> geist: so the TLB is snooping the caches but not e.g. the write back buffer in the cpu?
21:32:00 <brunothedev> CompanionCube: gonna do what, write a x11 server?
21:32:00 <gog> this is about the cheapest i've seen
21:32:00 <CompanionCube> lol
21:32:00 <brunothedev> wayland looks cool
21:33:00 <sham1> gog: Oh, seems like I misread you. VUltr?
21:33:00 * CompanionCube hasn't yet gone wayland, awesomewm doesn't do it and there's no direct replacement.
21:34:00 <lav> vultr's cheapest is $5/month
21:34:00 <brunothedev> CompanionCube: the irony is that i used awesomewm with gentoo
21:34:00 <gog> it's a little more for about 4x the price
21:34:00 <sham1> I nowadays use Xfce and it doesn't have a wayland compositor. Although it might in the future, exciting stuff
21:34:00 <gog> the worst that happens is it's not enough and i spent $15
21:35:00 <gog> that's like 3 things at the grocery store
21:35:00 <lav> what's your use case? :)
21:35:00 <gog> computing is cheaper than food now
21:35:00 <sham1> Apparently the 4.20 (i.e. the blaze-it patch) might bring a WL compositor. Which would once again mean a broken firefox
21:35:00 <CompanionCube> (i have looked for replacements, and it's saying something that the most likely one is KDE Neon)
21:35:00 <CompanionCube> s/neon//
21:35:00 <brunothedev> 3 things? Lol in brazil that is like 3 good meals
21:35:00 <gog> everything is ridiculously expensive in iceland
21:36:00 <CompanionCube> (though Neon would be a good method of trying the whole thing with minimal effort)
21:36:00 <brunothedev> gog: Know your awful food, that is a thanks
21:36:00 <brunothedev> norway && faroe > iceland
21:36:00 <gog> ¯\_(ツ)_/¯
21:36:00 <gog> i'm not icelandic
21:37:00 <brunothedev> gog: immigrant?
21:37:00 <gog> yes
21:37:00 <gog> i'm american
21:37:00 <gog> worse than an icelander
21:38:00 <brunothedev> the urban and suburban part of the us sucks, but the rural regions looks cool
21:38:00 <gog> i'm from the rural midwest
21:38:00 <zid> gog: zero to hero more like
21:38:00 <gog> i don't have good feelings about it
21:39:00 <gog> great now the hercules song is gonna be stuck in my head
21:39:00 <brunothedev> why dont u like rural midwest?
21:39:00 <heat> texas >>>>>>>>>>>>>>>>>>>>>>>>> other states
21:40:00 <gog> i'm happier here
21:41:00 <sakasama> =
21:41:00 <heat> <CompanionCube> isn't xorg sucking a direct result of the former, though? <-- yes and no?
21:42:00 <heat> the X11 protocol sucks AND XOrg is a large project with a LOT of history running on very heterogeneous systems
21:43:00 <sham1> X11 protocol is fine for what it was meant for, which was basically to transfer simple graphics over the wire to dumb graphical terminals, akin to using something like telnet to bring your shell to you
21:43:00 <heat> gog, what state are you from and do you have a kickass accent
21:43:00 <bnchs> hi
21:43:00 <sakasama> brunothedev: Red states really suck for anyone who's not neuro/gender/hetero-normal... oh, and male and mostly white.
21:43:00 <mrvn> sham1: simple graphics like an elipse arc with dashed lines and beveled corners?
21:43:00 <sham1> From what I can tell they suck for the last groups as well
21:44:00 <sham1> mrvn: yes. It's the client's problem to display them
21:44:00 <sham1> They're also described in very little data
21:44:00 <gog> heat: i'm from wisconsin i have a boring accent
21:44:00 <mrvn> and have maybe been used once outside the X11 perf test.
21:44:00 <sakasama> sham1: Yes, but they don't have to purchase the *really* part.
21:45:00 <heat> gog, aw, sucks
21:45:00 <mrvn> sham1: they are pretty hard to render
21:45:00 <sakasama> bnchs: Hello. My brain is mush.
21:45:00 <sham1> Oh for sure
21:45:00 <bnchs> sakasama: my brain is more mushier than you
21:45:00 <bnchs> it is practically dumber than anyone here
21:45:00 <sham1> It's not like X doesn't have problems. I mean, the way the base protocol does fonts? Dreadful
21:45:00 <mrvn> bnchs: if you say so
21:45:00 * gog patpatpat bnchs
21:46:00 <mrvn> sham1: you don't have a local fint server on your client?
21:46:00 <gog> ok i did it i bought hosting
21:46:00 * Ermine 's eyes bleed because of x core fonts
21:46:00 <sham1> mrvn: no, not really
21:46:00 <brunothedev> what is the best for git: ssh or gnupg
21:47:00 <mrvn> the font protocol was fine when you had like 20 font variants. Not 1000.
21:47:00 <heat> what
21:47:00 * bnchs pats gog
21:47:00 <heat> ... both?
21:47:00 <mrvn> sham1: most terminals had at least some core font.
21:47:00 <sham1> Ermine: oi, you don't get to badmouth the fonts themselves though. They're nice bitmap fonts
21:47:00 <sakasama> bnchs: Practically? That's debatable. I only leave my apartment when coerced by horrible events. My fridge only contains condiments and vitamins.
21:48:00 <sakasama> I'd immigrate to Iceland too but I'm pretty sure they'd reject me.
21:48:00 <brunothedev> god, i hate gentoo approach to de's, they are SOO minimal, but sorry, i dont know why da hell does "kde-amongus" crashed and why does it makes kwin crash too, in a wm, you know everything about your system, not the same with KDE/Gnome/Xfce/Mate
21:48:00 <sham1> I actually went though a phase where I used some of the X core fonts on my terminal emulators back when I did the whole "minimalism for every aspect of computing"
21:49:00 <brunothedev> sham1: did you watch luke smith and want to live in the woods too?
21:49:00 <sakasama> bnchs: Oh, and I'm American but I sound like I'm English.
21:49:00 <sham1> brunothedev: I did watch Luke, but I didn't want to live in the woods
21:49:00 <heat> oi govna bruv lets watch tha footie lads
21:49:00 <brunothedev> sakasama: oi chap do u got a loicense to develoop
21:50:00 <heat> oi dem tories innit
21:50:00 * sakasama weeps.
21:50:00 <heat> <insert generic snarky sarcastic remark about UK politics>
21:50:00 <sham1> <insert snark about Brexit by a mainland European>
21:50:00 * sakasama contemplates living in the woods.
21:51:00 <brunothedev> <insert joke about the falklands as a South American>
21:51:00 <gog> amogus
21:51:00 <heat> agogus
21:51:00 <gog> SUS
21:51:00 <brunothedev> sussy wussy :S
21:51:00 <Ermine> sham1: my eyes *objectively* bleed. No badmouthing here
21:52:00 * lav vents
21:52:00 <sham1> Well in that case I'd see a doctor
21:52:00 <sakasama> Yep, dem woods be lookin pretty good bout now.
21:54:00 <brunothedev> the woods? DA WOODS? You are not a true minimalist until you live in the mountainous bahia/minas arid nature, no trees, only D I R T
21:54:00 <heat> https://www.inp.nsk.su/~bolkhov/files/fonts/univga/ is this shiz a decent unicode bitmap font?
21:54:00 <bslsk05> www.inp.nsk.su: Unicode VGA font homepage
21:54:00 <brunothedev> and M O U N T A I N S
21:54:00 <brunothedev> and i can say that sinc my grandma farmed self-sufficiently
21:55:00 <CompanionCube> heat: doesn't seem very complete?
21:55:00 <brunothedev> if only suckless was invented in the 1960's D:
21:55:00 <sham1> I do personally find the generic VGA font very nice
21:55:00 <brunothedev> sham1: it is sad that text-mode died
21:55:00 <sham1> Yes, but also understandable
21:56:00 <brunothedev> now we need complicated drivers to say hello world
21:56:00 <sham1> To emulate it with modern display hardware was (and is) certainly a lot of work
21:56:00 <heat> CompanionCube, seems to have most of the "main" codepoints?
21:56:00 <brunothedev> i am on the tty and this chatroom is my only entertainmend
21:57:00 <heat> i don't know, just curious. would love to test my unicode on this stuff, my current font only has the fuckin ASCII codepoints
21:57:00 <lav> brunothedev: why no emacs tetris
21:57:00 <CompanionCube> probably better then
21:57:00 <lav> unifont?
21:57:00 <heat> getting a proper font is hard
21:58:00 <CompanionCube> https://blog.spiralofhope.com/wp-content/uploads/Unicode-VGA-font-screenshot.png definitely comes off as DOS-like
21:58:00 <heat> I don't like unifont
21:58:00 <brunothedev> lav: em*cs
21:58:00 <lav> v*m
21:58:00 <brunothedev> vim is based
21:58:00 <heat> fr**B*D
21:58:00 <sham1> You take that back
21:59:00 <sham1> ZFS for lyf
21:59:00 <heat> aw hell nah
21:59:00 <sham1> Sun's legacy lives on!
21:59:00 <brunothedev> freebsd devs after using their own ose instead of macos: :O
21:59:00 <heat> give me the boomer filesystems all day
21:59:00 <brunothedev> btrfs go brrr
22:00:00 <brunothedev> fun fact: the maintainer of the freebsd os, literally SOYJACKED of the og macs so much that he worked from then own for apple
22:01:00 <heat> mjg, we found THE maintainer of the freebsd
22:02:00 <brunothedev> mjg be like: ONG NEW APPOU MEECBOOK MUS BYE
22:03:00 <sham1> Sadly solaris died and Oracle looted its corpse
22:04:00 <gog> i want alpha and hp-ux
22:04:00 <brunothedev> oracle trying not ruin any software %any: S 00.2
22:04:00 <heat> HP-UX ITANIUM
22:04:00 <gog> that's right i was going to but an itanium server
22:04:00 <gog> as my first vintage computing purchase
22:05:00 <heat> im starting to understand why you were +q'd
22:05:00 <heat> gog, pls do
22:05:00 <heat> lets write an OS for it
22:05:00 <brunothedev> heat: why?
22:05:00 <gog> ok
22:05:00 * brunothedev runs crying
22:05:00 <heat> sophia is directly portable to itanium through EFI
22:05:00 <heat> we're already on the right path
22:06:00 <gog> yessssss
22:06:00 <brunothedev> wtf is sophia
22:06:00 <sham1> Oracle does have some slight redeeming qualities, but hot damn, they're Nestlé levels of evil at times
22:06:00 <gog> sophia is my project
22:08:00 <brunothedev> it is sad that ubuntu is the that it is, videos of ubuntu introduced me to linux. I never runned ubuntu tho
22:08:00 <gog> what's wrong with ubuntu?
22:08:00 <gog> linux is linux
22:09:00 <gog> all distributions suffer equally because they're linux
22:09:00 <brunothedev> gog: snaps, abandoning old (cool) looks
22:09:00 <sham1> Not all of them have all the snappage
22:09:00 <gog> you can use the old cool looks
22:09:00 <brunothedev> gog: unity?
22:09:00 <gog> you can get rid of it
22:09:00 <gog> if you were a real linux OG you'd know that
22:10:00 <gog> linux is linux
22:10:00 <gog> also i don'
22:10:00 <gog> t think unity was v cool
22:10:00 <brunothedev> gog: not really an og, when i said videos, i meant specifically an old ubuntu install video by diolinux(look him up)
22:11:00 <gog> i only watch one linux youtuber sorry
22:11:00 <brunothedev> oh, and also a video by fabio akita
22:11:00 <brunothedev> gog: what is the only one and this is a lusophone channel
22:12:00 <gog> veronica explains
22:12:00 <brunothedev> the only one i never watch
22:13:00 <brunothedev> i mostly watch brodie robertson, really cool channel
22:13:00 <brunothedev> he aways has a video after i go home after school
22:14:00 <heat> would rather rot than consume linux youtube videos
22:14:00 <gog> heat heat heat
22:14:00 <heat> gog
22:15:00 <brunothedev> heat: dt: Danmit why no ones make a distro with only appimages and fish shell?
22:15:00 <gog> because that's a really inefficient distro honestly
22:15:00 <CompanionCube> my first linux was
22:15:00 <CompanionCube> an ubuntu 9.04 live cd
22:15:00 <gog> nice
22:16:00 <brunothedev> linux mint xfce
22:16:00 <gog> my first linux was red hat 8
22:16:00 <heat> gog are you a RHEL person
22:16:00 <gog> no
22:16:00 <sham1> Oh, a pre-RHEL
22:16:00 <heat> you're probably a RHEL person
22:16:00 <gog> i mean
22:16:00 <gog> red hat 8
22:16:00 <gog> lel
22:16:00 <bnchs> sakasama: really, i would like to compete in the dumb olymptics
22:16:00 <brunothedev> my fist linux distro was android 4.4
22:16:00 <heat> i thought mjg was definitely a RHEL guy but apparently its ubuntu
22:16:00 <brunothedev> literally fist
22:16:00 <gog> i use manjaro
22:16:00 <gog> it works fine
22:16:00 <heat> BOOOOOOOOOOOOOOOOOo
22:16:00 <bnchs> for memory management, i used the WORST system for it
22:16:00 <gog> yeah everybdoy hates manjaro
22:17:00 <bnchs> a memory pool instead of a memory map
22:17:00 <brunothedev> gog: M*njaro
22:17:00 * brunothedev died of cringe
22:17:00 <sham1> gog: how often do you end up resetting your clock to get updates because the Manjaro team once again cocked up the TLS certs
22:17:00 <gog> never because i don't update
22:17:00 <gog> updating is for chumps
22:18:00 <brunothedev> THEN WHY DO YOU RUN A ROLLING RELEASE?
22:18:00 <heat> gog tell the manjaro developers to fix their packaging, they're DDoSing the AUR again
22:18:00 <gog> it's cool and funny to DDoS the AUR
22:18:00 <brunothedev> ALL OF US IS CHRONICALLY "pkgman update" people
22:18:00 <bnchs> brunothedev: shut up please
22:18:00 <gog> but also i don't use AUR
22:19:00 <bnchs> you are outdumbing me
22:19:00 <bnchs> i'm supposed to be the dumbest here
22:19:00 <brunothedev> bnchs: i would if i could get how to configure hikari compositor
22:19:00 <gog> now now bnchs
22:19:00 <sham1> One could use a good distro like Fedora
22:19:00 <brunothedev> my brain is smoother than a gumball
22:20:00 <heat> i rate fedora
22:20:00 <heat> solid
22:20:00 <bnchs> brunothedev: my brain is smoother and reflects tons of light
22:20:00 <gog> it's linux
22:20:00 <gog> linux is linux is linux
22:20:00 <heat> i'm going to install DragonflyBSD
22:20:00 <bnchs> it's not for thinking, it's for being dumb at things
22:20:00 <gog> me too
22:20:00 <sakasama> Oh no, bnchs has competition? They're even self-deprecating.
22:20:00 <heat> BSD for hipsters
22:20:00 <sham1> As a hipster, I resent that
22:21:00 <bnchs> sakasama: i will self-deprecate to oblivion for 1st place
22:21:00 <sham1> HAMMER2 is interesting. Too bad it doesn't actually exist
22:21:00 <bnchs> but it probably shouldn't be here
22:21:00 <heat> NetBSD if you're old, OpenBSD if you're <expletive>, FreeBSD if you have a ponytail, DragonflyBSD if you have a ponytail on your neckbeard
22:21:00 <sakasama> What's a hipster? To me, those are a type of underwear.
22:22:00 <brunothedev> MA BRAIN IS SO SMOOTH I TYPED THIS WITH THE SHIFT KEY INSTEAD OF CAPS LOCK
22:22:00 <heat> regular people that don't want to use computers just use linux instead of going to the trouble of installing a BSD
22:22:00 <heat> actual normal people use windows
22:22:00 <brunothedev> bsd people pls dont gentrify this chatroom
22:23:00 <brunothedev> i like here it is cozy and cheap :)
22:23:00 <heat> i wish i could fucking use windows instead of studying the art of the BSD vfs path resolution
22:23:00 <heat> I don't get it
22:23:00 <sakasama> bnchs: Will you consider dropping this horrible hobby in favour of helping me build a bioengineering laboratory so I can rewrite myself and aid other noble causes?
22:24:00 <heat> not that linux path resolution is any nicer, both look to have been untouched for the last 20 years
22:24:00 <brunothedev> i would rather die than using windows
22:24:00 <bnchs> sakasama: i'm uhhhh
22:24:00 <bnchs> i don't think uhhh
22:24:00 <bnchs> that's above my extremely low intelligence
22:24:00 * brunothedev started singing yankee doodle with a musket
22:26:00 <sakasama> bnchs: Have you actually taken any intelligence tests?
22:26:00 <bnchs> no
22:26:00 <sakasama> See, that's just bad science.
22:27:00 <brunothedev> i am dumber than you
22:27:00 <brunothedev> i am a santa-denier
22:27:00 <bnchs> brunothedev: you are just annoying not dumb
22:28:00 <brunothedev> bnchs: that it is when you dont do something rewarding and the only form of entertainmend is #osdev
22:28:00 <brunothedev> (no, seriously, please hikari develop a better configuration documentation )
22:28:00 <bnchs> who's this hikari, are they in the room with you?
22:29:00 <bnchs> are they apart of your schizo delusions?
22:29:00 <brunothedev> hikari is a wayland compositor
22:30:00 <mjg> heat: rhel does not work for shit
22:30:00 <mjg> it is all maintained by people who don't even use unix
22:30:00 <mjg> want something maintained by people who use it, try debian or derivatives
22:31:00 <heat> I need a real UNIX by people who use UNIX
22:31:00 <heat> ILLUMOS TIME
22:31:00 <brunothedev> heat: netbsd
22:31:00 <heat> actual fucking UNIX, none of that communist UNIX GPLv2 LGPL GNU FSF bullshit
22:31:00 <bnchs> sakasama: science can determine one thing, and that is i'm worthless to anyone
22:31:00 <heat> enterprise is back baby
22:32:00 <brunothedev> "COMMIE, COMMIE WEE" - eisenhower, propably
22:32:00 <sham1> UNIX but it's exposed as a REST API
22:32:00 <brunothedev> aslo, macos is a certified UNIX
22:32:00 <brunothedev> except the init system is using .xml files
22:33:00 <sakasama> bnchs: Create a matrix account and call me. I'll verify your claim.
22:34:00 <bnchs> i don't think that'll be necessary
22:36:00 <brunothedev> ok but: is ssh or gnupg better for git
22:36:00 <gog> those are two different things
22:37:00 <gog> do you mean
22:37:00 <gog> ssh keys or gpg keys
22:37:00 <brunothedev> keys
22:37:00 <gog> because you can use gpg to generate ssh keys
22:37:00 <gog> or keys compatible with ssh
22:37:00 <gog> so it's your pick
22:37:00 <brunothedev> gog: what is the easier one
22:37:00 <gog> ssh
22:38:00 <brunothedev> now i need to find a guide that is compatible with pure html, THANKS HIKARI
22:39:00 <brunothedev> and you too, kde, for kde-sussy-dectector making wayland unusable
22:39:00 <bnchs> and i thought i was annoying
22:39:00 <bnchs> maybe we're both equally annoying
22:40:00 <brunothedev> oh sowwy just going through on a rant
22:40:00 <sakasama> bnchs: Not yet. You're currently losing the competition, but the moral here is the same as with a nice game of global thermonuclear war.
22:41:00 <zid> The only winning move is to nuke the other guy harder.
22:41:00 <bnchs> okay uhhh
22:41:00 <brunothedev> except thermonuclear war make cools games
22:41:00 <zid> see: ender's game
22:41:00 * brunothedev looks at HOI4 TNO and fallout
22:42:00 <bnchs> HAI GUIZE, HOW CAN I WRITE A BYTE TO A VOID POINTER??? :ooo
22:42:00 <zid> do kids know about wargames
22:42:00 <klange> bnchs: very carefully
22:42:00 <zid> and who matthew broderick is
22:44:00 <brunothedev> zid: wdym?
22:44:00 <zid> Sounds like that's a no then
22:44:00 <brunothedev> zid: are you talking about boardgames or paradox-like games?
22:44:00 <bnchs> zid: sounds like that game called citizaliations
22:45:00 <bnchs> where gandi nukes you
22:45:00 <klange> brunothedev: It's a film.
22:45:00 <bnchs> (i literally don't know how to spell)
22:45:00 <zid> that's an incredible way to spell civilization, yea
22:45:00 <brunothedev> you cant recruit most of the chinese population in civ
22:46:00 <bnchs> zid: i unironically can't spell civilization
22:46:00 <bnchs> i should be back at preschool
22:48:00 <brunothedev> i cant spell probaply, we are the same :D]
22:48:00 <bnchs> jesus christ, is there no limit to you?
22:48:00 <heat> all praise gentoo ops
22:49:00 <brunothedev> bnchs: yes
22:49:00 <bnchs> gentoo ops please save me from this hell, and end my existance
22:49:00 <sakasama> This is the worst burlesque show I've ever seen.
22:49:00 <zid> heat when do I get more benchmarks
22:49:00 * sakasama demands a refund.
22:49:00 <zid> I ran a factorio benchmark earlier at least
22:50:00 <heat> when I stop fixing my bad UNIX and/or stop writing this bdf2c
22:50:00 <zid> we could test onyx in vmware 17 too
22:50:00 <heat> which is remarkably easy if I half-ass it
23:00:00 <heat> BDF is a stupid simple format lol
23:00:00 <heat> ez
23:00:00 <bnchs> sakasama: i'm sorry for being a retard here
23:02:00 <sakasama> bnchs: Really, it'd help a great deal if you'd stop insisting on your uselessness and instead actually do something.
23:03:00 <bnchs> like what?
23:03:00 <sakasama> Even I make an effort to do useful things and my entire life has been a disaster for longer than you've existed.
23:04:00 * brunothedev picks up popcorn
23:04:00 <sakasama> That bioengineering laboratory would be a very nice start. Alternatively, how about something you actually care about?
23:04:00 <bnchs> i failed at it
23:04:00 <sakasama> What was it?
23:05:00 <bnchs> reverse engineering
23:05:00 <sakasama> Failure is a learning opportunity.
23:05:00 <bnchs> my brain was too burnt-out from staring at m68k code all day
23:05:00 <bnchs> and trying to see what they do
23:05:00 <brunothedev> fun fact: If devote enough of it on something u can do everything
23:06:00 <bnchs> brunothedev: you sound like a quote from a NES game
23:06:00 <sakasama> Great. Reverse engineer DNA instead. I'll send you some slugs you can torment for science.
23:06:00 <sakasama> We get signal. Main screen turn on.
23:07:00 <bnchs> reverse engineer is torture for me
23:07:00 <brunothedev> open source slug
23:07:00 <bnchs> it's a necessary evil
23:07:00 <brunothedev> slidercrank: tell me about it
23:08:00 <brunothedev> slidercrank: what about sevastopol safety protocol?
23:08:00 <slidercrank> brunothedev, I'm afraid no one is safe :) But my quit message is from the game "Alien: Isolation"
23:10:00 <brunothedev> quit messages are funny, you can say anything
23:11:00 <nortti> heh, forgot mine was "Anthropologa se non exstare reperit. Solum exstat pyramis ingens mechanica."
23:11:00 <heat> deep
23:11:00 <heat> gog, bazinga quit message?
23:12:00 <brunothedev> nortti: i read this mentally listening to "merck toe hoe sterck"
23:12:00 <heat> cheers the irc client crashed
23:13:00 <brunothedev> heat: what client?
23:13:00 <heat> the offtopic client
23:13:00 <gog> ????
23:13:00 <zid> porn client?
23:13:00 <gog> hi i'm trying to install arch on my vnc
23:13:00 <gog> it's going poorly
23:13:00 <gog> basically i can't type /
23:13:00 <zid> typing / is overrated
23:14:00 <brunothedev> OFFTOPIC [ TOPIC IS OFF ] ** I KILLED TOPIC AND YOU CAN`T DO NOTHING ABOUT IT **: heat: what client?
23:14:00 <gog> maybe so
23:14:00 <zid> why is there a backtick between N and T
23:14:00 <bnchs> brunothedev: i so dearly wish for a +q
23:14:00 <brunothedev> before i switch to abnt2 ";" is "/"
23:14:00 <sakasama> gog: Go Windows, so you only need backslashes.
23:15:00 <bnchs> quiet flag any%
23:15:00 <zid> onyx has that issue, I can't type anything
23:15:00 <zid> because it uses raw scancodes + portuguese layout
23:15:00 <brunothedev> bnchs: making unfunny jokes is my persona
23:15:00 <heat> ok can shutting up be your persona now
23:15:00 <brunothedev> yes
23:15:00 <zid> oh sorry heat
23:16:00 <heat> no problem zid
23:16:00 <heat> love you
23:16:00 <zid> heat when will onyx let me type
23:16:00 * bnchs imagines heat kissing zid, after hearing "love you"
23:16:00 <heat> never
23:16:00 <bnchs> i'm gay
23:17:00 <sakasama> Define gay.
23:17:00 <heat> zid, I actually need/want a good keyboard description database
23:17:00 <bnchs> gay = happy
23:17:00 <heat> because that would solve any issue
23:18:00 <klange> You can have spaces in your quit message, just so you know.
23:18:00 <zid> did it work
23:19:00 <FireFly> something they presumably alerady know since they've used spaces in part messages before
23:20:00 <zid> am I seriously going to have to disable part messages for the first time in 30 years
23:20:00 <zid> cus of one fucker bypassing ignore using it
23:21:00 <klange> imma kick all y'all unless some osdeving happens soon
23:22:00 <sakasama> I'm busy reinventing basic data structures. That qualifies, in a futile way.
23:23:00 <heat> i wrote a pseudo bdf2c in python
23:23:00 <zid> have you used a zidlist yet today
23:24:00 <sakasama> No. That sounds obscure and prone to malfunctioning.
23:24:00 <zid> wow, blasted
23:24:00 <heat> something I *dont* handle is UTF-8 through write calls, i.e if you write a unicode codepoint with multiple write()s, you get multiple bad characters instead of a unicode codepoint
23:24:00 <zid> neat
23:24:00 <gog> i got ssh going
23:24:00 <gog> now i can install arch
23:24:00 <zid> I had that issue with telnet
23:24:00 <heat> which is like, mildly incorrect and annoying, but who tf does this anyway
23:25:00 <heat> answer: bash on Onyx, for some reason
23:25:00 <zid> I really didn't wanna like.. strdup the packet and recombine it with the incoming one
23:25:00 <sakasama> heat: Why not write the raw bytes?
23:25:00 <zid> if someone sent me a bunch of data a character at a time
23:25:00 <heat> sakasama, write the raw bytes where?
23:26:00 <sakasama> ... wherever they were going to be written anyways?
23:26:00 <heat> this is all part of the VT console code, so I'm parsing bytes and storing stuff to "console cells"
23:26:00 <zid> they were going to be looked up in an array and turned into a column of bitmap
23:26:00 <zid> ultimately
23:26:00 <heat> which means I need a single codepoint instead of UTF-8 bytes which will end up in multiple cells
23:26:00 <zid> but you need all of the bytes at the same time to do that
23:27:00 <zid> so you'd need a client buffer that can be partially filled
23:27:00 <zid> and to memmove the unparseable shit back to the start
23:27:00 <zid> or set it up as a ring buffer
23:27:00 <klange> either tell bash you're using a single-byte encoding, or join the 21st century and implement utf-8
23:27:00 <zid> that's what we're talking about
23:27:00 <klange> smdh having a bash port but not bothering with utf-8
23:27:00 <heat> yeah so I think the correct impl is to just keep some utf8-to-32 conversion state
23:27:00 <zid> implementing people sending you utf-8 codepoints with a gap between the writes
23:28:00 <heat> but this is obviously prone to weird races with other writers? fucking weird man
23:28:00 <zid> I'd just add a small buffer to the 'client' state somehow
23:28:00 <klange> stateful parser
23:29:00 <zid> the question is which struct you hang it off
23:29:00 <heat> let me check linux
23:29:00 <heat> I bet 10 on how it's the global struct
23:29:00 <heat> so multiple writers will fuck it up
23:30:00 <zid> are 10 geese money worth anything
23:30:00 <zid> heat: telnet is worse because there's no limit to the length
23:30:00 <heat> yes it is
23:30:00 <heat> it's in the global console struct
23:31:00 <zid> I'm guessing just because that's the only vaiable place to hang it off
23:31:00 <zid> even though it isn't ideal
23:31:00 <heat> i mean, in theory you could hang it off the fd struct
23:32:00 <zid> they don't want an intermediate struct to lifetime manage that only handles buffering one character between the fd and the console
23:32:00 <heat> in fact it's probably a superior solution
23:32:00 <zid> yea but then you clutter the fd struct for everyone
23:32:00 <zid> and fds do not care about codepoints
23:32:00 <zid> do fds have any internal buffering?
23:32:00 <heat> well, the fd struct already has something like a void *helper; for the fs impl
23:32:00 <zid> If they did you could probably just set the watermark to 3 bytes and left 3 bytes in ti I guess?
23:32:00 <klange> The only thing that should ever care about this is the thing that's processing it, which is to say the terminal emulator itself.
23:32:00 <zid> leave* it*
23:33:00 <klange> None of this belongs in file descriptor code. None of this belongs anywhere near file streams.
23:33:00 <heat> so you can totally pack your utf32 codepoint there I guess, unless not 64-bit, in which case you probably can-ish but it still sucks
23:33:00 <zid> that's a good point, if you make it transparent then the terminal emulator is the thing that cares
23:33:00 <zid> and that's 100% clean
23:33:00 <heat> klange, this would not be in file descriptor code
23:33:00 <klange> you already presumably have some ANSI escape parser that is stateful; you throw another layer of state above that for parsing UTF-8.
23:34:00 <heat> yes
23:34:00 <heat> pretty much
23:34:00 <heat> but the fd-private utf8 stuff would be like: <searching for patch>
23:35:00 <zid> this just punts the question to the terminal though
23:35:00 <zid> how do you deal with multiple writers to the terminal emulator
23:35:00 <heat> https://lore.kernel.org/all/20230131233755.58942-1-pedro.falcato@gmail.com/
23:35:00 <bslsk05> lore.kernel.org: [PATCH] ACPI: Make custom_method use per-open state - Pedro Falcato
23:35:00 <zid> line buffering?
23:36:00 <heat> in this case I really wanted per-fd context tracking so I hang the state off struct file
23:36:00 <zid> Well, thanks for the patch, but yes, they have. Sorry.
23:36:00 <heat> yeah it's Not That Simple and he reverted the removal patch
23:37:00 <heat> afaik this feature is still upstream and broken because he didnt take my patch yet (AFAIK)
23:48:00 <klange> The terminal itself should have no concept of "multiple writers". It has a single TTY fd it reads from.
23:48:00 <heat> oh right
23:48:00 <heat> good point, the terminal never sees any struct file stuff
23:48:00 <geist> haven't watched all of it but https://youtu.be/3E5Hog5OnIM looks like it might be interesting
23:49:00 <klange> And the TTY layer shouldn't care about these things. Intermixed UTF-8 bytes is the least of your problems - what if one writer is trying to write an escape sequence and another writer writes at the same time? Are you going to have a whole escape parser in your TTY layer so it can keep them atomic?
23:49:00 <heat> yeah, no good alternative to global state there
23:49:00 <klange> (I suspect the answer is "no", and if the answer to that is "no" then that should also be your answer to whether you should do that to handle UTF-8 byte sequences)
23:49:00 <heat> klange, I think the TTY has some UTF8 options for Some Reason (which I haven't figured out yet)
23:50:00 <klange> (However, if your answer to that is "yes", then by all means, do the same for UTF-8)
23:50:00 <heat> #define IUTF8 0040000
23:50:00 <klange> heat: In Linux? Only to understand when backspacing that it should continue to delete on continuation bytes.
23:50:00 <heat> ah no, I see
23:51:00 <heat> this is used in linux as an indicator from the vt to the tty users that the terminal does support UTF8
23:51:00 <heat> it always does the correct thing on continuation bytes
23:51:00 <heat> ah wait no, it does not
23:52:00 <heat> it's also used for continuation byte stuff
23:52:00 <heat> but that's as far as special handling goes
23:52:00 <klange> It shouldn't, without IUTF8 it should only delete one byte from the input buffer on backspace, so that it can correctly support older single-byte encodings, particularly with real physical serial terminals.
23:52:00 <heat> yep, checks out
23:52:00 <heat> they had a macro I wasn't searching for
23:52:00 <klange> I don't support this myself :( but also I expect most things to be using my fancy readline replacement that understands not just UTF-8 but cell widths
23:53:00 <heat> one day i'll figure out tab backspacing
23:54:00 <heat> which is nuts although linux does seem to have it mostly figured out
23:54:00 <heat> I remember I did test on FreeBSD at the time and the results were slightly broken
23:55:00 <klange> there's some magic internal x cursor tracking thing, it's pretty crazy; I just cheated and made the canon buffer print tab as ^I (and then I support it like other control sequences that are easy to detect and backspace two cells for)
23:55:00 <klange> s/x cursor/cursor x/
23:56:00 <heat> yep
23:58:00 <klange> I think the cursor x tracking is extra dumb and goes by bytes, so a three-byte utf-8 sequence that is actually 2 cells wide appears to be 3 cells wide for the x tracking, and backspacing a tab after that puts the cursor one cell to the right of where it should be.
23:59:00 <heat> oh yeah, have you handled like fancy console rendering for "exotic" languages
23:59:00 <klange> oh wait I don't have iutf8 on