A lot of great opinions from both sides. I have created a small entry into our 
coding 
guidelines describing this debate [1].

I've prepared a small summary of the three coding styles we are using with 
respect to 
this issue:

Older than grandma      grandma  current
------------------      -------  -------
unsigned long long      u64      uint64_t
long long               ???      int64_t
unsigned long           u32      uint32_t
long                    ???      int32_t

I have seen zero lobbying for "Older than grandma", which is good. The debate 
remains between "grandma" and "current".

The main issue here is consistency. Having both styles is bound to clash 
sometime in 
the future. We have code that calls "current" functions and stores the result 
into 
"grandma" variables. I doubt carrying on both styles is a good idea in the long 
term.

I feel awkward lobbying for "current" considering I almost had a aneurysm when 
I first 
stumbled on usage stdint types in coreboot. Since then, I've started doing 
minor 
refactoring on our userspace tools, and lo and behold, we have duplicate files 
for 
userspace and coreboot. One example is the lzma decompressor, whose userspace 
counterpart I am currently refactoring.

Userspace is stdint, no debate about it. So what happens when I take the 
refactored 
decompressor, and put it in coreboot proper? For consistency's sake, I would 
have to 
change "current" types to "grandma" types, which is, in plain english, an 
imperial pain 
in the poop hole. This is the exact argument Aaron and Peter are making, and it 
is the 
only practical argument I have seen thusfar.

We're not linux, so the linux-legacy argument fails right off the bat, in my 
view.

The other practical argument is finger strain from typing the "_t". I used to 
be a strong 
believer in that, until a bunch of other projects told me to "suck it up". 
Seriously, use a 
good editor, and it will autocomplete the "_t" for you. You'll soon find that 
looking at 
code for hours at a time is a lot more comfortable, and less eye-straining. 
"u32" is just 
too short to be eye-friendly.

I'd like end by quoting my favorite part of this discussion:

> Seriously though, you'll *get over that* really quickly if you start
> using C99 standard types as a matter of routine. Your fingers don't take
> that long to learn, as a one-off.
> 
> But yes, you highlight the issue which is caused by people clinging to
> their own *nonsense*, *non-standard* types instead of using the language
> properly. Your fingers have to be retrained every time you switch
> between projects.
(empasis added)

Alex

[1] http://www.coreboot.org/Development_Guidelines#Variable_types

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to