Subject: CVS commit: pkgsrc/lang/gnucobol
From: Frederic Cambus
Date: 2020-12-10 19:09:34
Message id: 20201210180934.CACB1FA9D@cvs.NetBSD.org

Log Message:
gnucobol: update to 3.1.1.

Pkgsrc changes:

- Follow redirects (open-cobol -> gnucobol) for MASTER_SITES and HOMEPAGE
- Add a test target

ChangeLog:

 GnuCOBOL 3.1.1 released (20201208)
 GnuCOBOL 3.1 released (20201111) had issues that were fixed

* New GnuCOBOL features

** XML GENERATE statement
   (note: runtime support needs additional library libxml2)

** JSON GENERATE statement
   (note: runtime support needs additional library cJSON or JSON-C)

** CONTINUE AFTER statement (COBOL 202x) implemented, also handle fractions
   of seconds in C$SLEEP now

** TYPEDEF and SAME AS (COBOL 2002) implemented, including the MicroFocus
   and RM/COBOL variants

** >>TURN (COBOL 2002) directive implemented, allowing some exception checks
   to be turned on/off per source as desired

** Improved support for different compiler extensions (ACUCOBOL, IBM,
   Fujitsu, MicroFocus COBOL, Microsoft COBOL, RM/COBOL, CA Realia and more)

** file handling: include support for a callable EXTFH interface also provided
   by several compilers including Micro Focus
   This allows users to insert an external file handler while retaining
   all of the normal COBOL I/O functions with a possible callback to libcob.
   To have the compiled program call `yourfh()` for file I/O use:
   `cobc -fcallfh=yourfh`
   In turn `yourfh()` may call `EXTFH()` to use I/O functions from GnuCOBOL.
   The external file handler can also be directly invoked from COBOL, too,
   using `CALL "EXTFH"`.
   ** Note: Not each flag contained in the FCD3 is handled already **

** file handling: added support for [RE]WRITE FILE file FROM source

** file handling: name mapping adjusted (improved MF and ACU-compatibility):
   entries starting with a period or number are not resolved any more,
   periods in the external identifier are always replaced by underscore
    -> MY.FILE is resolved by DD_MY_FILE, dd_MY_FILE, MIFILE now;
   prefixes "-F " and "-D " are removed from external names;
   if filename is not absolute after translation, COB_FILE_PATH is now
   still applied;
   File name mapping now applies both to COBOL statements and CALLable
   CBL_ and C$ file routines.

** Screen I/O: initial mouse support (for details see runtime.cfg),
   use of CURSOR clause in SPECIAL-NAMES for positioning on ACCEPT

** on abort a stack trace will be genereated, this can be suppressed by
   runtime configuration option COB_STRACK_TRACE

** the dump that is generated on abort (depending on -fdump at compile-time)
   was heavily improved and combines consecutive identical OCCURS items,
   leading to smaller dump files

** changes in handling COPY statement:
   * copybook names that contain an extension aren't searched with additional
     extensions [as post-rc1-change this may be set to old behaviour by
     defining COB_MULTI_EXTENSION when building GnuCOBOL/cobc]
   * library names are now tested for environment "COB_COPY_LIB_libname",
     allowing the directory to specified externally (also as no-directory
     by exporting with empty value) and has a fallback (with a warning) to
     be effectively ignored (as previous versions did this)

* Removed functions

** SCREEN SECTION, REPORT-WRITER module: removed non-standard extension
   "LINE / COL signed-integer" (inadvertently available since 2.2/3.0rc1);
   which will now raise an error "unsigned integer expected";
   if used replace by standard "LINE / COL +/- integer"

* Obsolete features (will be removed in the next version if no explicit user
  requests are raised)

** support for Borland C compiler and linker
** -fif-cutoff flag for cobc (currently disabled, see entry below in 3.0rc1)
** old OpenCOBOL-only-EXTFH

* Changes to the COBOL compiler (cobc) options:

** new options:
   -f[no]-ec=exception-name to tune the exception checks similar to the >>TURN
       directive, you may also leave out the "EC-" prefix here, example to
       enable all checks but disable all bound checks but OCCURS DEPENDING ON:
       cobc -debug -fno-ec=bound -fec=bound-odo

** adjustments to warning options:
   -Wextra "new" option to enable every possible warning that is not \ 
dialect
       specific (this option used to be called -W)
   -Wadditional  new warning group for all warnings that don't have a group
       on their own
   -Wno-error and -Wno-error=<warning> to treat (specific \ 
<warning>s) not as error
   -Wdangling-text for raising the warning "source text after program \ 
