
   Virtual Pascal v2.1 Beta Build 229
   Paris, September 2000
   (C) Copyright 2000 vpascal.com


This file is intended to give an overview of what has changed between
Virtual Pascal v2.0 and this v2.1 Beta.

Both bugfixes and new features are mentioned.  Where a bug of a new feature has
been assigned a reference number, the reference number is mentioned as well.


Integrated Development Environment (IDE) and utilities
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 * When debugging a GUI application using the Windows IDE, a  warning message
   was displayed. This message applies only to the OS/2 text mode IDE and has
   been removed. (Bugfix/101)

 * The Tph2Vph utility, which converts Turbo Pascal help files (*.TPH) to
   compressed Virtual Pascal Help files (*.VPH) hung in Windows 95/98.
   (Bugfix/102)

 * The Tph2Vph utility now has the ability to add "[Name]" to the end of index
   entries. This is useful because some index entries are defined multiple
   times after converting and using some help files. (Feature/103)

 * The IDE could not open directories with a "hidden" attribute. (Bugfix/106)

 * In Windows, filenames with national language characters were not displayed
   properly in the IDE. Proper use of OemToAnsi and AnsiToOem API calls have
   been introduced in the relevant VpSysLow functions, and the IDE now handles
   these files correctly. (Bugfix/107)

 * The debugger has been changed to not display an error message if the debug
   DLL returns  an error code of 9999 if the debugging platform (say, DPMI) is
   not supported by the debugger DLL used. (Feature/108)

 * The IDE did not display directory names beginning with a dot, such as
   ".pascal". (Bugfix/109)

 * When using Save As to save to a new filename, and that filename already
   exists, a warning message is now displayed. (Feature/112)

 * When pressing Ctrl-Enter to open the source file under the cursor, the IDE
   was not able to find some files because it concatenated the Unit Path and
   the Include Path to a maximum length of 255 characters.  (Bugfix/113)

 * The Window List dialog has been made larger to better accomodate long path
   and file names. (Improvement/115)

 * The debugger now highlights Watch items that change during exection, such as
   single step. (Feature/116)

 * The IDE syntax highlights nested {} comments correctly, up to a level of
   32 nested comments. (Feature/605)

 * The default extension for Pascal source files has been changed from .PAS to
   .pas. (Improvement)

 * The IDE now preserves the case of source files, by utilising the new
   VpSysLow.SysFileAsOS function.  (Improvement)

 * The IDE now is aware of read/only attributes.  When trying to save a file
   with a read/only attribute, the IDE prompts whether the read/only file should
   be overwritten anyway. (Improvement/117)

 * The IDE now shows an "r" in the status line when a file has a read/only
   attribute.  It does not prevent the file from being edited, however.
   (Improvement/117)

 * When copying and pasting to and from the VP clipboard in Win32, national
   language characters were not preserved. The IDE now performs OemToAnsi
   conversion for clipboard content. (Bugfix/120)

 * In the Dump window of the OS/2 IDE, Dump to file didn't work. (Bugfix/121)

 * When the last action in the IDE was a Paste operation, and the program was
   then single-stepped in a debug session, pressing F8 to step could cause the
   block to expand unexpectedly.  (Bugfix/122)

 * The command line compiler is included as an experimental Linux executable.
   The compiler does not include a native ELF linker; programs must be compiled
   with Windows as the target platform, and the PE2ELF utility run to convert the
   executables to native ELF format.

   Please refer to other documentation for Linux-specific instructions.


Installation
~~~~~~~~~~~~

 * Some Windows printer APIs were not imported through Import32.Lib. The
   relevant API definitions have been added to the .Def and .Lib files.
   (Bugfix/203)

 * The new OS/2 JFS file system was not recognised (Bugfix/204)

 * The binary RTL installed in \Units.%p now only includes those units that
   are shipped without source code in addition to the System unit: Classes,
   TypInfo and SysUtils.  For users with Delphi, source code upgrades
   are of course included.


Documentation and Online Help
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 * The help for ErrorAddr was incorrect: When Halt() is called, ErrorAddr is
   nil. (Bugfix/301)

 * The help for FindFirst did not properly describe the Required and Allowed
   parts of the Attribute parameter. (Bugfix/302)

 * Several minor typos in the OS/2 API help were fixed. (Bugfix/308)

 * The IDE online help has been updated to cover new features, such as
   nested comments.

 * On-line help for the Classes unit has been added.

 * On-line help for System.TObject has been added. (Fix/309)

 * The Language Reference and User Guide PDF manuals have been updated to
   cover v2.1 features.



