[Info-vax] September 6, 2016 - new Roadmap and State of the Port updates now on VSI website

Stephen Hoffman seaohveh at hoffmanlabs.invalid
Sat Sep 10 10:09:41 EDT 2016


On 2016-09-10 01:12:58 +0000, David Froble said:

> John Reagan wrote:
>> On Thursday, September 8, 2016 at 9:54:57 PM UTC-4, David Froble wrote:
>>> John Reagan wrote:
>>>> On Thursday, September 8, 2016 at 3:44:19 PM UTC-4, David Froble wrote:
>>>>> Ok, I'll throw out an idea here.  Not saying it's a good idea, and I'm 
>>>>> sure Steve won't like it.  Well, pretty sure.
>>>>> 
>>>>> How about two C compilers on VMS?  One for VMS users, and one aimed at 
>>>>> porting needs.
>>>>> 
>>>>> I'd assume that they would be almost identical,so common code could be 
>>>>> used in the compilers.  Don't know how difficult this would be.  Most 
>>>>> likely a John Reagan question.
>>>>> 
>>>>> Not saying leave either of them in the past.  Both should be kept 
>>>>> current, and mostly logical name free.  Just saying, if what's needed 
>>>>> for porting *ix snake oil just isn't compatable with more traditional 
>>>>> VMS users, then face up to the issue and address it in some workable 
>>>>> manner.
>>>> That's basically what you are getting.  The DEC C frontend hooked to LLVM
>>>> gets you the C99 compiler with all of the strangeness that you want (there
>>>> will probably be some things changing/disappearing - #pragma linkage for
>>>> example).  I don't see that compiler getting any C11, etc features.
>>>> 
>>>> And then you have clang (which is several compilers rolled into one).  That
>>>> compiler has all the standard's compliance you want but currently none of the
>>>> OpenVMS extensions you want.  That is what we'll be doing.  We'll try to
>>>> limit the changes to the smallest set possible.
>>>> 
>>>> Do you mix objects from both compilers?  Yes from the calling standard point
>>>> of view, but they often contain calls into the RTL. Do the compilers share
>>>> the same CRTL?  Can you malloc() in one and free() in the other?  Can you
>>>> fopen() in one, but fclose() in the other.  Are the "errno"s the same or not?
>>>> If you pick up C11 headers, etc. do you let them work in the DEC C case?  Or
>>>> is that just __STDC_NO_THREADS__ ?
>>> If there is a problem, then it is a stupid problem.  I can allocate 
>>> memory from Macro-32, and deallocate it from Basic.  Or the opposite.  
>>> Or substitute any of the VMS languages.  So what's the problem?  They 
>>> are still using VMS services to do the job, right?
>> 
>> As Steve said, there are abstractions above the calls to LIB$GET_VM and 
>> LIB$MALLOC.  You wouldn't expect to do a NEW in Pascal, pass the 
>> pointer to a C routine and do a free(), would you?  However, when it is 
>> the same language, you expect that to work regardless of the compiler 
>> used.  Do you want to mix DEC C objects and clang objects?  Given that 
>> we will only have clang++, it is a given that we'll have to let you mix 
>> DEC C objects with clang++ objects.  The line between C and C++ is 
>> fuzzy.  I think it is expected to malloc() in one and free() in the 
>> other.
>> 
>> On the other hand, you can't easily mix g++ and clang++ objects on a 
>> Linux box since there might be differences in vtables, etc.
> 
> Personal opinion.
> 
> I think that when you implement an environment on top of another 
> environment, then you're no longer really running executables under the 
> lower (not sure what term) environment.  In this case, if special stuff 
> is implemented in C, then by using it you're no longer running on VMS.
> 
> I also think that if you're going to claim that you're running 
> executables on VMS, then it should always be VMS services used to do 
> things, not some language specific replacement of a VMS service.
> 
> But what do I know ???


-- 
Pure Personal Opinion | HoffmanLabs LLC 




More information about the Info-vax mailing list