home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / MISC / VP21B274.ZIP / whatsnew.txt < prev    next >
Text File  |  2003-10-18  |  14KB  |  299 lines

  1.  
  2.    Virtual Pascal v2.1 Beta Build 274
  3.    Ottawa, November 2003
  4.    (C) Copyright 2003 vpascal.com
  5.  
  6.  
  7. This file is intended to give an overview of what has changed between
  8. Virtual Pascal v2.1 Beta build 243/270 and this build.
  9.  
  10. Both bugfixes and new features are mentioned.  Where a bug of a new feature has
  11. been assigned a reference number, the reference number is mentioned as well.
  12.  
  13. Most changes are mentioned in this document.  For a more detailed description 
  14. of each issue, please refer to the VP Bug Database which can be found at
  15. http://www.vpascal.com/bugs.  
  16.  
  17. Bug fixes in build 274
  18. ----------------------
  19.  
  20.   [42] Fixed definition of DeviceCapabilities API in win32.def.  It was listed as 
  21.   an API in winspool.dll - it actually exists in winspool.drv.
  22.  
  23.   [43] In Win32, several Ansi/Oem code page translation functions were used
  24.   to handle character set translation for console applications.  This has now
  25.   been removed so the internals of VpSysW32 use Oem code page strings by
  26.   default when used in a console application.  As a result, file names with
  27.   high-ascii characters in the name should work better than before.
  28.   
  29.   [74] The IDE and compiler now both load a localized string file if available.
  30.   If the LANG environment variable contains both a language code and a country
  31.   code, only the language code is used to identify the string file to use.
  32.   
  33.   [79] In build 270, a "bugfix" was added to the Delete function, allowing it
  34.   to do something for values of Index <= 0.  This has been reverted to be 
  35.   compatible with Turbo Pascal and Delphi, where Index <= 0 means the routine
  36.   does nothing.
  37.   
  38.   [87] The Windos.FileSplit function did not handle files with more than one
  39.   "dot" in the name.
  40.   
  41.   [94] In Linux, not all OS exceptions were correctly mapped to language 
  42.   exceptions, causing at least one of the test cases to fail.
  43.   
  44.   [98] The SysCmdLn function did not return the documented string in Win32.
  45.   Specifically, the program and argument portions of the returned value were
  46.   separated by a Space, not a #0 as it should be.
  47.   
  48.   [99] In Win32, the environment functions caused a memory leak because the 
  49.   FreeEnvironmentStrings API was not called.  Added a new routine to VpSysLow,
  50.   SysFreeEnvironment, which should be called to free the result of the
  51.   SysGetEnvironment call.
  52.  
  53.   [101] The OS/2 PM IDE would hand and use 100% of the CPU.  This was caused by
  54.   two separate sets of code trying to handle dynamic resizing of the window.            
  55.                                  
  56.   [103] If a source file was opened by typing in the file name in the Open 
  57.   dialog, and then saved, the file name case would change to what was typed in.
  58.   This has been fixed so the IDE adopts the case of the filename on disk.                               
  59.                                  
  60.   [106] The Linux IDE was unable to navigate to directories less than 2 levels
  61.   deep.  This was caused by a bug in the Linux version of FindFirst.
  62.   
  63.   [na] Updated test cases to include tests for command line handling functions 
  64.   and OS-to-language exception mapping.             
  65.  
  66.   [na] Fixed issue where the linker sometimes would complain about a missing
  67.   entry point in the Strings unit (Win32 only).     
  68.   
  69.   [na] Implemented SysCtrlGetModuleName for Index = 0 in Linux.
  70.   
  71.   [na] Added {&Delphi+} to Math.pas; this is required.
  72.                                                              
  73. Historical data
  74. ===============                                                             
  75.                                       
  76. The following is a list of what was new in VP v2.1 Build 270:                                      
  77.                                       
  78. New Features and Enhancements    
  79. -----------------------------                  
  80.                        
  81.   * New Windows API Interface Units                     
  82.     
  83.     [77] Added opengl.pas, implementing an interface to the OpenGL API.
  84.     This unit may also work in OS/2, although it has not been tested.
  85.                
  86.     [71] Added commctrl.pas, implementing API interfaces for Windows'
  87.     Common Controls.
  88.                                                    
  89.     [71] Added mmsystem.pas, implementing an interface to Windows Multi
  90.     Media APIs.
  91.                                                    
  92.     [15] A new unit (wincrypt.pas), which implements an interface to the 
  93.     Windows Crypto API has been added to source\w32.
  94.   
  95.   * New Examples                     
  96.     
  97.     [77] Three new OpenGL examples have been added and can be found in the
  98.     \examples\w32\opengl directory.  A common framework for the examples
  99.     can be found in the shared subdirectory.
  100.     The examples are originally written by Jan Horn.
  101.     
  102.     [35] Added a test framework suitable for testing the VP RTL and 
  103.     compiler.  The code for the test framework can be found in 
  104.     \examples\tests and compiles for all platforms.  (Note that there are
  105.     not very many tests yet - please contribute some! :)
  106.                                                                
  107.     [13] A basic Win32 GUI example has been included, for those that wish
  108.     to do this kind of programming.  The example can be found in 
  109.     \examples\w32\gui\hello.pas            
  110.     
  111.     [na] The Touch example has been expanded to be useful: it allows files
  112.     in subdirectories to be touched, and can be told to ignore locked files.
  113.     
  114.   * Run-Time Library enhancements    
  115.   
  116.     [na] All of the new functions are documented in the online help accessible 
  117.     from within the IDE.   
  118.     
  119.     [82] Added functions for retrieving and setting the FPU control word to
  120.     the Math unit.
  121.     
  122.     [78] Several functions in the Math unit have been updated to be more 
  123.     precise (Min* and Max* constants, Tan, CoTan and ArcTanh functions), 
  124.     and several new functions have been added:
  125.      - SinCosD and SinCosS for Double and Single arguments
  126.      - New trig functions (Hav, ArcHav, Vers, CoVers, Chord, Secant, CoSecant)
  127.      - New hyperbolic functions (Sech, CoSech, CoTanh, ArcCoTanh, rcSech, ArcCosech)
  128.      - Cubic root function Cuberoot
  129.      - Much faster IntPower routine
  130.     
  131.     [56] The Exp function in the System unit has been made as accurate as
  132.     possible, to facilitate complex math problems.  The previous one was
  133.     much less accurate and failed several of the new test cases for Exp.
  134.   
  135.     [55] Several functions in the System unit have been made faster by
  136.     using instructions that can be pipelined on modern CPUs.  I have done
  137.     the same to several PChar functions in the Strings unit, and the code
  138.     is now a little bigger and 2-4 times faster than before.
  139.     
  140.     [33] Object Professional has been added to the installer with full
  141.     source code, as a result of TurboPower releasing it as Open Source.                                                              
  142.                                                                   
  143.     [28] Added support for disks > 2GiB in the SysDiskFreeLong and 
  144.     SysDiskSizeLong functions in VpSysLow.
  145.  
  146.     [26] Added a missing ResetSemaphore function to VpSysLow.
  147.     
  148.     [na] The Linux interface units (Linux.pas, VpSysLnx, etc) have been 
  149.     expanded significantly.  
  150.     
  151.     [na] Support for 32-bit DOS (DPMI32) has been added to the RTL. The
  152.     new VpSysD32.pas and VpUsrD32.pas units implement this functionality.
  153.     Note: to use this, you need to define a custom compiler target in 
  154.     the IDE and have a compatible DOS extender for running the programs.
  155.     
  156.     [na] The File Locking functions have been added to Os2Base.pas. A bug
  157.     in the definition of the DosFSCtl API has been fixed.
  158.     
  159.     [na] A new unit for 64-bit calculations using the Comp type has been
  160.     added as int64.pas.    
  161.     
  162.     [na] A new unit for various String functions that don't fit anywhere 
  163.     else has been added: vpstring.pas
  164.   
  165.   * IDE enhancements
  166.     
  167.     An experimental Linux IDE has been included.  This IDE is able to do
  168.     everything you can do in Windows or OS/2 - except debug.  The debugger
  169.     does not yet work; with luck, it will soon.
  170.     
  171.     Note that Ctrl-, Shift- and Alt-keys may work strangely when operating 
  172.     on a non-local terminal (such as telnet or ssh).  
  173.          
  174.     [74] The IDE now automatically loads a localized string file if it 
  175.     exists.  If not, it defaults to the English vp.str file.  
  176.     To determine which file to load, VP looks for the VPLOCALE environment
  177.     variable.  If this is found, it looks for a file named 'vp-<lang>.str'
  178.     in the Common directory and uses it if it is found.  
  179.     If VPLOCALE is not defined, or the file does not exist, VP uses the
  180.     LANG environment variable for the same purpose.
  181.     
  182.     A German language file (vp-de.str) for the IDE has been included.
  183.     
  184.     [69] When using a Log Point in the debugger (i.e. a breakpoint that does
  185.     not break, but instead logs something to the Log window), the TID of
  186.     the current thread is added as well.  This makes it much easier to
  187.     track hard-to-find thread issues such as [20].
  188.     
  189.     [38] The IDE now auto-detects UNIX text files.  This works by checking
  190.     the character before the first #10 in the file - if it's a #13, then it
  191.     is a DOS file, otherwise it's a UNIX one.
  192.   
  193.     [36] The IDE's open dialog now accepts multiple wildcards.  This allows
  194.     the standard one to open pas, inc, dpr and pp files, which is convenient
  195.     when browsing for different kinds of Pascal source files.
  196.   
  197.     [11] A build of VP now has more information about itself in the About
  198.     Box, including build date and location.
  199.   
  200.   * Compiler enhancements
  201.     
  202.     [91] The compiler now implicitly adds the directory of the primary file
  203.     to the end of the search path.  This allows examples and other code to
  204.     be compiled (even when it requires multiple files to be compiled)
  205.     without changing the current directory.
  206.     
  207.     [72] The Real type is now defined as being identical to the 8-byte 
  208.     Double, and the slow 6-byte Real type is called Real48.  If you need to
  209.     store Reals in a file that is shared with Turbo Pascal, use Real48 -
  210.     everyone else can use the new Real, which is much faster.
  211.     
  212.     [50] The compiler now recognizes Linux as a standard target.  To use
  213.     this target, use /CL on the command line. (Note that Linux support 
  214.     still is experimental - this simply makes it easier to experiment :)
  215.   
  216.   * Installer enhancements                                   
  217.   
  218.     A new native installer for Linux is included, setuplnx.  It works
  219.     just like the Windows and OS/2 installers, with a few exceptions:
  220.      - The drive selection dialog is not shown
  221.      - The "case" dialog is not shown; everything is installed in lower case
  222.      - The patch mechanism does not work as it relies on a Dos executable.
  223.   
  224.     [61] The installer has been changed to disallow custom selection of 
  225.     packages except when "Custom Setup" is chosen.  Too many users chose
  226.     "Everything that is Free" and then enabled non-Free packages.
  227.                                                                          
  228. Bug fixes
  229. ---------   
  230.  
  231.   [na] Using SetLength(<AnsiString>, N) with N < 0 led to unpredictable
  232.   results.
  233.   
  234.   [92] Added several new Windows kernel32 functions to the import library.
  235.   
  236.   [83] The SameText function in SysUtils could sometimes search further
  237.   than it should have.
  238.   
  239.   [79] The Delete procedure did not work correctly for an Index < 0.
  240.   
  241.   [71] Updated Windows.pas with several new constants introduced in
  242.   Windows XP.
  243.   
  244.   [68] The SysCtrlCreateThread function in VpSysLow leaked thread handles 
  245.   in Windows.
  246.   
  247.   [63] The ExecDos command in OpDos.pas did not work in OS/2.
  248.   
  249.   [58] The OS/2 implementation of SysFileUNCExpand in VpSysLow returned
  250.   incorrect values for non-LAN remote file systems.
  251.   
  252.   [48] The run-time location information (RTLI) lookup routine in System,
  253.   GetLocationInfo, failed for code in DLLs.
  254.   
  255.   [46] The Eoln routine did not work if the CR-LF sequence was split into 
  256.   two different read buffers.     
  257.  
  258.   [42] The DeviceCapabilities API (Windows) was incorrectly defined.  When
  259.   the API was called, the application would crash.
  260.  
  261.   [40] The installer now refers to disk space in SI units KiB and MiB 
  262.   instead of the imprecisely defined KB and MB. Please refer to this
  263.   article if you are confused: http://physics.nist.gov/cuu/Units/binary.html
  264.  
  265.   [39] The SysGetDriveType function of VpSysLow would often recognize 
  266.   network drives as NTFS partitions instead.
  267.   
  268.   [32] TWindowsObject.GetChildren (an OWL unit) did not work if the 
  269.   window being restored had children because of a stack corruption.
  270.   
  271.   [31] When loading and unloading DLLs dynamically, the exit code for the 
  272.   unloaded (VP-produced) DLL would close the StdIn and StdOut handles in 
  273.   Windows. 
  274.  
  275.   [30] Screen corruption could occur in the IDE (and other TV apps) when
  276.   the screen mode was switched.
  277.                 
  278.   [25] When no key was pressed in Windows, the value of SysShiftState was
  279.   not updated. 
  280.   
  281.   [22] ReAllocMem did not fill the newly allocated memory with 0s as 
  282.   indicated in the online help.  It does now.
  283.                             
  284.   [20] Applications using a lot of threads could crash in the _GetTlsVar
  285.   routine of the System unit.  This has been fixed, and the speed of the
  286.   heap manager has been increased at the same time.  Also fixed an issue
  287.   in the TLS lookup code when accessing the first TLS variable of a module.
  288.                             
  289.   [18] In some cases, "Not a Number" values (NaN) of floating point 
  290.   variables were not displayed correctly - they sometimes showed up
  291.   as INF (Infinite) instead.
  292.   
  293.   [10] The stack guard page mechanism would not always work correctly in
  294.   threaded OS/2 applications, and this could cause a crash.                    
  295.  
  296.   [3] The editor could sometimes hang if you pressed Ctrl-Y to delete the 
  297.   first line of a file.  
  298.                       
  299.