[Info-vax] Listeners in VMS Basic, was: Re: Integrity iLO Configuration?

Richard Maher maher_rjSPAMLESS at hotmail.com
Fri Jun 25 23:09:44 EDT 2021


On 26/06/2021 9:57 am, Dave Froble wrote:
> On 6/25/2021 9:07 PM, John Reagan wrote:
>> Sorry for the late response, I was on the road all day.  Typing
>> this now from scenic Hagerstown Maryland on my way to visit my
>> sister for a week+
>> 
>> BASIC.  There are several reasons why BASIC is lagging....
>> 
>> The RTL LOVES to walk the stack.  We found a bug in one of the
>> LIB$X86 Calling Standard routines that no other language found.
>> Just printing a string causes the RTL to walk up the stack back to
>> the routine that literally just called the RTL.
>> 
>> The compiler and RTL LOVE floating point.  Printing an integer 
>> involves converting it to a floating point, converting that to a 
>> string, and printing everything to the left of the decimal point.
>> And even with the default being IEEE, we found that Itanium BASIC
>> still wants to use VAX floating.
>> 
>> And we found some other bugs in the RTL (like one routine passing
>> the address of short to another routine that wrote a longword
>> value).
>> 
>> BASIC was [ab]using a GEM interface to place stack allocated
>> variables at known offsets on the stack frame.  No other frontend
>> does that.  We do provide that feature for static variables for
>> BLISS.  We didn't know about BASIC's stack dependency until nothing
>> worked!  G2L has to collect all of the different GEM stack
>> variables, combine them into a single 'container' variable to give
>> to LLVM and then convert all of the references into offsets in the
>> container.   Getting the debug info right will be a nightmare and
>> describing all the jiggery pokery to the LLVM optimizer might not
>> be 100%.
>> 
>> 
>> Native compilers.  Yes, at one time the existence of native
>> compilers was tied to the definition of V9.1, but that isn't true
>> anymore. Compilers (well, other than Macro) are layered products,
>> not part of the OS.  [V9.1 doesn't contain a native Macro either.]
>> 
>> We have a native LLVM, libcxx, etc. on x86 (bootstrapped from
>> Linux). We have a native clang (with only a few OpenVMS'isms) on
>> x86.  It is wobbly but we're working through it.  Much has involved
>> clang treating "long" as 64-bits but the RTL headers and code
>> believing that "long" is only 32-bits.  As I've mentioned before,
>> we have to get the RTL to deal with both.  Doing RTL name
>> prefixing/mapping involves finding the right places in the clang
>> source tree...  And we haven't touched the libcxxabi library so no
>> exceptions (ie, TRY/CATCH) but that's OK since the compilers don't
>> use those features.
>> 
>> We are currently working on bootstrapping the GEM pieces needed for
>>  the legacy frontends (ie, processing the command line, managing
>> source files, creating symbol tables/GEM CIL, etc) so we can hook
>> up our first native legacy frontend to that native LLVM.  To make
>> it more "fun", we are using LLVM 3.4.2 with the cross-compilers but
>> are using LLVM 10.0.1 at the moment for the native compilers.  And
>> without a functional debugger, we're using DELTA for debugging.
>> Our first native compilers will probably be Macro or BLISS sometime
>> in the next month or so.
>> 
>> Mix in some recently found bugs in the G2L (GEM to LLVM converter)
>> and some missing functionality (including some needed for BASIC)
>> and things are just taking time.
>> 
>> And finally with the release of V9.1, we'll be letting more folks 
>> download it (and the cross-tools).  More people will find more bugs
>>  (thank you) but will generate questions as well.  That will take
>> time to answer them.  Please go easy on me.
>> 
> 
> John,
> 
> Perhaps not right away, but, do you see the possibility down the road
> of fixing some of those things Basic does, the stack nonsense, and
> such? Would be nice to improve Basic's performance some.
> 

Just use COBOL!



More information about the Info-vax mailing list