Hi, I'm new here to the community but I've been using D for a while now, and
I have to say that it's a great programming language. I'd like to get
involved in this community and help shape this language.
I'm just wondering about a minor issue: why are conditional blocks invalid
within expressions such as enum and asm? I mean, in trivial cases it's fine,
but in instances where code duplication is a big maintainability nightmare,
making conditional compilation more flexible would have benefits for
developers.
Something like (I know it's a trivial example, but you get the point):
asm {
version(x86) mov EAX, 1;
else version(x86_64) mov EAX, 2;
}
would trigger an error. Also, though I know enum qualifies as a
constant/datatype cross, structs and classes are perfectly fine with
conditional compilation. Couldn't the lexical stuff be changed to support it
for enum and asm as well?
Also, I noticed that there is no formal specification page for x86-64 inline
assembly. You define a predefined version identifier such as
D_InlineAsm_X86_64, but you don't define registers and instructions
pertaining to it. In GDC for example, using the RAX register in the D inline
ASM syntax is invalid. Not sure what the case is in LDC (they probably do
implement it for x86-64), and I know DMD does not have a 64-bit version, but
the spec should at least have a definition for compilers that do implement
64-bit support.
Thanks for your time,
- Julian