area",
       not included in -Wall any more
   -Wno-ignored-error allows to suppress messages that normally would be an
       error and are only allowed because they are never executed
   -Wimplicit-define and -Wcorresponding are now enabled by default

   -f[no]-diagnostics-show-option, enabled by default, shows the
    command line option responsible for the diagnostic message

   extra information to a warning (or error) is now marked as "note:"

** the interal Xref got a huge speedup, has all references in ascending order
   now and includes the total amount of direct references

** the interal listing got a speedup and has all error references in
   ascending order now

** cobc -g (and configure --enable-debug) use the most expressive
   debugging options available on the system

** cobc -g now auto-includes references to the COBOL source file and to
   all ENTRY and SECTION elements to ease source level debugging

* Changes in the COBOL runtime (libcob)

** Messages from the COBOL runtime are also translated now (if installed).
   To prevent this disable translations in general with using the configure
   option --disable-nls (or by deactivating ENABLE_NLS in config.h).

** libcob.h does no longer auto-include gmp.h (behavior since 2.x), if you link
   against libcob and need cob_decimal include gmp.h/mpir.h yourself before;
   otherwise you do not need it in your include path any more

** execution times of INSPECT and INITIALIZE with OCCURS were heavily cut down

** convenience functions for direct C access to COBOL fields and for debugging
   were added, see new C-API documentation

** first-time file-locking under Win32

** Breaking change: previously the return-code of registered error handlers
   (by CBL_ERROR_PROC) were ignored. This was changed according to the
   documentation for CBL_ERROR_PROC -> a RETURN-VALUE of ZERO skips further
   error handlers to be called, including the internal one.

* New build features

** Running the internal tests by make check now fails if the testsuite has any
   unexpected result.

** The modules and test programs in the NIST COBOL-85 test suite (tests/cobol85)
   may now be build and/or tested and/or the test results checked separately.
   You now may also run the tests with a previous installed version of GnuCOBOL
   (or a version specified by a manual temporary setup).
   For details see tests/cobol85/README.

** new configure option --with-math=ARG to specify which math multiple precision
   library is to be used, where ARG may be: check (default), gmp, mpir

** new configure options --with-xml2 / -without-xml2 to explicit force/disable
   XML runtime support, otherwise it will be included if found as working

** new configure option --with-json / -without-json to explicit force/disable
   JSON runtime support, otherwise it will be included if found as working
   Note: As a special case you may built-in cJSON by placing its source in
   the folder "libcob". If it is included there, this version will be \ 
compiled
   into libcob. It may be enforced with --with-json=local,
   like --with-json=cjson and --with-json=json-c enforce the given library.

** To adjust the build system for GMP/MPIR you may use the new variables
   GMP_CFLAGS / MPIR_CFLAGS and GMP_LIBS / MPIR_LIBS.
   If unset configure will try pkg-config.

** To adjust configure to use libxml2 you may use the new variables XML2_CFLAGS
   and XML2_LIBS. If unset configure will use pkg-config / xml2-config.

** To adjust configure to use libcjson you may use the new variables CJSON_CFLAGS
   and CJSON_LIBS, similar JSON_C_CFLAGS and JSON_C_LIBS for libjson-c.
   If unset configure will use pkg-config.

** new configure option --enable-hardening to either enable GNU C's
   hardening options or leave as-is, or disable (which previous versions
   effectively did)

** build system: defaults.h is not created or included any more, all configure
   provided defines are now found in the single header config.h

** Any time after `make` you can call `pre-inst-env` script to use the still-
   uninstalled binaries. Samples:
   pre-inst-env cobc -xj prog.cob
   pre-inst-env cobcrun -M prog start
   pre-inst-env may also be called without parameters to start a new shell
   session with the environment adjusted to use the uninstalled version.

* Too much bug fixes to list here (please check ChangeLogs for full details),
  includes the following CVEs:

** compiler (may be triggered with special crafted source files)
   CVE-2019-14468, CVE-2019-14486, CVE-2019-14528, CVE-2019-14541,
   CVE-2019-16396, CVE-2019-16395

* GnuCOBOL's getopt implementation honors POSIXLY_CORRECT now:
  if set to any value the option parsing in cobc, cobcrun and CBL_GC_GETOPT
  stops at the first nonoption, otherwise it stays with the old behaviour and
  re-orders nonoptions to the end)

* Known issues in 3.1

