[Info-vax] c 7.3 - Why MAYLOSEDATA3 for long pointer math?
Stephen Hoffman
seaohveh at hoffmanlabs.invalid
Fri Mar 13 15:28:25 EDT 2015
On 2015-03-13 15:18:53 +0000, John Reagan said:
> On Friday, March 13, 2015 at 11:11:28 AM UTC-4, Craig A. Berry wrote:
>
>> I think John was describing a decision made in the Compaq era or
>> thereabouts. I believe I've heard him say (not necessarily here) that
>> LP64 is on the VSI to-do list somewhere. I wonder whether LLP64 might be
>> better than LP64 for backward compatibility of structs, etc.; that's
>> what Windows did and has its advantages and disadvantages.
>
> Yep, LP64 might be nice for a Linux program, but it might break
> existing code (which is why I wouldn't ever change the default). When
> we get around to some LP64 work, adding the companion LLP64 (which is
> what you get mostly today with /POINTER_SIZE=64 other than the
> ptrdiff_t/size_t changes) companion setting probably isn't much worse
> since we'd already be down in the ditches with shovels in hand.
I'd probably use that ditch and those shovels to utterly bury the
existing mess, doing to DEC C what was done to VAX C back in the last
millennia. Use a couple of truckloads of concrete poured over the top,
just to be sure the carcass^Wcompiler stays dead and buried. Or in
more politic terms, do the absolute minimum to keep the old compiler
working. Leave the existing compiler and the existing customer source
code in the existing quagmire, and provide and encourage folks to
migrate over to a newer and more consistent and less
legacy-compatibility constrained configuration.
This current mess certainly looks to be the inevitable result of
working to provide forever-compatibility combined with the engineering
expediencies inherently involved with hacking together a specific
solution in a specific area, rather than addressing the more general
problem in a uniform and consistent way (and then incrementally
migrating the pieces and parts over to the architected solution), after
all.
I care rather less around absolute source-level compatibility here and
long-term-compatible defaults than some other folks, particularly if
the new platform or new framework or new tool — whatever is causing you
to look to break specific source compatibility — provides substantially
better features and capabilities, and where the changes I must make to
the code correspond to improving the code or to upgrading what the
application can provide the customers, or making the environment easier
to manage, or some other non-trivial improvement, and where I can have
some sort of a schedule for the deprecation of the older mechanisms the
older code was using.
For this case, some reasonable set of pragmas and associated
compatibility, but added into a wholly new compiler with most or all of
C11.
Give third-party providers and existing customers and new customers
good reasons to upgrade, and they will. Customers that stand on older
releases can and do have their reasons — they're the customers that
were. But don't let those folks hold back OpenVMS and its tools for
those customers that are upgrading. These are the customers that are,
and these are the features for the customers that will be.
--
Pure Personal Opinion | HoffmanLabs LLC
More information about the Info-vax
mailing list