home *** CD-ROM | disk | FTP | other *** search
/ Freelog 22 / freelog 22.iso / Prog / Djgpp / GPC2952B.ZIP / doc / gpc / news < prev    next >
Encoding:
Text File  |  2001-02-08  |  29.6 KB  |  968 lines

  1. This file was generated automatically from news.texi.
  2. DO NOT CHANGE THIS FILE MANUALLY!
  3.  
  4. GPC Announcement
  5. ****************
  6.  
  7. @@ The first section will have to be changed according to the actual
  8. release.
  9.  
  10. This is the announcement of
  11.  
  12.      GNU Pascal, beta version gpc-200006xx
  13.  
  14. which is now available from
  15.  
  16.      `ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/beta/'.
  17.  
  18. Binaries for various platforms are available in a subdirectory
  19. `binary/'.  These platforms include:
  20.  
  21.    - i586-pc-linux-gnulibc1
  22.  
  23.    - i586-pc-linux-gnu
  24.  
  25.    - alpha-unknown-linux-gnu
  26.  
  27.    - alphaev56-dec-osf4.0d
  28.  
  29.    - mips-sgi-irix6.2
  30.  
  31.    - sparc-sun-solaris2.6
  32.  
  33.    - i386-pc-djgppv201 (MS-DOS)
  34.  
  35. Binaries for more platforms, including ix86-mingw32 (MS-Windows 9x/NT)
  36. and sparc-sun-solaris2.5.1 will follow soon and be announced separately.
  37.  
  38. This is meant to be almost the final beta release before the release of
  39. GPC 2.1. Unless users are experiencing serious problems with it, a
  40. final beta version will follow soon which will be identical to GPC 2.1
  41. modulo possible bug fixes.
  42.  
  43. If you have problems with this release or urgent suggestions for GPC
  44. 2.1, please contact us at the GPC mailing list <gpc@gnu.de> immediately.
  45.  
  46. About GNU Pascal
  47. ****************
  48.  
  49. Welcome to GNU Pascal, the free 32/64-bit Pascal compiler of the GNU
  50. Compiler Collection (GNU CC or GCC). It combines a Pascal front-end with
  51. the proven GCC back-end for code generation and optimization.  Other
  52. compilers in the collection currently include compilers for the Ada, C,
  53. C++, Objective C, Chill, FORTRAN, and Java languages. Unlike utilities
  54. such as p2c, this is a true compiler, not just a converter.
  55.  
  56. This version of GPC corresponds to GCC version 2.95.x.
  57.  
  58. The purpose of the GNU Pascal project is to produce a Pascal compiler
  59. (called GNU Pascal or GPC) which
  60.  
  61.    * combines the clarity of Pascal with powerful tools suitable for
  62.      real-life programming,
  63.  
  64.    * supports both the Pascal standard and the Extended Pascal standard
  65.      as defined by ISO, ANSI and IEEE (ISO 7185:1990, ISO/IEC
  66.      10206:1991, ANSI/IEEE 770X3.160-1989),
  67.  
  68.    * supports other Pascal standards (UCSD Pascal, Borland Pascal,
  69.      Pascal-SC) in so far as this serves the goal of clarity and
  70.      usability,
  71.  
  72.    * may be distributed under GNU license conditions, and
  73.  
  74.    * can generate code for and run on any computer for which the GNU C
  75.      compiler can generate code and run on.
  76.  
  77. Pascal was originally designed for teaching. GNU Pascal provides a
  78. smooth way to proceed to challenging programming tasks without learning
  79. a completely different language.
  80.  
  81. The current release implements Standard Pascal (ISO 7185, level 1), a
  82. large subset of Extended Pascal (ISO 10206, aiming for full
  83. compliance), is highly compatible to Borland Pascal (version 7.0) with
  84. some Delphi extensions, and provides a lot of useful GNU extensions.
  85.  
  86. For more information about GNU Pascal, see
  87.      `http://home.pages.de/~GNU-Pascal/'
  88.  
  89. There's a large number of bug fixes, too many to mention here. They are
  90. listed in the `Fixed Bugs' section of the GPC To-Do list
  91. (http://agnes.dida.physik.uni-essen.de/~gnu-pascal/todo.html).
  92.  
  93. The most important bugs fixed include the unit/module initialization
  94. done in the wrong order, and not working at all on some systems, the
  95. global goto bug, some "two-unit bugs" and a number of BP compatibility
  96. issues.
  97.  
  98. There's a number of new or changed features which are listed in the
  99. following sections. Features without further description refer to new
  100. routines or options.
  101.  
  102. General Changes And Possible Incompatibilies with Previous Versions
  103. ===================================================================
  104.  
  105. This release of GPC has been cleaned up substantially. Consequently, a
  106. few old and obsolete features have been dropped or replaced by cleaner,
  107. more flexible or otherwise more useful ones. This might lead to minor
  108. problems with old programs, but we suppose they're very rare (many
  109. programmers might not even know about the old features) and easy to
  110. overcome. The most important ones are listed here, the rest of them is
  111. contained in the following sections and marked with `(@)'.
  112.  
  113.    * The executables `bpc', `pc' and `epc' have been dropped. What they
  114.      did was equivalent to `gpc --borland-pascal', `gpc
  115.      --standard-pascal' or `gpc --extended-pascal', respectively, and
  116.      you can use these forms now. If you need them often, you can put
  117.      them in scripts or aliases called `bpc' etc., of course.
  118.  
  119.    * `asmname' in variable and constant declarations must now come
  120.      after the type (e.g. `var foo : Integer = 42; asmname 'bar';').
  121.      Furthermore, `asmname' doesn't imply `external' anymore for
  122.      variables.
  123.  
  124.    * The internal file handling in the RTS was changed from using
  125.      `FILE *' pointers to integer file handles, to make it more
  126.      efficient and to get rid of some problems. Accordingly, the
  127.      `CFile' field in `BindingType' was replaced by a `Handle' field,
  128.      the `AssignCFile' procedure by an `AssignHandle' procedure, and
  129.      the `GetFile' function was removed (a substitute is the function
  130.      `FileHandle' which has already existed in previous releases).
  131.  
  132.    * The option `--no-nested-comments' (to allow comments like `{ *)'
  133.      as the standard requires) has been renamed to `--mixed-comments'
  134.      (note the inverted value). Accordingly, the compiler directives
  135.      `{$N+}' and `{$N-}' have been renamed to `{$no-mixed-comments}' and
  136.      `{$mixed-comments}'. The default, when no dialect options are
  137.      given, is still `--no-mixed-comments' (i.e., what used to be
  138.      `--nested-comments').
  139.  
  140.    * A new option `--nested-comments' to allow real nested comments
  141.      like `{ { } }' (also available as a compiler switch, like almost
  142.      all command-line options). Note the new meaning of this switch, so
  143.      if you used it before, you'll probably have to change it to
  144.      `--no-mixed-comments' (see above). If nested comments are enabled,
  145.      comments are also allowed within compiler directives and macros -
  146.      however, compiler directives within other compiler directives are
  147.      still not allowed, and compiler directives within comments are, of
  148.      course, still ignored.
  149.  
  150.    * C style character escapes (`\n', `\007' etc.) are now the default
  151.      for strings enclosed in double quotes, while single quoted strings
  152.      do not allow them (according to the standard).  Accordingly, a
  153.      verbatim `"' in a double quoted string is now obtained with `\"'
  154.      rather than `""' (but a verbatim `'' in a single quoted string
  155.      still with `''', of course). Therefore, the option
  156.      `--[no-]char-escapes' and the compiler directives `{$E+}'/`{$E-}'
  157.      have been dropped.  If you used these features, please change to
  158.      the appropriate kind of quotes.
  159.  
  160.    * Macros are no more expanded in `--borland-pascal' and `--delphi'
  161.      modes. Expanding them causes a few problems with strange sources
  162.      written for BP which use the same name for a conditional define
  163.      and an identifier. Macros can be turned on/off, independently of
  164.      the dialect, with the new switches `--[no-]macros'. (B)
  165.  
  166.    * Macros and conditionals defined with `{$define}' are now
  167.      case-insensitive. (B) Macros and conditionals defined with
  168.      `--define' on the command line are still case-sensitive for
  169.      compatibility to other GNU compilers. In addition, GPC provides
  170.      `{$csdefine}' or `--csdefine' and `{$cidefine}' or `--cidefine' to
  171.      define case sensitive or insensitive macros or conditionals,
  172.      respectively. If you have defined macros or conditionals with
  173.      `{$define}' and rely on them being case-sensitive, change it to
  174.      `{$csdefine}' now.
  175.  
  176.    * The mechanism for including GPC code into code written in other
  177.      languages has changed and is now more robust. A header gpc-in-c.h
  178.      is provided for inclusion of GPC code into C programs, and a demo
  179.      program GPC_C_Pas (together with C code calling it) is supplied to
  180.      demonstrate this. (Including C code into GPC programs works as
  181.      before.)
  182.  
  183.    * The preprocessor is now called `gpcpp' (it was `gpc-cpp' before).
  184.      If you have installed an older GPC version, please remove gpc-cpp
  185.      now. If you have any scripts that refer to gpc-cpp directly,
  186.      change the reference to gpcpp. If you use DJGPP, and you added the
  187.      GPC specific sections to djgpp.env as described in the FAQ, please
  188.      change `[gpc-cpp]' to `[gpcpp]'.
  189.  
  190.    * In `--borland-pascal' mode, GPC now ignores everything after
  191.      `end.'. (This also takes care of "^Z" characters at the end of Dos
  192.      text files). In particular, multiple units or modules in one file
  193.      don't work anymore in `--borland-pascal' mode. (B)
  194.  
  195. Command Line Options and Compiler Directives
  196. ============================================
  197.  
  198.    * `{$ifopt}' works now, with short directives like in BP (`{$ifopt
  199.      X+}') (B) and also with long directives (`{$ifopt
  200.      extended-syntax}')
  201.  
  202.    * Local compiler directives and defines can be specified with
  203.      `{$local}' and `{$endlocal}'.
  204.  
  205.    * Delphi (or C++) style `//' comments in default and `--delphi'
  206.      modes, and a switch `--[no-]delphi-comments' to turn them on/off
  207.      explicitly. (D)
  208.  
  209.    * -W[no-]typed-const (warn about BP style misuse of typed constants)
  210.  
  211.    * -W[no-]near-far (warn about use of the obsolete BP compatible
  212.      `near' and `far' directives)
  213.  
  214.    * -W[no-]underscore (warn about double/leading/trailing underscores
  215.      in identifiers)
  216.  
  217.    * -W[no-]mixed-comments (warn about use of mixed comments)
  218.  
  219.    * -W[no-]nested-comments (warn about use of nested comments)
  220.  
  221.    * -W[no-]field-name-problem (don't warn about a problem with field
  222.      names)
  223.  
  224.    * -W[no-]object-directives (don't warn about unimplemented
  225.      `private', `protected' and `public' directives)
  226.  
  227.    * -W[no-]warnings (enable/disable warnings)
  228.  
  229.    * All `-Wfoo' warning options also work as `{$W foo}' compiler
  230.      directives. In contrast to the last alpha release, there must now
  231.      be a space after the `W'. (@)
  232.  
  233.    * -no-default-paths (disable standard unit etc. paths)
  234.  
  235.    * -no-unit-path, -no-object-path (disable any unit/object paths
  236.      given so far)
  237.  
  238.    * -[no-]io-checking (same as `{$I+}', `{$I-}')
  239.  
  240.    * -[no-]stack-checking, also as compiler directives
  241.      `{$[no-]stack-checking}' or `{$S+}'/`{$S-}' (B)
  242.  
  243.    * -[no-]typed-address, also as compiler directives
  244.      `{$[no-]typed-address}' or `{$T+}'/`{$T-}' (B)
  245.  
  246.    * -[no-]transparent-file-names (derive the external file names from
  247.      the file variable names
  248.  
  249.    * -[no-]progress-messages, -[no-]progress-bar (output information to
  250.      give progress messages or display a progress bar while compiling,
  251.      using suitable utilities)
  252.  
  253.    * {$[no-]debug-statement[=foo]} (call a procedure automatically
  254.      before each statement for debugging)
  255.  
  256.    * The `--[no-]c-numbers' switch has been removed. If you really used
  257.      C style octal or hex numbers (`0400', `0xf00'), you can easily
  258.      convert them to the Extended Pascal notation (`8#400', `16#f00')
  259.      or (hex only) to the Borland Pascal notation (`$foo'). (@)
  260.  
  261.    * `{$gnu-pascal}' is now completely equivalent to `--gnu-pascal';
  262.      `{$gnu-pascal}' has been added to all units shipped with GPC, so
  263.      they can also be compiled when `--borland-pascal' or other dialect
  264.      options are given on the command line.
  265.  
  266.    * `{$if}' directives now understand Pascal operators like `and',
  267.      `or', `not' (C operators are also still understood).
  268.  
  269.    * `{$P+}'/`{$P-}' was replaced by `{$[no-]pedantic}' (or
  270.      `--[no-]pedantic' on the command line)
  271.  
  272.    * The single-letter compiler directives are now BP compatible.
  273.      Those that are not meaningful or not necessary in GPC (e.g.
  274.      `{$F+}', `{$O...}', or `{$M}' with only numbers following) are
  275.      ignored in `--borland-pascal' mode and warned about otherwise. (B)
  276.      Note: `{$W+}'/`{$W-}' is now also ignored in `--borland-pascal'
  277.      mode (it is the only single-letter directive left that has a
  278.      different meaning in BP and in GPC, and besides, the BP meaning
  279.      can be safely ignored in GPC).  To enable/disable warnings in
  280.      `--borland-pascal' mode, you can use `{$W [no-]warnings}' now. (@)
  281.  
  282.    * The RTS command line options are now also available as long
  283.      options; new RTS options `--version' (print RTS version and exit),
  284.      `--abort-on-error' (abort with SIGABRT on runtime error),
  285.      `--error-file', `--error-fd' (dump runtime error messages and
  286.      strack trace to given file name or FD).
  287.  
  288.    * RTS command line options are now recognized after `--gpc-rts'
  289.      instead of `-Grts'. Also, a single option can be given with
  290.      `--gpc-rts=OPTION'. This is allowed multiple times. (@)
  291.  
  292.    * Files with `.pp' or `.dpr' extension are recognized as Pascal
  293.      sources. (D)
  294.  
  295.  
  296. Compiler and RTS Built-in Declarations
  297. ======================================
  298.  
  299.    * Syntax:
  300.  
  301.         - `shl' and `shr' can also be used as procedures now.
  302.  
  303.         - `mod' with negative right operand now works like in BP.  (B)
  304.  
  305.         - Expressions like `-2 * +3' are now allowed without
  306.           parentheses. (B)
  307.  
  308.         - `register' directive
  309.  
  310.         - Directives with double underscores like `__asmname__',
  311.           `__inline__' have been dropped. The same directives without
  312.           underscores have been available for a long time. Furthermore,
  313.           GPC now supports `^const' to create a pointer to a constant
  314.           (which could be done in a C like fashion with the `__const__'
  315.           directive before). (@)
  316.  
  317.         - `uses' and `import' may now occur multiple times in a
  318.           program, unit/module interface or unit/module implementation,
  319.           even between declarations.
  320.  
  321.    * Types:
  322.  
  323.         - ByteBool, ShortBool, WordBool, MedBool, LongBool, LongestBool,
  324.           Boolean(42) (D?)
  325.  
  326.         - Type qualifiers like `__byte__' or `__unsigned__' have been
  327.           dropped. GPC has been supporting "real" type names like
  328.           `Byte' or `ByteWord' for a long time, and it's easy to change
  329.           to them. Similar for `__cstring__' and `__void__' where
  330.           `CString' and `Void' are available. (@)
  331.  
  332.         - `nil' is accepted as a value of any procedural/functional
  333.           type (B)
  334.  
  335.  
  336. Some of the following declarations are built into the compiler, others
  337. are declared in the `GPC' module.
  338.  
  339.    * Files and I/O:
  340.  
  341.         - SeekEOF, SeekEOLn (B)
  342.  
  343.         - IOErrorFile
  344.  
  345.         - New parameter `ElementSize' to ReverseBytes,
  346.           ConvertFromLittleEndian, ConvertFromBigEndian,
  347.           ConvertToLittleEndian, ConvertToBigEndian,
  348.           BlockReadLittleEndian, BlockReadBigEndian,
  349.           BlockWriteLittleEndian, BlockWriteBigEndian (@)
  350.  
  351.         - ReadStringLittleEndian
  352.  
  353.         - ReadStringBigEndian
  354.  
  355.         - WriteStringLittleEndian
  356.  
  357.         - WriteStringBigEndian
  358.  
  359.         - GetTempFileNameInDirectory
  360.  
  361.         - PathExists
  362.  
  363.         - DataDirectoryName
  364.  
  365.         - AssignBinary
  366.  
  367.         - HasWildCardsOrBraces
  368.  
  369.         - BraceExpand
  370.  
  371.         - MultiFileNameMatch
  372.  
  373.         - GlobOn
  374.  
  375.         - MultiGlob
  376.  
  377.         - MultiGlobOn
  378.  
  379.         - QuoteFileName
  380.  
  381.         - UnQuoteFileName
  382.  
  383.         - FExpandQuoted
  384.  
  385.         - ForceAddDirSeparator
  386.  
  387.         - FindNonQuotedChar
  388.  
  389.         - FindNonQuotedStr
  390.  
  391.         - NameExtFromPath
  392.  
  393.         - SystemInfo
  394.  
  395.         - GetMountPoint
  396.  
  397.         - FileMove
  398.  
  399.         - ChMod
  400.  
  401.         - IOSelect
  402.  
  403.         - IOSelectRead
  404.  
  405.         - FileNameLoCase
  406.  
  407.         - FileNamesCaseSensitive (constant)
  408.  
  409.         - DirRoot (constant)
  410.  
  411.         - MaskNoStdDir (constant)
  412.  
  413.         - QuotingCharacter (constant)
  414.  
  415.         - EnvVarChars (constant)
  416.  
  417.         - EnvVarCharsFirst (constant)
  418.  
  419.         - WildCardChars (constant)
  420.  
  421.         - FileNameSpecialChars (constant)
  422.  
  423.         - ShellExecCommand (constant)
  424.  
  425.         - DataReady renamed to CanRead (@)
  426.  
  427.         - FileLock, FileUnlock
  428.  
  429.         - MemoryMap, MemoryUnMap
  430.  
  431.         - New parameter `Quoted' to RelativePath (@)
  432.  
  433.         - New parameter `Prefix' to ConfigFileName (@)
  434.  
  435.         - New parameter `AccessTime' to SetFileName (@)
  436.  
  437.         - ExpandEnvironment recognizes `~user'
  438.  
  439.         - Each of the parameters `Dir', `Name' and `Ext' to `FSplit'
  440.           may now be null.
  441.  
  442.         - New fields `User', `Group', `Mode', `Device', `INode',
  443.           `SymLink', `TextBinary' and `Special' in BindingType
  444.  
  445.         - The variable `TextFilesBinary' has been dropped. Instead, you
  446.           can now use the procedure `AssignBinary' or the field
  447.           `TextBinary' in BindingType. (@)
  448.  
  449.         - File sizes can now be bigger than `Integer' (e.g. 64 bit
  450.           files on 32 bit machines) if supported by the OS via
  451.           lseek64() or llseek() (e.g. Linux, Solaris, IRIX).
  452.  
  453.         - Renamed the file mode constants from `fmFOO' to `fm_FOO'. (@)
  454.  
  455.         - `GetIOErrorMessage' now returns a string rather than a
  456.           `CString'. (@)
  457.  
  458.         - In `GlobBuffer', the fields `Count' and `Result' (pointer to
  459.           an array of `CString's, 0 baser) were replaced by `Result', a
  460.           pointer to an array of pointers to strings, 1 based). (@)
  461.  
  462.    * Strings:
  463.  
  464.         - Integer2String
  465.  
  466.         - IsUpCase
  467.  
  468.         - IsLoCase
  469.  
  470.         - IsAlpha
  471.  
  472.         - IsAlphaNum
  473.  
  474.         - IsAlphaNumUnderscore
  475.  
  476.         - IsSpace
  477.  
  478.         - IsPrintable
  479.  
  480.         - Renamed the CString routines in the RTS so they get a
  481.           `CString' prefix, moved the BP compatibility identifiers for
  482.           the same routines into the `Strings' unit (B) (@)
  483.  
  484.         - MemCompCase
  485.  
  486.         - StrEqualCase
  487.  
  488.         - PosCase
  489.  
  490.         - LastPosCase
  491.  
  492.         - PosFromCase
  493.  
  494.         - LastPosTillCase
  495.  
  496.         - IsPrefixCase
  497.  
  498.         - IsSuffixCase
  499.  
  500.         - LineBreak (constant)
  501.  
  502.         - SetEnv (makes obsolete libc's PutEnv (@))
  503.  
  504.         - UnSetEnv
  505.  
  506.         - GetCEnvironment
  507.  
  508.         - DisposePPStrings
  509.  
  510.         - `SetLength' does not require extended syntax anymore.
  511.  
  512.         - The environment variable management is now implemented in
  513.           Pascal, so it's independent of libc differences (e.g. the
  514.           presence or not of `environ'). Access via `GetEnv' etc. works
  515.           unchanged.
  516.  
  517.         - The `Environment' variable is now a schema which contains the
  518.           environment variables as CStrings. (@)
  519.  
  520.         - Empty and case-sensitive environment variables are allowed
  521.           within GPC programs even under Dos.
  522.  
  523.    * Random:
  524.  
  525.         - SeedRandom
  526.  
  527.         - SeedRandomPtr (variable)
  528.  
  529.         - Randomize is called automatically when necessary (except when
  530.           using the BP compatible random number generator in the System
  531.           unit (B)).
  532.  
  533.    * Memory:
  534.  
  535.         - ReAlloc; previous ReAlloc function (libc) renamed to CReAlloc
  536.           (@)
  537.  
  538.         - ReAllocPtr (variable)
  539.  
  540.         - ReleaseCount
  541.  
  542.         - AllocateBigMem, DisposeBigMem, MoveToBigMem, MoveFromBigMem,
  543.           MapBigMem for uniform access to big memory blocks for GPC and
  544.           BP (B)
  545.  
  546.    * Time:
  547.  
  548.         - Sleep
  549.  
  550.         - SleepMicroSeconds
  551.  
  552.         - Alarm
  553.  
  554.         - GetCPUTime
  555.  
  556.         - GetMicroSecondTime
  557.  
  558.         - FormatTime
  559.  
  560.         - The constant `MonthLength' was replaced by a function of the
  561.           same name that handles leap years. (@)
  562.  
  563.         - DayOfWeekName (constant)
  564.  
  565.         - InvalidYear (constant)
  566.  
  567.    * Misc:
  568.  
  569.         - Include and Exclude for sets (B)
  570.  
  571.         - IsInfinity
  572.  
  573.         - IsNotANumber
  574.  
  575.         - SplitReal
  576.  
  577.         - ReturnAddress
  578.  
  579.         - FrameAddress
  580.  
  581.         - Runtime errors are now printed with their address to help
  582.           debugging (using addr2line), and the address is stored in
  583.           ErrorAddr. (B)
  584.  
  585.         - RegisterRestoreTerminal
  586.  
  587.         - UnregisterRestoreTerminal
  588.  
  589.         - RestoreTerminal
  590.  
  591.         - ExecuteNoTerminal
  592.  
  593.         - SetProcessGroup
  594.  
  595.         - SetTerminalProcessGroup
  596.  
  597.         - GetTerminalProcessGroup
  598.  
  599.         - GetTerminalName
  600.  
  601.         - SetInputSignals
  602.  
  603.         - GetInputSignals
  604.  
  605.         - GetShellPath
  606.  
  607.         - GetPasswordEntryByName
  608.  
  609.         - GetPasswordEntryByUID
  610.  
  611.         - GetPasswordEntries
  612.  
  613.         - StrSignal
  614.  
  615.         - Kill
  616.  
  617.         - WaitPID
  618.  
  619.         - InstallSignalHandler
  620.  
  621.         - BlockSignal
  622.  
  623.         - SignalBlocked
  624.  
  625.         - Constants for the signals
  626.  
  627.         - UserID
  628.  
  629.         - GroupID
  630.  
  631.         - IllReservedAddress, IllPriviledgedInstruction, IllReservedOp
  632.           were removed. (@)
  633.  
  634.  
  635. GPC Units
  636. =========
  637.  
  638.    * CRT:
  639.  
  640.         - Works now under Cygwin and mingw.
  641.  
  642.         - DJGPP: support for 40 column modes (requires updated PDCurses
  643.           library)
  644.  
  645.         - Renamed the the conditional to get an X11 version from
  646.           XCURSES to X11. (@)
  647.  
  648.         - Renamed GetScreenSize to ScreenSize (WinCRT compatibility)
  649.           (B) (@)
  650.  
  651.         - WindowOrg, WindowSize, Cursor, Origin, InactiveTitle,
  652.           AutoTracking, WindowTitle, (variables), ScrollTo, TrackCursor
  653.           (WinCRT compatibility) (B)
  654.  
  655.         - SimulateBlockCursor, SimulateBlockCursorOff
  656.  
  657.         - Curses is not initialized at the beginning of the program, but
  658.           rather when the first CRT routine is called. (B)
  659.  
  660.         - CRTInit to explicitly initialize CRT and also set some
  661.           defaults (PCCharSet and update level) to more natural (and
  662.           less BP compatible) values.
  663.  
  664.         - CRTSetTerminal
  665.  
  666.         - CRTAutoInitProc (variable)
  667.  
  668.         - CRTNotInitialized
  669.  
  670.         - CRTSavePreviousScreen
  671.  
  672.         - CRTSavePreviousScreenWorks
  673.  
  674.         - Any of the parameters to GetWindow may now be null.
  675.  
  676.         - Support for panels (overlapping windows): GetActivePanel,
  677.           PanelNew, PanelDelete, PanelBindToBackground,
  678.           PanelIsBoundToBackground, PanelActivate, PanelHide, PanelShow,
  679.           PanelHidden, PanelTop, PanelBottom, PanelMoveAbove,
  680.           PanelMoveBelow, PanelAbove, PanelBelow, IgnoreCursor
  681.  
  682.         - Replaced the variables PCCharSet and UseControlChars by
  683.           routines SetPCCharSet, GetPCCharSet, SetControlChars,
  684.           GetControlChars. (@)
  685.  
  686.         - SetScreenSize
  687.  
  688.         - SetMonochrome
  689.  
  690.         - Renamed IsMonoMode to IsMonochrome. (@)
  691.  
  692.         - On ncurses platforms, changing the screen is now done through
  693.           a shell command definable in the environment variable
  694.           `RESIZETERM' (which defaults to `resize', `SVGATextMode' and
  695.           `setfont'). The variables `crt_setfont_command_80_25',
  696.           `crt_setfont_command_80_50', `crt_setfont_command_40_25' and
  697.           `crt_setfont_command_40_50' (Linux only) were removed. (@)
  698.  
  699.         - CRTUpdate
  700.  
  701.         - CRTRedraw
  702.  
  703.         - SetScroll
  704.  
  705.         - CRTSetCursesMode
  706.  
  707.         - RestoreTerminalClearCRT
  708.  
  709.         - CtrlKey
  710.  
  711.         - AltKey
  712.  
  713.         - AltGrKey
  714.  
  715.         - ExtraKey
  716.  
  717.         - constants chCtrlA ... chCtrlZ, kbCtrlA ... kbCtrlZ
  718.  
  719.         - Catch some signals and return pseudo function keys for them if
  720.           CheckBreak is False.
  721.  
  722.         - React to screen size changes by external events and return a
  723.           pseudo function key.
  724.  
  725.         - Reduced the (already small) system-dependent code, and added
  726.           an overview of the few problematic features in the comment at
  727.           the beginning of crt.pas.
  728.  
  729.    * RegEx:
  730.  
  731.         - RegExPosFrom
  732.  
  733.         - CharSet2RegEx
  734.  
  735.         - Support for converting subexpression or complete matching
  736.           references to upper or lower case while replacing them with
  737.           `\u7' or `\l7'.
  738.  
  739.    * GMP:
  740.  
  741.         - mpf_exp
  742.  
  743.         - mpf_ln
  744.  
  745.         - mpf_pow
  746.  
  747.         - mpf_arctan
  748.  
  749.         - mpf_pi
  750.  
  751.         - The unit now works with version 3.x of the GMP library, but it
  752.           also still works with version 2.x.
  753.  
  754.    * System:
  755.  
  756.         - SetTextBuf (B)
  757.  
  758.         - RealToBPReal, BPRealToReal to convert between binary BP
  759.           compatible 6 byte reals and GPC's reals (useful, e.g., for
  760.           binary file exchange with BP programs) (B)
  761.  
  762.         - Ofs, Seg, Ptr, CSeg, DSeg, SSeg, SPtr (mostly useless and only
  763.           for BP compatibility) (B)
  764.  
  765.         - A number of variables like SelectorInc (mostly useless and
  766.           only for BP compatibility) (B)
  767.  
  768.         - Renamed the `__BP_INTEGERS__' conditional to
  769.           `__BP_TYPE_SIZES__'. (@)
  770.  
  771.    * Dos, WinDos:
  772.  
  773.         - GetCBreak
  774.  
  775.         - SetCBreak
  776.  
  777.         - GetVerify
  778.  
  779.         - SetVerify
  780.  
  781.         - Renamed the `_Borland_16_Bit_' conditional to
  782.           `__BP_TYPE_SIZES__'. (@)
  783.  
  784.         - Intr, MsDos, only under DJGPP if `__BP_UNPORTABLE_ROUTINES__'
  785.           is defined. (B)
  786.  
  787.         - DosVersion, SetDate, SetTime, only if
  788.           `__BP_UNPORTABLE_ROUTINES__' is defined (emulated on
  789.           non-DJGPP). (B)
  790.  
  791.    * RegEx:
  792.  
  793.         - In `RegExType', the field `Error' is now of type `PString'
  794.           rather than `CString'. (@)
  795.  
  796.    * Pipe:
  797.  
  798.         - New parameter `Process' to Pipe (@)
  799.  
  800.         - WaitPipeProcess
  801.  
  802.    * PExecute:
  803.  
  804.         - Integrated into the RTS so you don't need a `uses PExecute'
  805.           anymore. (@)
  806.  
  807.    * GetOpt:
  808.  
  809.         - ResetGetOpt
  810.  
  811.         - `GetOptErrorFlag' is now True by default. (@)
  812.  
  813.         - Integrated into the RTS so you don't need a `uses GetOpt'
  814.           anymore. (@)
  815.  
  816.         - Renamed the variables and constants used (see gpc.pas under
  817.           `Command Line Option Parsing'). (@)
  818.  
  819.         - `GetOptLong' can now optionally derive the short options from
  820.           the `LongOptions' array.
  821.  
  822.    * WinCRT:
  823.  
  824.      New unit (identical to CRT) (B)
  825.  
  826.    * HeapMon:
  827.  
  828.      New unit for (simple) heap checking.
  829.  
  830.    * Trap:
  831.  
  832.      New unit for runtime error trapping.
  833.  
  834.    * MD5:
  835.  
  836.      New unit for computing MD5 message digests.
  837.  
  838.    * FileUtils:
  839.  
  840.      New unit with some file and directory utilities.
  841.  
  842.    * StringUtils:
  843.  
  844.      New unit with some string utilities.
  845.  
  846.    * GPC-BP:
  847.  
  848.      A `GPC' unit for BP to provide some GPC compatibility to BP
  849.      programs and make it easier to gradually convert them to GPC. (G)
  850.  
  851.  
  852. A few of the units (in particular: CRT, GMP and RegEx) require
  853. libraries. The sources of the libraries, with small patches where
  854. necessary, as well as binaries for i586-pc-linux-gnu,
  855. i586-pc-linux-gnulibc1, m68k-linux, sparc-sun-solaris2, i386-pc-go32,
  856. i386-pc-cygwin32 and i386-pc-mingw32 are available from
  857.      `ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/libs/'
  858.  
  859. GPC Manual
  860. ==========
  861.  
  862.    * Some very obsolete sections of the manual (e.g., the output of
  863.      running the PVS test suite on an Alpha machine in 1995 ;-) were
  864.      removed.
  865.  
  866.    * The manual was restructured. Several partly overlapping chapters
  867.      were included into the Programmer's Guide, and the overlapping
  868.      material was merged into more coherent sections.
  869.  
  870.    * The BP QuickStart Guide was left a separate chapter and completed
  871.      with a section about differences between BP and GPC, especially
  872.      mentioning endianness issues.
  873.  
  874.    * A lot of new material was added to the `Programming' and
  875.      `Reference' chapters.
  876.  
  877.    * The list of command-line options and the list of keywords for the
  878.      various dialects were updated, and from now on, they are
  879.      automatically kept up to date, directly from the source. The
  880.      `Invoking GPC' chapter does not contain all options inherited from
  881.      GCC anymore (these can be found in the GCC manual, anyway), but
  882.      rather more extensive descriptions of the most commonly used GPC
  883.      options, with examples.
  884.  
  885.    * The interface of all units included with GPC, together with a
  886.      short description of the units, is now included in the manual. The
  887.      interface, also that of the `GPC' module which describes the
  888.      interface to the Run Time System, is formatted more nicely,
  889.      especially in the printed version of the manual.
  890.  
  891.    * The `Support' chapter was updated, now including information about
  892.      GPC's Test Suite and how to report bugs most effectively, as well
  893.      as up-to-date contact information.
  894.  
  895.    * The installation instructions were updated, now matching the
  896.      current GPC and GCC versions.
  897.  
  898.    * The FAQ, the To-Do list, and the list of new features (this one
  899.      :-) were integrated into the manual.
  900.  
  901.    * The list of authors in the manual was updated, and the list of
  902.      contributors was included from the WWW page.
  903.  
  904.    * The manual was integrated with GPC's WWW pages, i.e. most of the
  905.      WWW pages were synchronized with the corresponding information in
  906.      the manual, and both now contain the same information.
  907.  
  908.  
  909. Demo Programs
  910. =============
  911.  
  912.    * There is a number of new demo programs to demonstrate some
  913.      features of the compiler and the units. The demo programs are part
  914.      of source and binary GPC distributions. After installation, they
  915.      can be found in `<prefix>/doc/gpc/demos/'.
  916.  
  917.    * The demo programs printed in the GPC Manual (currently 186, but
  918.      expected to become more) are now installed as separate files,
  919.      ready to be compiled, in a directory `<prefix>/doc/gpc/docdemos/'.
  920.  
  921.  
  922. Test Suite
  923. ==========
  924.  
  925. The Test Suite is used to verify that all features of GPC work as
  926. expected and to reproduce bugs reported. Test programs for bugs found
  927. by users and for new features are constantly added. The test suite is
  928. part of source, not binary, GPC distributions.
  929.  
  930.    * As usual, many new tests have been added to the Test Suite.
  931.  
  932.    * The few checks dependent on the system or certain installed tools
  933.      or libraries have been equipped with checks about the system
  934.      properties, and are skipped on systems on which they are not
  935.      applicable.
  936.  
  937.    * The old dejagnu tests have been integrated into the Test Suite.
  938.  
  939.    * `pascal.check' (or `check-pascal') now runs the current Test Suite
  940.      (as `make check2-gpc' did before) rather than the (now removed)
  941.      dejagnu tests. This must be done in the build directory (not the
  942.      `p' subdirectory) or in the `test' subdirectory of the source
  943.      directory. (@)
  944.  
  945.    * The Test Suite now produces a summary output by default. To get
  946.      the long output format as before, run `make pascal.check-long' (or
  947.      `check-pascal-long') now.
  948.  
  949.    * The GPC Manual as well as the `test/README' file in source
  950.      distributions (or `BUGS' in binary distributions) tells you how to
  951.      run the Test Suite and describes all features of the testing
  952.      environment, to make it easier for users to construct even exotic
  953.      new tests, and contains some generic instructions on how to report
  954.      bugs.
  955.  
  956. Legend
  957. ======
  958.  
  959. `(@)':   minor backward-incompatibility
  960. `(B)':   BP compatibility
  961. `(D)':   Delphi compatibility
  962. `(G)':   GPC compatibility :-)
  963.  
  964. Have fun,
  965.  
  966. The GNU Pascal Development Team
  967.  
  968.