** testsuite:
  * if built with vbisam, cisam or disam, depending on the version used, some
    tests will lead to UNEXPECTED PASS, while others may fail
  * possibly failing tests (false positives):
    * temporary path invalid
    * compiler outputs (assembler)
    * compile from stdin
  * NIST: OBNC1M.CBL false positive (the test runner uses a nonportable way of
    emulating a program kill)

** the recent additions of ">> TURN" and "variable LIKE \ 
variable" may not work
   as expected in all cases

** features that are known to not be portable to every environment yet
   (especially when using a different compiler than GCC)
    * function with variable-length RETURNING item
    * USAGE POINTER, which may need to be manually aligned

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 GnuCOBOL 3.0-rc1 released (20180422)

* New GnuCOBOL features

** REPORTWRITER module added

** INDEXED file handling: added support for sparse and split keys

** file handling: added support for [RE]WRITE FILE file FROM source

** DISPLAY ... UPON PRINTER may be redirected to an external command
   (new runtime configuration COB_DISPLAY_PRINT_PIPE) or appended to a file
   (new runtime configuration COB_DISPLAY_PRINT_FILE, which takes precedence)

** XML GENERATE statement
   (note: runtime support needs additional library libxml2)

** JSON GENERATE statement
   (note: runtime support needs additional library cJSON)

** Improved support for different compiler extensions (ACUCOBOL, IBM,
   Fujitsu, MicroFocus COBOL, Microsoft COBOL, RM/COBOL and more)

** Parser support for many features of different compilers, for example
   PIC 1 / USAGE BIT, ACUCOBOL extensions for graphical controls
   VALIDATE statement and much more.
   Most of them will be fully implemented in a later version...

** Option to dump (partial) data of modules on abort.
   Use new cobc option -fdump=<scope> to prepare the module and optional
   use new runtime configuration options COB_DUMP_FILE and COB_DUMP_WIDTH
   to adjust the dump.

** C interface: new functions cob_set_runtime_option / cob_get_runtime_option
   to set/get special runtime options (currently FILE * for trace and printer
   output) or to reload the runtime configuration after changing environment

** file handling: include support for a callable EXTFH interface also provided
   by several compilers including Micro Focus
   This allows users to insert an external file handler while retaining
   all of the normal COBOL I/O functions with a possible callback to libcob.
   To have the compiled program call `yourfh()` for file I/O use:
   `cobc -fcallfh=yourfh`
   In turn `yourfh()` may call `EXTFH()` to use I/O functions from GnuCOBOL.
   The external file handler can also be directly invoked from COBOL, too,
   using `CALL "EXTFH"`.
   ** Note: Not all flags contained in the FCD3 are handled already **

* Changed cobc options:

** The option -debug (runtime checks) no longer implies -ftrace (option to
   trace program flow of the generated module with COB_SET_TRACE).
   You may specify -ftrace[all] along -debug if you want to use this feature.

** The option -E (preprocess file) does not imply an output file any more.
   If no output file is explicit specified with -o filename.i the output will
   be written to stdout (behavior of versions 1.1 is restored).
   Requesting output to stdout explicit by using a dash as output name is
   also possible.

** Changed options for listing:
   The option -tsymbols was replaced by -ftsymbols and therefore can now also
   be explicit deactivated by specifying -fno-tsymbols.
   New options for suppressing (or explicit requesting) parts of the listing:
   -fno-theader    suppress all headers from listing while keeping page breaks
   -fno-tmessages  suppress warning and error summary from listing
   -fno-tsource    suppress actual source from listing (for example to only
                   produce the cross-reference)

** The option -fif-cutoff (option to change generated C sources to use
   a label + goto for nested if/else) was deactivated to allow the C compiler
   to fully control the program flow.
   ** Please report if you have a need for this option as it will be **
   ** removed permanently in the next release of GnuCOBOL otherwise. **

* Changes in the COBOL runtime (libcob)

** updated exception handling, GnuCOBOL now only cleans raised exceptions when
   requested by SET LAST EXCEPTION TO OFF

** The standard-format for program tracing was changed and is now adjustable
   by the runtime configuration option COB_TRACE_FORMAT.

* New build features

** New test suite for manual tests (especially SCREEN I/O),
   run with `make checkmanual`.
   Note: You may want to adjust the test runner tests/run_prog_manual.sh which
   defaults to xterm in GUI environments and screen in terminal environments.

** new configure option --enable-debug-log to allow *internal* tracing
   of GnuCOBOL (intended for developers of GnuCOBOL only)

* Too much bug fixes to list here (please check ChangeLogs for full details).

Files:
RevisionActionfile
1.6modifypkgsrc/lang/gnucobol/distinfo
1.8modifypkgsrc/lang/gnucobol/Makefile