Search logs:

channel logs for 2004 - 2010 are archived at ·· 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

Tuesday, 4 January 2022

00:11:00 <heat> i'm thinking about contributing to a BSD
00:11:00 <heat> seems interesting
00:11:00 <heat> OTOH, why(1) does(3) everything(4) have(8) a(1) man(1) page(9)
00:14:00 <gog> why(1) not(3p)?
00:16:00 <heat> its(2) rather(3) obnoxious(9) to(1) always(5) refer(4) to(1) things(2) as(1) man(1) pages(9)
00:19:00 <gog> i refer to them as woman pages
00:19:00 <gog> as in wo, man you expect me to read all that hogwash?
00:19:00 <moon-child> didn't some version of man print a funny message if you tried to run 'man woman'?
00:21:00 <gog> yeah
00:21:00 <gog> programmer humor is very on/off
00:22:00 <klange> The classic version is just the message a particular old version of `man` printed for a non-existent topic.
00:27:00 <gog> "no manual entry for `woman'"
00:27:00 <gog> or smth
00:43:00 <dh`> geist: you need to be able to find all the pages; indirecting via an object is fine but then you still need a list of the address spaces and offsets an object appears in
00:44:00 <dh`> and doing it that way gets complicated if/when the objects are copy-on-write
00:44:00 <blockhead> apropos
00:44:00 <geist> dh`: yep.
00:45:00 <geist> that's the O(N) if there's not an assist
00:45:00 <geist> page A belongs to object S at offset Y
00:46:00 <geist> object S is mapped by N regions in various address space with various subsets of the object
00:46:00 <geist> thus there are up to N mappings of the same page
00:47:00 <geist> if there's not a data structure to track individual page mappings there's no choice but to iterate all the mappings in all the aspaces to shoot down/modify the mapping
00:48:00 <dh`> right and that's awful
00:48:00 <dh`> locking horror as well as being nonperformant
00:48:00 <geist> could do a simple boolean that tracks if *any* mapping exists, and that may actually help in most cases
00:49:00 <geist> not as terrible as it sounds since most pages belong to objects mapped once
00:52:00 <nomagno> Hello! I'm looking into options for retargetting a C compiler for my custom architecture. The architecture does not support many features in a meaningful way, namely floats and has no call stack, but I can deal with disabling that myself. Any recommendations for a C compiler that is (very easily) retargetable and compiles C to text assembly?
00:53:00 <nomagno> I've never really done this before, I've looked into tcc but it is architecture in such a way generating text assembly seems unsuitable
00:53:00 <nomagno> And GCC is simply way too big
00:55:00 <gog> yeah TCC is pretty specific to x86. what about a clang/llvm backend?
00:55:00 <moon-child> tcc supports a bunch of architectures
00:55:00 <nomagno> ^
00:55:00 <moon-child> riscv and arm at least
00:55:00 <gog> oh it does? last i read it was x86 and x86_64
00:55:00 <nomagno> It just isn't designed to have a text assembly step
00:55:00 <gog> til
00:56:00 <gog> i see
00:56:00 <moon-child> nomagno: I am told retargeting gcc is fairly painless
00:56:00 <moon-child> nomagno: you may also wish to look into lcc, which was specifically designed to be very retargetable
00:57:00 <nomagno> I'm not sure it would be less effort to retarget LLVM/GCC than to hamfist text assembly into tcc
00:57:00 <nomagno> No. I am sure it would be more effort :P
00:57:00 <nomagno> LCC is noncommercial, unfortunately
00:57:00 <moon-child> regarding tcc, adding textual assembly seems very practical. Just add it as a new object file abstraction
00:58:00 <nomagno> I might give tcc a go geah
00:58:00 <moon-child> nomagno: I am told this by somebody who also targets his own cpu. More effort, maybe, but very feasible
00:58:00 <nomagno> Yeah it doesn't sound like a bad idea, actually
00:59:00 <moon-child> (though I am curious why it needs to be textual)
00:59:00 <nomagno> My CPU is very non-standard in that it is a perfect crossover between a 6502 and a virtual machine meant for scripting, so it doesn't even have registers
00:59:00 <moon-child> sure. But presumably its machine instruction format is not textual
00:59:00 <nomagno> moon-child: Honestly, I didn't implement a machine code interpreter in the VM yet
01:00:00 <nomagno> Its formally specified
01:00:00 <moon-child> I see
01:00:00 <nomagno> Just not implemented
01:00:00 <moon-child> that seems like a higher priority than getting a c compiler going :P
01:00:00 <nomagno> Probably :D
01:01:00 <nomagno> It actually maps directly to the assembly (the machine code)
01:01:00 <nomagno> So it would be an hour or two's worth of time. Will do it tomorrow probably
01:04:00 <nomagno> In actuality, I think the machine code maps directly to my current data structure, a single uint8_t for the instruction storage and a fixed number of operands from 0 to 3, depending on the instruction itself. Yeah this would be like 10 minutes :D
01:05:00 <moon-child> please be self-synchronizing
01:05:00 <nomagno> Hm?
01:06:00 <nomagno> What does that mean in this context?
01:06:00 <moon-child> that, given an arbitrary byte offset into some code, you can meaningfully determine whether it's at the beginning or the middle of an instruction
01:06:00 <moon-child> and if the latter where the next instruction is
01:06:00 <moon-child> e.g. all initial bytes start with 1, all continuation bytes start with 0
01:07:00 <dh`> re tcc, there are several things called tcc and I think the scroll is talking about more than one of them at a time
01:08:00 <nomagno> moon-child: Well the operands are two bytes and the instructions one, so that's not possible
01:09:00 <moon-child> dh`: at any rate, both of the tccs I know of target multiple architectures
01:09:00 <moon-child> nomagno: yes, but in the machine encoding, it's just a stream of byte
01:09:00 <moon-child> s
01:09:00 <nomagno> I know
01:10:00 <nomagno> But, like, I don't think you can actually unambiguously do what you propose unless I add some serious padding
01:11:00 <moon-child> one bit per byte is not that bad
01:11:00 <moon-child> and it can be made more efficient
01:11:00 <nomagno> I would need to have 17-bit words vs previous average 12-bit words
01:12:00 <moon-child> why?
01:12:00 <nomagno> (8, 16, 16, 16... More like 15 actually. Not that space inefficient)
01:13:00 <nomagno> moon-child: The machine code consists of, specifically, a nibble for argument marking, a nibble for the actual instruction, then based on the instruction 0-3 2-byte operands
01:14:00 <nomagno> An instruction can be (B), (B BB), (B BB BB), or (B BB BB BB)
01:15:00 <nomagno> The value of the lower nibble of the first byte determines the number of operands that follow, because instructions are fixed length
01:15:00 <moon-child> what is argument marking?
01:16:00 <moon-child> in any event, you can sacrifice a bit from the instruction nibble, and have an 'extended instruction' op
01:16:00 <nomagno> The upper nibble contains an encoding to identify which operands of the following are pointers, which are literal, and which are addresses.
01:16:00 <moon-child> ok
01:17:00 <moon-child> (what's the difference between a pointer and an address?)
01:20:00 <nomagno> moon-child: an address is an actual address in memory, a literal is literally this value, and a pointer is this cell AND the next interpreted as a single 16-bit integer.... (full message at
01:21:00 <nomagno> So ADD [1000] 50 2 - add 1000 to value of address 50, put result into address 2
01:21:00 <nomagno> The last operand of most instructions don't take literals
01:22:00 <moon-child> I see
01:22:00 <nomagno> Why the heck am I telling you this? I have a website with the docs :P
01:22:00 <nomagno>
01:22:00 <bslsk05> ​ Half-World Virtual Machine
02:40:00 <dh`> in an architecture where the second and subsequent fetch units are immediate values, using a bit to mark them as subsequent words really cuts into things
07:35:00 <gorgonical> Sometimes I wonder how my advisor tolerated me during the work on my first paper... I just have gone back and looked at the "clever" work I did for workqueues on the hypervisor to solve a problem when migrating VMs, especially rescheduling timers. Was setting init count to 0 after printing what I was gonna set it to...
07:36:00 <gorgonical> "Why is the timer not firing???" Because I disabled it.
07:40:00 <sham1> Probably because it was your first paper
07:41:00 <gorgonical> I hope one day to pay that patience forward
08:34:00 * gog mews
08:36:00 <zid> swem
08:36:00 <sham1> Puwr
08:43:00 * gog slides a coffee to zid
08:47:00 <zid> ooh nice
08:47:00 <zid> I'll go find my bag of sugar to tip it into
08:47:00 <zid> tasty brown slush
08:47:00 <gog> ah my bad i forgot you like your sugar with coffer
08:54:00 <gog> i was having dreams about data structures
08:54:00 <zid> eww
08:54:00 <zid> nightmares suck
08:54:00 <gog> better than the usual chaos that awaits me in my sleep tbh
08:56:00 <zid> I don't dream so it's fine
08:58:00 <zid> I have all my nightmares while awake
08:59:00 <vai> noon everyone from Finland
08:59:00 <gog> góðan daginn
10:00:00 <sham1> vai: päivää
10:01:00 <zid> poro poro poro
10:26:00 <nomagno> dh`: What do you mean by "cuts into things"?
14:00:00 <gog`> mew
14:03:00 <Jari--> new day for osdeving
14:21:00 <sham1> Okay, so instead of professionally ignoring libgcc I now just patch the relevant configure file because PIC is stupid and I still don't understand the multilib stuff enough to do this stuff elegantly
14:21:00 <sham1> Damn it
14:23:00 <Oli> Multilib, in the sense of having multiple C libraries targetting different architectures, software may link at?
14:23:00 <Oli> be*
14:25:00 <sham1> libgcc
14:25:00 <sham1> Yeah
14:25:00 <sham1> Since you can have different versions based on the flags you pass GCC
14:28:00 <sham1> And I wish to do the sane thing and relocate my kernel to the last 2 gibibytes of the 64-bit address space. And that requires mcmodel=kernel in order to have the compiler generate proper code. Now a problem is that for whatever reason, mcmodel=kernel and PIC cannot coexist, so one needs a way around that
14:30:00 <sham1> The multilib options of GCC can be used for this and they enable stuff like easily disabling red zone as necessary from libgcc. Disabling PIC however is not as simple
14:31:00 <klange> I've found x86-64 code is far less likely to even produce calls into libgcc. I have none in my kernel and only need one libgcc_s for userspace.
14:32:00 <sham1> It builds multiple variants. The problem is that by default for AMD64, libgcc is built with PIC and that can't be easily disabled when building with mcmodel=kernel. I've managed to make it so that the combination with mcmodel=kernel also passes fno-pic, but the command line also passes fpic when building that version of libgcc. And because the fpic flag comes after the fno-pic, it has precedence
14:33:00 <sham1> So I just took the sledgehammer approach of just disabling PIC from libgcc completely
14:34:00 <sham1> And yeah, one probably doesn't need libgcc on AMD64 as much as on iX86, but it still has useful stuff like stack unwinding which some might like. And besides, I could just not have libgcc for kernel, ez. But at this point it's personal
14:36:00 <klange> My journey to building the shared object for userspace was like that.
14:37:00 <sham1> It *could* be easier with clang because while that also relies on compiler-rt, it has a better way of doing it of just emitting the things as necessary
14:47:00 <sham1> Err, actually no
14:47:00 <gog`> i can't think of one symbol that gets pulled from libgcc on mine, but all of my objects are built with -fpic anyhow
14:49:00 <sham1> I could go without libgcc and then just do it for userland once it's necessary but I suppose I could also at the same time try to investigate why this kind of a configuration is not supported
16:01:00 <heat> is there any argument for static device numbers in the age of automatic devfs?
16:01:00 <gog> static across boots or while the device is connected?
16:02:00 <heat> across boots, essentially as part of the abi
16:03:00 <sham1> I suppose that it depends on what you decide the static numbering on
16:03:00 <sham1> Order?
16:04:00 <heat> per Linux, almost randomness :P
16:05:00 <heat> unix has this historical artifact where a driver can choose to occupy a specific major:minor as it chooses
16:06:00 <heat> for example the traditional Linux mem character device (/dev/mem, /dev/ports, zero, null, etc) have static device numbers
16:06:00 <heat> across boots, across all machines
16:08:00 <gog> that makes sense for device nodes that are required to be present for udev
16:08:00 <heat> but udev also uses the automagical devtmpfs
16:09:00 <gog> the year of the linux desktop
16:09:00 <heat> BSD *only* has an automagical devtmpfs
16:10:00 <heat> i'm trying to understand if there's an actual reason for static device numbers other than m'uh 1970 unix
16:11:00 <sham1> Well 1970 UNIX is as good a reason as any
16:12:00 <heat> if its the only reason though, you better drop it
16:14:00 <gog> unix considered harmful
16:17:00 <heat> hmmm is SVR4 source still under copyright
16:18:00 <gog> gotta wait 70 years until the last author dies
16:18:00 <heat> i found sauce in but it says its UNPUBLISHED PROPRIETARY SOURCE CODE
16:20:00 <gog> disregard that
16:29:00 <kingoffrance> depends if you trust john titor or not
16:32:00 <gog> i don't trust anybody with a name like "titor"
16:32:00 <sham1> What about boobor
16:33:00 <gog> booba
16:33:00 <sham1> Booband
16:33:00 <gog> hootxors
16:33:00 <sham1> Just need to be careful with the hyphen
16:33:00 <zid> I saw a girl with a booband once
16:34:00 <zid> it's like a monobrow but not
16:35:00 <gog> my boobs are NULL pointers
16:37:00 <zid> flat is justice
16:40:00 <gog> :<
16:43:00 <zid> I'm very interested in hydrodynamics, what can I say
16:47:00 <gog> sure you are
16:47:00 * gog pats zid
16:47:00 <zid> name me one boat with huge boobs
16:47:00 <gog> you got me there
16:59:00 <heat> well this is a bummer
17:00:00 <heat> apparently someone can technically sue me
17:00:00 <heat> i guess I always found early bsds more interesting that svr4
17:00:00 <heat> didn't even want to see svr4
17:23:00 <Oli> I find myself appealed by DragonFly BSD, mainly because dragons are my biggest passion.
17:28:00 <sham1> BSDs are quite nice from engineering standpoint
17:35:00 <heat> i'm kind of interested in trying to convert old BSDs (like really old) into compilable stuff
17:39:00 <Oli> After reading at your comment about BSDs, sham1, I looked up and read the features of FreeBSD listed in the article that the next hyperlink leads at: by I have so far, I agree with you.
17:39:00 <bslsk05> ​ FreeBSD - Wikipedia
17:47:00 <gog> mew
17:47:00 <zid> wem?
17:48:00 <gog> ʍǝɯ
17:52:00 <Oli> ɯǝʍ
17:52:00 <zid> gog when are you getting me a girlfriend?
17:53:00 <gog> lmao why would i help you with that
17:53:00 <zid> why would you not, I'm such an amazing catch, like one of those blobfish
17:53:00 <gog> if i'm getting anybody a girlfriend it's myself
17:53:00 <zid> I thought you had a waifu
17:53:00 <gog> i do
17:54:00 <zid> harem time?
17:54:00 <gog> eventually
17:54:00 <zid> ganbatte
17:56:00 <Oli> A blobfish sounds very confidant, if SSHv2 is any hint.
18:02:00 <gog> i do know a lot of girls i just don't know if you'd be their type
18:02:00 <zid> useless is a very attractive type
18:02:00 <gog> i meant that they're all lesbians :p
18:02:00 <zid> well half of them will be exactly *my* type, if that helps
18:03:00 <Bitweasil> zid identifies as... ;)
18:03:00 <zid> I'd be a lesbian if I had the requried heavy industrial equipment
18:04:00 <Bitweasil> Hey, it's 2022, you don't need to be so needlessly constrained by such things! Just claim you are what you feel inside and then argue with people who claim that, no, they're not interested in *that* kind of equipment.
18:04:00 <Oli> If I had that heavy indistrial equipment I would be a dragon
18:04:00 <Bitweasil> I... do want a backhoe.
18:04:00 <Bitweasil> They're $40k used. :(
18:05:00 <gog> wow
18:05:00 <Bitweasil> The good news is that they also are $40k in 5 years of use.
18:05:00 <zid> I don't think they appreciate being called hoes or having prices on them Bitweasil
18:06:00 <Bitweasil> Once a piece of equipment gets old enough, it's just long term rental.
18:06:00 <Bitweasil> :)
18:06:00 <nomagno> If I had the necessary heavy industrial equipment I'd destroy all copies of the Berne convention in existence.
18:06:00 <nomagno> ... And all relevant legislation
18:06:00 <heat> woah I got BSD 4.0's ed to compile in linux
18:06:00 <heat> posix is magic
18:07:00 <zid> byuegog
18:07:00 <heat> i see most of these files assume string literals are writable
18:07:00 <heat> :(
18:08:00 <zid> gcc has an option for that I think at least?
18:08:00 <Bitweasil> Hm, $32k for a 1998 Cat over in Montana...
18:08:00 <heat> zid, just a warning
18:08:00 <heat> from what I searched, only gcc 3 had a way to turn on writable strings
18:08:00 <zid> ah it's gone? okay
18:09:00 <heat> sad :(
18:12:00 <Oli> Good bye, gog; miss I will, textual interactions of herein.
18:14:00 <bauen1> heat: what prevents you from adding a small mmap call in _start to make .text read-write-execute goodness ?
18:14:00 <froggey> Bitweasil: hey could you not be transphobic here, thanks
18:14:00 <Oli> Wait, I was referring to heavy industrial equipment in the sense of a shape changing machine
18:14:00 <bauen1> add a > /dev/null to your gcc commands and you're good to go
18:15:00 <Bitweasil> Pretty sure I wasn't.
18:15:00 <Bitweasil> But OK.
18:15:00 <Bitweasil> Bye.
18:15:00 <heat> bauen1, disgust?
18:15:00 <zid> <Bitweasil> Hey, it's 2022, <-- that one *does* come across as offensive, if you've seen any of the anti-trans memery
18:16:00 <bauen1> heat: some times you have to ignore your moral values in search for the greater good /s
18:17:00 <Bitweasil> I don't know what you're talking about, but I'll leave.
18:17:00 <Bitweasil> Once I figure out how to get ZNC to do that.
18:17:00 <zid> hah
18:17:00 <zid> There was just a bunch of stuff with a similar tone
18:17:00 <Bitweasil> Sorry for offending... whoever, I'll depart from IRC.
18:17:00 <zid> if you didn't know then now you do
18:18:00 <froggey> well then
18:18:00 <Oli> Which is the aesop?
18:20:00 <Oli> Perhaps best to keep ourselves united by operating system development affinity, and keep other topics elsewhere?
18:22:00 <sham1> Agreed
18:22:00 <sham1> Although if it doesn't get too incendiary, I feel that it's fine to mention this stuff if it doesn't totally just derail everything
20:40:00 <heat_> HELLO
20:44:00 <sham1> Things are about to get heated
20:44:00 <heat> we have achieved comedy
20:46:00 <sham1> yes
20:48:00 <geist> good afternoon folks
20:49:00 <zid> I'm actually a sea cucumber
20:54:00 <heat> something I found out today: openbsd and netbsd have plenty of places protected by a big kernel lock
20:54:00 <geist> yah. i think i discovered a few years ago that netbsd still fires a PIT timer on cpu 0 and then a cross cpu IPI to run timer events on secondary cpus
20:55:00 <sham1> How do more modern systems do that
20:55:00 <clever> sham1: arm supports per-core timers, that always fire core-local interrupts
20:55:00 <sham1> Like when they get a timer interrupt in one of the cores. Or would you just have one timer per core
20:55:00 <heat> one timer per core
20:56:00 <sham1> And well, x86 does have the local APIC
20:56:00 <heat> in x86 you have the local APICs, which are your interrupt "chips" per core, and each lapic has a timer that fires independently
20:56:00 <heat> s/core/thread/
20:58:00 <heat> anyway its kind of sad how the other BSDs are so behind wrt FreeBSD
21:06:00 <sham1> Not behind
22:32:00 <heat> installing svr4 onto virtual box
22:32:00 <heat> this is fun
22:33:00 <sortie> Ah, a great vintage
22:34:00 <heat> >why did I just try to run gcc
22:41:00 <heat> im going to start distributing my OS as 30 different 1.44MB floppies
22:42:00 <Oli> A NFO with a nice ASCII art would be a cherry on the top for me.
22:48:00 <geist> i distinctly remember some time in college going down to the computer lab with a box of 20 floppy disks and making a whole set for slackware
22:48:00 <geist> why i had to go to the lab i dont know, seems i would have had at least one computer in my dorm room to punch out the disks
22:48:00 <geist> maybe it was occupied doing something or my roommate was trying to sleep or something
22:53:00 <heat> 1) this doesn't come with a C compiler 2) this doesn't come with man pages
22:53:00 <heat> commands also lack --help
22:54:00 <j`ey> good luck!
22:55:00 <heat> this is genuinely way worse than my OS
22:55:00 <kazinsal> which svr4 system is this
22:56:00 <heat> 2.1
22:56:00 <kazinsal> sunos?
22:57:00 <heat> no this is the actual svr4 I think
22:57:00 <kazinsal> wait, no, sunos was 4.2BSD+SysV IPC
22:57:00 <Ameisen> Odd question, but is there a list of all, like, x86 instructions somewhere in text format so I can jam them into a code colorizer for a web page :|
22:57:00 <heat> uname -a = svr4 svr4 4.0 2.1 i386 386/AT
22:58:00 <sham1> There probably is not a list of them
22:58:00 <heat> no bsd heresy here
22:58:00 <sham1> Since, well, the mnemonics do depend on the assembler to a certain extent
23:04:00 <klange> Ameisen: many bothans died to bring us this information
23:04:00 <bslsk05> ​ bim/gas.krk at master · klange/bim · GitHub
23:05:00 <heat> :D
23:05:00 <Ameisen> hmm, no `hcf`.
23:07:00 <sham1> How many more bothans would die for that
23:08:00 <zid> I always try to read that as like, hydrochloroflu- wait it means halt and catch fire
23:08:00 <zid> hcf looks like a real nasty acid or something :p
23:14:00 <moon-child> Ameisen: just scrape them from nasm dat file or some such?
23:14:00 * moon-child doesn't get such luxuries, making his own assembler; must transcribe everything by hand from the manuals. Why do I subject myself to such torture?
23:14:00 <sham1> Of, you are doing an assembled
23:15:00 <sham1> Assembler
23:15:00 <sham1> x86 and AMD64 I presume
23:15:00 <sham1> If so, which syntax
23:15:00 <moon-child> yea
23:15:00 <moon-child> intel
23:18:00 <Ameisen> pff, 'which syntax'
23:18:00 <Ameisen> as though there's a syntax that's not Intel.
23:21:00 <heat> at&t >> intel
23:21:00 <sham1> Intel with prefixes > Intel without prefixes > AT&T
23:22:00 <sham1> Unless you're instead just shifting AT&T by intel in which case fair
23:22:00 <zid> as if there is a syntax that's not intel
23:22:00 <zid> but without the word 'ptr'
23:22:00 <sortie> I use the standard assembler as(1)
23:22:00 <moon-child> I don't like the prefixes, but their use is at least _justified_
23:23:00 <zid> I also sometimes use as
23:24:00 <heat> okay I got bored with budget Onyx
23:24:00 <heat> lets see what freebsd 1.0 has
23:25:00 <klange> if you want to play around with old dead operating systems, why not try out a ToaruOS
23:26:00 <heat> its dead?
23:26:00 <sham1> Can't be. The 2.0 was just released
23:27:00 <zid> I'm still trialling windows 7
23:27:00 <kazinsal> windows in the streets, BSD in the sheets
23:27:00 <moon-child> lol
23:28:00 <heat> is BSD in the sheets an euphemism for virginity
23:28:00 <kazinsal> linux in the sheets is code for "I disappoint all my sexual partners"
23:30:00 <zid> I thought linux was "I pay for my sexual partners"
23:30:00 <kazinsal> Free As In Tinder
23:45:00 * geist waves at klange
23:46:00 <klange> I just miss the community, even if I'm not going to osdev myself.
23:47:00 <klange> I did try to do something this morning, I partially implemented non-lazy window resize in my compositor, but then I found I have terrible problems with repeated signal delivery when I was trying to resize a terminal with my editor in it, so I'm back to just thinking I'll quit the whole thing.
23:51:00 <geist> ah give it time. burning out on it is always difficult
23:51:00 <geist> also i was just thinking about that, how uis combine multiple input events
23:51:00 <geist> i guess there's a whole scheme there so you dont end up with the mouse pointer dragging behind the app thing
23:52:00 <klange> I did get most apps to work nicely, though I have some weirdness around resizing from the top/left that's a remnant of how I was drawing lazily resized windows
23:53:00 <klange> I just only sent resize events when the app had already fully responded to one, or when the resize was complete.
23:55:00 <klange> On the app side, one of my demo apps is a color picker that is a rewrite of one I made with Cairo in Python a while back. It's C now, but it's my own shoddy graphics routines so it's still pretty slow. My trick there was to consume all pending input events before redrawing, which would effectively drop any mouse movements that it was too slow for.
23:56:00 <klange> Looking at nakst's essence again, what a lovely UI and so very responsive. Really puts my shit to shame.
23:56:00 <zid> yea there's always the annoying choice between slomo and dropped events
23:56:00 <zid> and.. it's always exactly the opposite of what you want as a user, somehow :p
23:57:00 <moon-child> this is why I'm deeply dissatisfied by software rendering
23:58:00 <moon-child> but ... I also don't want to spend who-knows-how-many-months ripping out my hair making graphics drivers
23:58:00 <moon-child> _a_ graphics driver. That won't work for anybody else
23:59:00 <zid> it's not even a 'who renders' thing, it's just a choice you make a shit load of times in all sorts of places
23:59:00 <zid> games, UIs, servers, etc