Request GNAT Ada compiler system to fit on USB, with switch for only Ada 95, with no vendor fee

Request GNAT Ada compiler system to house on a USB with compiler switch to use only Ada 95, with no vendor fee.

I can supply the jump drive by US Mail with return mailer. The idea is to have a compiler system that works on a USB device that is movable from my laptop to desktop as needed.

My aim is to compile code in Ada 95 on laptop or desktop, but the Windows 10 update will no longer run my Ada 95 compiler on my relatively newer but old laptop.

Would it work for you to download and use the GNAT Community Edition that AdaCore provides freely available:

I don’t remember what year AdaCore removed the “-gnat95” compiler switch, perhaps you could try with the 2017 or 2018 version of the compiler.

Recently I tried to download a stand-alone installer for Visual Studio 2019. Microsoft only provides installer for Visual Studio 2019 that downloads the needed software from the internet which means an internet connection is required to install Visual Studio 2019 nowadays. Microsoft did previously provide stand-alone installer that did not require internet connection, but has recently been removed from the Microsoft website. In comparison, AdaCore provides all Community Edition versions of the GNAT compiler since 2007. Many thanks AdaCore!

You can look for GNAT 3.15p, a good vintage at the time.
For instance you find it here (click on the first image for downloading it):
https://www.ada-deutschland.de/sites/default/files/AdaTourCD/AdaTourCD2004/index_tools.html
The timestamps in the bin directory are Nov. 2002 the latest, so it is surely Ada 95.
You can try to install it on your USB drive, but the easiest and safest is to install it on both your laptop and desktop (those old versions of GNAT relied on some registry magic).

I cannot find gnatwin-3.15p.exe at the link auf Deutsch.

What is the switch to force GNAT studio to compile only in Ada 95? Maybe that is a simpler question to get 'er done.

Also, it is my understanding that AdaCore requires internet access for GNAT studio to work, implying they could be interested in whatever is being compiled. Is that the case, that internet connection is required for studio to operate correctly? If so, then that nixes a stand alone compiler product on a stick that is movable. (The registry magic stuff is nonsense, meaning the stick idea won’t work from the git-go.)

Click on the image on the mentioned page to download GNAT 3.15p:
gnat

No version of GNAT or GNAT Studio requires an Internet access.
Other compilers may - for instance ObjectAda does.

I did. There was an executable downloaded to install the product, but there was no dot exe file to invoke the compiler. gnatwin-3.15p-nt.exe is an installer only that unpacks user manuals and a debugger.

Can GNAT studio with free compiler be packaged as a portable stick?
What is the switch setting to invoke only Ada 95 compiles?

You need gnat-3.15p-nt.exe, not gnatwin-3.15p*.exe.
In the installer dialog, say you specify C:\GNAT\3.15p\ as the installation directory.
Then the GNAT executables will be in the C:\GNAT\3.15p\bin directory - list below.
If they aren’t, perhaps you have something on your system preventing writing executables.

27.05.2002  17:47           304'640 addr2line.exe
27.05.2002  17:47           277'504 ar.exe
27.05.2002  17:47           458'240 as.exe
27.05.2002  17:47            45'056 gasp.exe
27.05.2002  15:50            53'760 gcc.exe
27.05.2002  15:50            13'824 gcov.exe
13.11.2002  15:09         1'596'416 gdb.exe
13.11.2002  15:10           685'568 gnat.exe
13.11.2002  15:11           225'280 gnatbind.exe
27.05.2002  15:50            13'824 gnatbl.exe
13.11.2002  15:11           174'592 gnatchop.exe
13.11.2002  15:12           218'624 gnatdll.exe
13.11.2002  15:12         1'250'304 gnatelim.exe
13.11.2002  15:13           293'888 gnatfind.exe
13.11.2002  15:13            50'688 gnatkr.exe
13.11.2002  15:14           187'392 gnatlink.exe
13.11.2002  15:14           162'304 gnatls.exe
13.11.2002  15:14           774'144 gnatmake.exe
13.11.2002  15:15           439'808 gnatmem.exe
13.11.2002  15:16           684'544 gnatname.exe
13.11.2002  15:16           158'208 gnatprep.exe
13.11.2002  15:17            96'768 gnatpsta.exe
13.11.2002  15:21           191'488 gnatreg.exe
13.11.2002  15:17         1'181'696 gnatstub.exe
13.11.2002  15:17           292'864 gnatxref.exe
27.05.2002  17:47           366'592 gprof.exe
23.05.2002  14:35         2'426'368 gvd.exe
28.05.2002  16:11           463'872 ld.exe
29.01.2002  17:54           117'760 make.exe
27.05.2002  17:47           312'832 nm.exe
27.05.2002  17:47           428'544 objcopy.exe
27.05.2002  17:47           505'344 objdump.exe
27.05.2002  17:47           277'504 ranlib.exe
27.05.2002  17:47           262'144 size.exe
27.05.2002  17:47           261'632 strings.exe
27.05.2002  17:47           428'544 strip.exe
29.01.2002  08:53            34'304 winps.exe