Run-Time Library (RTL)
~~~~~~~~~~~~~~~~~~~~~~

 * The values of the two constants Local_Machine and Current_User, defined in
   Windows.Pas, were swapped around. (Bugfix/402)

 * The FileExists function returned TRUE, if the argument was an existing
   directory name.  This has been fixed, and the function now only returns TRUE
   if the argument is an existing file name. (Bugfix/403)

 * The IncreaseHandleCount function did not use the Count parameter.
   (Bugfix/404)

 * Several RTl units assumed a certain state of compiler directives, and did
   not work if recompiled with different settings. The relevant directives have
   been added. (Bugfix/405)

 * Calling 16-bit OS/2 API functions can be dangerous, as parameters passed must
   not cross a "segment boundary", once converted to 16:16 pointers. Appropriate
   wrapper functions have been added to VpSysOs2, safeguarding from this
   particular problem. (Feature/406)

 * Several changes have been made to the RTL, preparing for proper support of
   the Linux platform.  The core RTL, including much of the System unit, compiles
   for Linux.  (Improvement/407)

 * Several changes have been made to the RTL to support DPMI32.  Please refer to
   Veit Kannegieser's web page for details on this functionality.

 * The Thread Local Storage (TLS) mechanism, used to manage variables declared
   as "threadvar" has been improved markedly.  Heavily threaded programs
   compiled with VP v2.0 experienced problems in this area, which are now fixed.
   (Bugfix/409)

 * The definition of the Windows.TDeviceMode record was incorrect. (Bugfix/410)

 * The Os2PmApi.MLE_SEARCHDATA structure definition was incorrect (Bugfix/411)

 * The Math.IntPower function did not work when a negative Power argument was
   passed. (Bugfix/412)

 * A function retrieving a pointer to the current memory manager,
   GetPMemoryManager, has been introduced to complement the memory management
   interface. (Feature/413)

 * The VString member of the System.TVarRec record should be of type
   PShortString; fixed.

 * The heap manager was not thread safe on multi-processor machines. Fixed.

 * A new function, SysFileAsOS, has been introduced in VpSysLow.  It takes a
   file name as parameter, and returns TRUE if the file exists.  If the file
   exists, it also changes the case of the parameter passed to match the case
   of the file as it exists on disk. (Feature)

 * The SysFileSearch function now uses SysFileAsOS, and also returns the file
   name in the correct case. (Improvement)

 * The VpSysLow.SysTVGetScrMode has been changed to return a maximum of 234
   lines in Windows.  The Windows console mode APIs do not appear to handle
   consoles larger than this.

 * WinCrt.ShowText and WriteBuf have been improved to handle TAB characters
   correctly. (Improvement)

 * The Os2Rexx unit has been renamed to Rexx.Pas, and placed in the RTL
   directory instead of in the Os2 one.  A free third-party REXX interpreter
   is available for Windows, and can be used with this unit. A new unit alias,
   Os2Rexx=Rexx, assures compatibility with old programs. (Improvement/705)

 * The Classes and SysUtils units have been extended with classes and methods
   introduced in later versions of Delphi.

 * The TWin32Cell type defined in VpSysW32 has been moved to the Windows unit.

 * The SysReadAttributesAt function in VpSysOs2 has been changed to not AND
   the returned value with $7f, making it possible to read highlighted background
   colours.

 * Introduced a new function, VpSysLow.SysGetVisibleLines, used to retrieve
   the numbers of the top and bottom lines visible in the current shell
   window.

 * Introduced a new function, VpSysLow.SysGetPlatformName.  It returns a string
   containing the name of the current platform and is used by the new drive
   substitution logic described in the user's guide.

 * The Win32Cell type defined in VpSysW32 has been moved to Windows.Pas.
   (Improvement/414)

 * The SysClipCopy function allocated global Windows memory that was never
   freed.(Bugfix/415)

 * The Printer unit from Borland Pascal 7 was not included with the
   RTL. (Bugfix/416)


Compiler and Linker
~~~~~~~~~~~~~~~~~~~

 * Calling the Insert function with mixed AnsiString and ShortString parameters
   did not work; fixed. (Bugfix/602)

 * The compiler now supports nested { } comments, and the IDE is able to
   syntax highlight these correctly. (* *) and // comments are not nestable.
   For compatibility reasons, the ability to nest comments is controlled by
   the new {&Comments} switch directive, which by default is {&Comments-}.
   (Feature/605)

 * The help screen of the command-line compiler (vpc.exe) has been changed to
   display the directives in a manner that is easier to read.

 * A bug in the linker's stub handling code caused programs with a Dos stub
   to be inconsistent in 1 of 512 times.

 * The compiler now implements a drive substitution scheme, which allows
   the source and other directories to be placed on different volumes based on
   the current operating system.

   For more information on this, please refer to the User's Guide, chapter 10,
   section titled "Defining new targets in the IDE".


3rd party tools
~~~~~~~~~~~~~~~

 * A memory leak in TApplication.Done was fixed. (Bugfix/702)

 * A bug in OpDos.TextFileSize was fixed. (Bugfix/703)

 * A bug in OpDos.ExistOnPath was fixed. (Bugfix/704)

 * The VCL update now works with the original VCL from Delphi 5.

 * The Turbo Vision files are now included with full source code.
  