Indeed I obtained that directory result. Now what: how to read GNAT’s mind to proceed?

The question remains the same in the subject line. Either volunteer responders do not read the subject line, the subject line is imperfectly written and unclear, or there is no forum answer which bodes ill.

You are there. Say your main program is hello.adb. You type: gnatmake hello.

For gnat-3.15p (2002), my test results for main_000.adB as the complex test harness of 82 cases are:
1.1. 30-warnings
1.2. 564K exe file size
1.3. failure to pass one test case, but wo line warning for the respective code block.

I am not paid to do QA research on a 23-year old Gov’t funded product sold by AdaCore.

Lessons learned are:
2.1. gnat-3.15p produces exe code size at 152% larger than Janus/Ada 95 (JA95).
2.2. gnat-3.15p failed to process correctly one of 82 test cases and without warning.
2.3. JA95 implemented in 80386 assembler is more reliable than gnat-3.15p implemented in C (gcc).

What follows is to find another free gnat compiler for Ada 95 without induced errors.

What code optimization option did you use?

Any details?
Which warning did you expect?
Some GNAT warnings are enabled through options. You get the full list by typing just gnatmake on the command line.

My experiment did not use code optimization for either gnat-3.15p or for JA95 3.21a to keep conditions the same.

The particular test failed in gnat-3.15p with no warning or errors reported. I am not supplying the instant code which is proprietary but can be purchased for $497 as a onesy. The particular test is in the simple conditional form of: IF observed_str = expected_str THEN test_pass_is_true_chr ;. The same Ada code is correct with no runtime problems, and correctly passed as expected in JA95. Hence no warnings were anticipated from gnat-3.15p, assuming it was also perfect.

Maybe AdaCore should submit gnat-3.15p to Barne’s SPARK and Taft’s Whatever to find the compiler error. Was such an endeavor documented in an academic report somewhere, in other words, results for validate-the-validater-by-the-validater? For gnatmake.exe switches, I counted about 130 unique single options. That level of complexity and indirection should certainly stress test the tools, namely, the veracity of gcc and its invokers.

(As a side note, from my rendition in bivalent mathematical logic of the subsequently stated pre- and post-condition theory adopted by AdaCore, it is not a theorem but maybe nearly so. As Knuth is prone to say, “Close, but no cigar”. Moreover, AdaCore has no published bivalent proof of the same as such and available to me.)

Most likely there is an uninitialized variable in the code and the JA95-compiled program seems to work because that variable happens to have a certain value due to the local state of the memory when the variable starts to exist.

Sheer speculation, as AdaCore does not advertise that gnat-3.15 was validated as perfect by SPARK. (In fact others found that gnat-3.15 output does not match Janus/Ada95, before I independently discovered this.)
Moreover I don’t see any academic papers that AdaCore validates any of its GNAT products by SPARK. For example, SPARK cannot validate itself. This means SPARK is a purely academic pursuit which is already admitted with no mathematical logic proof for its pre- and post-condition theory.
What follows is that GNAT compilers cannot claim 100% reliability which is very sad for mission critical applications.

Prior to SPARK 2014, the original SPARK Examiner tool by Praxis High Integrity Systems was actually written in SPARK.

Regarding GNAT, while much of the compiler is not proven using SPARK, AdaCore has mentioned that they do run their static analyzers (eg GNATProve ) on the compiler and other tools. I recall reading somewhere that some of the Ada runtime libraries in GNAT have SPARK variants available.

1 Like