ActivePerl Release Notes

 

ActivePerl

Release Notes

Build 521 Friday, October 15, 1999

For the latest information on ActivePerl, please see:

http://www.ActiveState.com/ActivePerl/


Contents


Release History


Build 521 Friday, October 15, 1999

Bug Fixes and Changes

  • Perl did not call the Windows Sockets cleanup API when it terminated. This could use up system resources in some cases.
  • PerlEz now enables more thorough global destruction phase cleanup of values allocated by the Perl interpreter.
  • Use of %SIG (such as in Net::FTP) could lead to failures due to race conditions when multiple interpreters ran concurrently. This problem has been corrected.
  • Win32::GetCwd() could sometimes return directories with a trailing backslash when called under Perl for ISAPI or PerlScript. The backslash is now omitted for consistency.
  • Under Perl for ISAPI or PerlScript, setting %ENV entries to undef could result in them reporting an empty string value instead of undef. This has been fixed.
  • Under Perl for ISAPI or PerlScript, rename() could sometimes move files rather than simply renaming them in situ. This has been corrected.
  • CGI::Carp now recognizes that it is running under PerlEx when outputting error messages.
  • A improved version of perldoc from Perl 5.005_57 has been included. This version supports using a pager when displaying results from the -f switch, and cleans up temporary files properly.
  • XML-Parser has been upgraded to v2.27 from CPAN.
  • Pod documentation for Win32::Pipe has been added, thanks to David S Rosinger.
  • InstallShield 3 string size limitation has been worked around when setting the PATH environment variable on WinNT by using Perl instead.

Build 520 Tuesday, September 28, 1999

Bug Fixes and Changes

  • Most Win32:: modules have been updated; they correspond to the new libwin32 v0.151 release. The following summary of changes is from the libwin32 changelog:

    • Win32API-File-0.07 has been added (thanks to Tye McQueen). This module provides low-level access to file and directory functions.
    • Win32-OLE has been upgraded to v0.1101 (thanks to Jan Dubois). Be sure to check out the cool new component browser (needs IE5). Type "perldoc Win32::OLE::NEWS" and/or see OLE/Changes for detailed notes.
    • Win32API-Net has been upgraded to v0.08 (thanks to Bret Giddings). NOTE: There is a POTENTIAL INCOMPATIBILITY in how empty string values are handled in input hashes. See APINet/Changes and the pod documentation for detailed notes.
    • Win32API-Registry has been upgraded to v0.17 (from Tye McQueen). See APIRegistry/Changes for detailed notes.
    • Win32-TieRegistry has been upgraded to v0.23 (from Tye McQueen). See TieRegistry/Changes for detailed notes.
    • Win32-Sound has been upgraded to v0.45 (from Aldo Calpini). The new version supports wave devices and volume controls, and also sports pod documentation.
    • A few bugs in Win32-EventLog have been fixed (thanks to Bret Giddings and Jan Dubois). There is also newer documentation in pod format. NOTE: There is a POTENTIAL INCOMPATIBILITY in the Report() method, which will now use the "Source" and "Computer" fields in the passed hashref if they exist. See EventLog/Changes and the pod documentation for details.
    • A typo in Win32::Console::GenerateCtrlEvent() has been fixed. Documentation in pod format has been added (from Jan Dubois).
    • Win32::NetResource::GetSharedResources() now continues the enumeration when there are "Access denied" errors; on other errors, it enumerates all the resources seen until the point the error occurred.
    • Minor changes in Win32-ODBC from various people have been included. See ODBC/Changes for a summary.
    • Other small changes for Perl 5.005xx compatibility and minor bug fixes round out this release.

    See the individual modules included in the libwin32 source distribution for detailed changes.
  • Besides libwin32 v0.151, the following bundled extensions have also been updated to newer versions: URI v1.04, libwww-perl v5.45, HTML-Parser v2.23, XML-Parser v2.26.
  • Child GUI processes launched by system()/qx() were accidentally started with their windows hidden. This has been corrected. (perl#4057)
  • Error messages reported via $^E were truncated. This bug has been fixed. (perl#3699)
  • Perl could leak memory when @_ is modified in subroutines. This has been fixed. (perl#4102,4103)
  • Autoquoting of -foo was broken when the integer pragma was in effect. This has been corrected. (perl#3588)
  • $Config{installarchlib}/CORE is now included as one of the default linker search paths for extension builds. This allows the linker to find PerlCRT.lib and other Perl libraries properly. (perl#4230)
  • Improved versions of Pod::Html, File::Spec and File::Compare from the latest Perl development version have been included. These help generate better HTML documentation with fewer bogus links and other formatting errors. (perl#2751,2821,2916,2930,2931,3033,3042,3061,3685,3785,3804)
  • Perl for ISAPI could sometimes go into an infinite loop when the connection is closed prematurely. This has been fixed.
  • PerlScript would fail to report error messages correctly in some cases. This has been fixed.
  • IIS method exclusions set up by the installer assumed IIS version 3 style of exclusions. IIS version 4 has a different (and incompatible) method inclusion setting. The installer now checks the installed version of IIS and sets up "PUT,DELETE" exclusions or "GET,POST" inclusions, as appropriate.

Build 519 Thursday, August 12, 1999

Bug Fixes and Changes

  • Fix for new Win32::* functions which among other things will fix File::Copy in PerlScript and Perl for ISAPI.
  • zlib now uses PerlIO_open() instead of fopen(); this enable proper translation of pathnames in PerlScript and Perl for ISAPI.
  • PerlScript is now handling recursive event calls correctly.
  • Fixed buffer overrun caused by off by one error in PerlScript and Perl for ISAPI.
  • stat() related functionality in Perl for ISAPI and PerlScript were still affected by the bug in the translation of relative paths. The fix for this that was in Build 518 was only partially effective. This has been rectified.
  • MakeMaker could sometimes make wrong guesses about the layout of the Perl library. This has been improved. (perl#3682,3811)
  • Optimizations sometimes bypassed strictures on barewords. This has been fixed. (perl#3897)
  • Build 518 shipped with Win32-TieRegistry v0.22, which was severely broken. That module has now been updated to v0.23.

Build 518 Thursday, June 24, 1999

Bug Fixes and Changes

  • Perl for ISAPI and PerlScript were sometimes affected by a bug in the translation of relative paths. This has been rectified.
  • Failure of the constructs truncate(FOO) and Foo->Bar(qw/.../) under use strict has been corrected. (perl#3533,3514)
  • A bug in the handling of bareword prototypes for subroutines prevented package name arguments containing :: from being passed correctly. This has been fixed. (perl#3493)
  • A race condition that affected extension bootstrapping in multiple interpreters running on concurrent threads has been fixed.
  • Some formatting problems and factual errors in the Win32 FAQs have been corrected.
  • Perl used to generate an exception when the installation root happened to be the drive root. This should now work as expected.
  • The installer now appends log messages to c:\APInstall.log to record any problems that may have showed up during the installation.

Build 517 Wednesday, May 26, 1999

Bug Fixes and Changes

  • PerlScript and Perl for ISAPI now do extra checks for the length of path names passed to open() to avoid bugs in IIS.
  • Backticks, glob() and pipe opens now work even when the standard handles are redirected in the parent process that Perl was launched from. This used to result in lost output from child-processes launched by CGI programs that were mapped to run using perl.exe under IIS. (perl#3487)
  • A bug in spawning processes caused arguments with high-bit characters to not be passed correctly to child programs. This is now fixed. (perl#3445)
  • A prototype bug that affected PerlApp and such things as use fatal 'open' has been fixed. (perl#3446-3451)
  • The installer raised an exception on some versions of Windows 95. This has been fixed.
  • Invalid URLs in the table of contents for the online documentation have been corrected.

Build 516 Friday, May 14, 1999

Perl Resource Kit Compatibility

ActivePerl can now be installed over the Perl Resource Kit (PRK) from O'Reilly and Associates.

There is an important caveat: the PRK Service Pack 1 should not be applied after you have installed ActivePerl Build 516 over a PRK installation.

We recommend that you follow this checklist:

  • If you have just the PRK without PRK Service Pack 1: Install ActivePerl Build 516, followed by the Perl Development Kit (PDK), in that order. PRK Service Pack 1 should not be applied after this. Alternatively, you may install PRK Service Pack 1, and follow the instructions for the next item.
  • If you have the PRK with PRK Service Pack 1 applied: Install ActivePerl Build 516, followed by the PDK, or vice versa. The order does not matter.
  • If you have the PRK, PRK Service Pack 1, and the PDK: Simply install ActivePerl Build 516.

Note that the Perl Development Kit is a free upgrade for PRK customers. See here for more information.

Bug Fixes and Changes

NOTE: Fixes annotated with change numbers are from the Perl source repository. These are generally posted for discussion in the Perl development mailing lists (usually <perl5-porters@perl.org> and <perl-win32-porters@activestate.com>).

Perl

  • The stat() and opendir() builtins now behave reliably when given a bare drive name (without a trailing slash) and with pathnames that end in a backslash. (perl#3300)
  • The uname() builtin is now supported on win32. (perl#3134,3135)
  • Win32::GetTickCount() used to return negative values for long running processes. This has been fixed. However, note that the return value is still subject to wraparound, just as it is in the corresponding Win32 API function. (perl#3316)
  • When launched from a 16-bit process, the perl executable could not find its libraries correctly in certain configurations that used architecture-specific directories. The same problem existed when the PATH was set with a shortname-mangled architecture directory. These problems have been fixed. (perl#3345,3350,3353)
  • Win32::GetFullPathName(), Win32::SetLastError(), Win32::GetLongPathName(), and Win32::CopyFile() are now provided. See Win32.pod for documentation on these. (perl#2937,3353,3362)
  • Perl could access freed memory in some rare situations involving values subject to "autovivification". This has been fixed. (perl#3270)
  • opendir(D, "X:") now faithfully follows the same rules as the FindFirstFile() Win32 API. This means that the current directory on drive X: is opened, rather than the root directory on drive X:. (perl#3396)
  • Fixed a small memory leak when embedding Perl in applications that repeatedly create and destroy new interpreters. (perl#3419)
  • When there is a version component in the path to the site library, @INC construction failed to allow for directories that are not "subversion"-specific. This meant that perl failed to look for $top/site/5.005/lib if $top/site/5.00503/lib wasn't found. This is now fixed. (perl#3423)
  • The default compiler flags (i.e. the keys ccflags and optimize in Config.pm) used for building extensions have been set to -Od rather than -O2. This works around a bug in the Visual C compiler known to exist in versions prior to 6.0. ActivePerl itself is still built with -O2.

PerlScript

  • PerlScript could trash memory when running large bodies of code that would reallocate the perl stack.
  • PerlScript now calls any END blocks that may have been declared.

Perl for ISAPI

  • Perl for ISAPI now correctly returns error 404 if the requested file does not exist.

Other Extensions

  • Updated Win32::OLE to version 1.008. See the source distribution on CPAN for detailed change logs.
  • Updated XML::Parser to version 2.23. See the source distribution on CPAN for detailed change logs.
  • Fixed the return value from Win32::NetResource::NetShareGetInfo() if share is not found.

PPM

  • Fixed problems with OPTIONS attributes in PPM.
  • ppm.xml, the running record of installed modules, was not being updated in some cases, and in others, old history was being overwritten. History is now correctly propagated into the future.
  • PPM now outputs more informative summaries of packages, accessible via the summary and info commands.

Installer

  • Fixed problems uninstalling ActivePerl on Windows 95/98.
  • The installer now correctly verifies that the user has administrative privileges before proceeding further.
  • Changes to most configurable parameters (such as $Config{make}) in Config.pm are now correctly propagated by the installer. A backup of the old Config.pm is also now made. The PPM history file, ppm.xml, is similarly handled.

Documentation

  • Added documentation on the builtin XSUBs in the Win32:: namespace. See Win32.pod. (perl#3363)
  • Links to style sheets have been fixed to be relative, to facilitate relocation.
  • Case distinctions in URLs are now maintained correctly, making it feasible to serve the supplied documentation from systems that are case-sensitive.
  • Several broken links in the supporting documentation have been fixed. We are still aware of broken links in the main perl documentation; these are expected to be resolved when we move to a better pod2html than the one currently supplied with Perl.

Build 515 Friday, April 9, 1999

Bug Fixes and Changes

  • Fixed a bug that caused system() to fail when called with a single argument.
  • Fixed incorrect use of tables in the HTML documentation that caused it to not wrap correctly.

Build 514 Wednesday, April 7, 1999

Bug Fixes and Changes

  • Built around Perl 5.005_03, the latest production release. See the 'Changes' file in the Perl source distribution for detailed changes.
  • system() and qx// are fully implemented internally, and do not call the CRT's spawnvp(). This means that system(1,...) now returns a real process ID instead of a process handle as it used to.
  • kill() now understands real process IDs.
  • Most of the bundled modules have been upgraded to the latest versions. perldoc perllocal will show version information.
  • Uses PerlCRT version 1.04, which has a fix for a bug in 64-bit number conversions.

Build 513 (trial) Friday, February 26, 1999

Bug Fixes and Changes

  • Built around 5.005_03 Maintenance Trial No. 5, which has a number of bug fixes to the previous public release, 5.005_02. See the 'Changes' file in the source distribution for details. This trial build is for testing purposes only.
  • Propagated win32_recvfrom() fix to perl hosts.
  • Fixed bug in PerlIS that only allowed small (< 48K) files to be handled by the "post multipart form" method.
  • Fixed bug in PerlIS stemming from the use of GetServerVariable(..., "PATH_TRANSLATED",...). ServerSupportFunction(..., HSE_REQ_MAP_URL_TO_PATH, ...) is now used instead.
  • Fixed PerlScript startup script to call Win32::OLE->Initialize().
  • Fixed PerlScript problem when passing IDispatch objects as a parameter to Perl functions. The default method of the IDispatch is now called and the result passed as the parameter.
  • Uses PerlCRT version 1.03. This version fixes incorrect daylight saving time calculations, and a bug that caused Perl's tell() operator to sometimes return incorrect values when reading in textmode.
  • PPM now supports the 'trace' and 'tracefile' options, along with the 'genconfig' command.

Known Issues

  • Builds 510, 511 and 512 were never publically released.

Build 509 Monday, January 04, 1999

Bug Fixes and Changes

  • Fixed a bug in PerlScript that rendered it unusable. In PerlSE.pl, Win32::OLE::Lite needed to be 'use Win32::OLE::Lite;' instead of 'require Win32::OLE::Lite'.
  • Fixed a problem in Win32::EventLog that caused the extension to not build correctly on Alpha systems.
  • rename() is capable of renaming directories.
  • rename() is capable of renaming files across volumes, this was not previously possible on Windows systems. However this feature is not supported on Win95/98 systems.

Known Issues

  • The new rename() functionality, allowing the renaming of files across volumes, is not available on Win95/98 systems.

Build 508 December 22, 1998

Bug Fixes and Changes

  • Includes Win32::OLE v. 0.1005. See the Win32::OLE documentation for changes.
  • Fixed bug in rename($source, $target). It used to fail to rename $source if $target existed.
  • `backticks` now set the value of $? as documented.

Known Issues


    Build 507 November 13, 1998

    Bug Fixes and Changes

    • New PPM capable of updating itself including dependent modules and extensions
    • New XML::Parser extension (v. 2.16)
    • Latest libwin32 bundle (v. 0.13)
    • Fixed corrupt table of contents in the online documentation

    Known Issues

    • `backticks` do not set the value of $? correctly
    • You must upgrade to ActivePerl build 507 before attempting to install new versions of PPM. Prior to build 507 PPM was incapable of updating DLL files that were in use.

    Build 506 October 27, 1998

    Bug Fixes and Changes

    • `Backticks` are fixed in PerlScript and Perl for ISAPI on Win95, Win98 and WinNT.
    • system() is fixed in PerlScript and Perl for ISAPI on Win95, Win98 and WinNT.
    • PerlScript sets the PERLXS environment variable to "PerlScript". This is useful to determine in what environment a script is being executed.

    Known Issues

    • If you have the Perl Resource Kit -- Win32 Edition you should not install build 506 of ActivePerl. ActiveState will be providing a service pack which will update your PRK installation with build 506 of ActivePerl and revised utility binaries that address issues that some users have encountered. More information about the PRK is available at http://www.activestate.com/PRK/. PRK related release information is posted to the perl-win32-prk mailing list. You can join this list and receive timely information by emailing lyris@lyris.ActiveState.com with the following message in the body of the email:

      subscribe perl-win32-prk


    Build 505 October 19, 1998

    Bug Fixes and Changes

    • Fixed problem with -d and -e file test operators when they are used on a UNC sharepoint.
    • Installation adds script mappings to IIS Metabase consitently. There should not be a need to start the WWW Publishing Service before installing ActivePerl.
    • A stray version specific directory is no long pushed onto @INC. This directory showed regardless of its existence.

    Known Issues

    • `Backticks` are broken in PerlScript and Perl for ISAPI on Win95 and Win98.
    • `Backticks` are broken in Perl for ISAPI on WinNT when a full pathname is specified for the executable.
    • system() is broken in PerlScript and Perl for ISAPI on Win95, Win98 and WinNT.

    Build 504 October 12, 1998

    Bug Fixes and Changes

    • Uninstall removes documentation, directories added to the path, changes to IIS Metabase.
    • Fixed problem with extended formats in sprintf()
    • Win32::Process module and extension are now version synched.

    Build 503 October 9, 1998

    Bug Fixes and Changes

    Perl

    • ActivePerl is again built with -O2 compiler optimization turned on
    • Fixed bug in core when getting any port number in call to bind()
    • Updated core to support the latest version of Devel::Peek
    • Fixed $^X so that it now returns the name by which the Perl interpreter was invoked
    • perldoc now works for modules as well as POD
    • example.pl is now installed with the examples
    • Fixed problem with ProcessAffinity call in Process.dll on Win95
    • The path to PerlCRT.lib is now added to the 'libpth' value in Config.pm as well as any directories specified in your LIB environment variable
    • Missing doucmentation for FileHandle.pm has been found
    • MakeMaker now supports PerlArchitecture and version dependency for PPD target
    • No need to reboot on WinNT after installing ActivePerl
    • Temporary files are deleted after installation is complete
    • Install does not create duplicate script maps in the IIS4.0 Metabase
    • Directory structure has been flattend so that the user is in control of whether to do a versioned installation

    PerlScript

    • chdir now works
    • opendir now works
    • unlink now works
    • `backticks` now work
    • system() now works under
    • PerlScript now dynamically links to OLE.dll, so you must have version 0.1001 of Win32::OLE installed

    Perl for ISAPI

    • chdir now works
    • opendir now works
    • unlink now works
    • `backticks` now work
    • system() now works

    PPM

    • PPM.pl gets turned in to a .BAT file during setup
    • PPM proxy support now works, see PPM documentation
    • PPM makes use of XML::Parser to read and write its data file

    Build 502 August 11, 1998

    Bug Fixes and Changes

    • New build based on Perl 5.005_02
    • Fixes made to maintain binary compatability with 5.005
    • Improved core docs

    Build 501 August 4, 1998

    Bug Fixes and Changes

    • Win32-OLE and Registry modules included in their entirety.

    Build 500 July 31, 1998

    Bug Fixes and Changes

    Known Issues

    • After installation, temporary files are not deleted
    • If you are running IIS 4.x and selected to map extensions during setup, you may have to delete duplicate mappings.
    • Response->End() is not working properly with PerlScript. You should follow any call to Response->End() with a call to exit();
    • Uninstalling a package removes any modules installed but does not remove the directory in which the module was installed.
    • Catching the interrupt signal and calling a handler does not work.
    • Proxy support may not work at all times with PPM. However, if the environment variable HTTP_proxy is set, it will be used as the address of a proxy server for accessing the Internet and this may resolve it.
    • ActivePerl should not be installed in a path that contains spaces in it, as the spaces may cause problems for some of the programs that are part of ActivePerl. It is recommended that you install ActivePerl in the default location.
    • In order to build some extensions, it is necessary to add your compiler's library path to the 'libpth' variable in Config.pm

    Build 476 July 21, 1998

    Bug Fixes and Changes

    • When listing of packages is displayed in PPM, they no longer scroll off the top of the screen.
    • use DBI no longer causes a parse exception
    • TK and DB_File are now being built correctly
    • --location option in PPM now works properly
    • PerlIS is now getting environment variables
    • Filenames are now properly expanded on the command line, e.g. perl -d "print join(',',@ARGV)"
    • PPM turned into a batch file, so you can run it without being in your /perl/bin directory
    • If a LIB value is set in the system registry, it adds itself to the list of default LIB directories

    Known Issues

    • After installation, temporary files are not deleted
    • A file type for Perl scripts is currently not being made
    • There may be remaining problems using PPM if you are behind a firewall.
    • SIG{INT} doesn't work

    Build 471 July 10, 1998

    Bug Fixes and Changes

    • %* in bat files now works under Win95
    • Broken HTML links in online documentation fixed
    • PATH value now created in system registry if it didn't already exist on Windows NT
    • HTMLHelp.pm and WinHTML.pm now installed (required for ppm)
    • PerlIS.dll (Perl for ISAP) now registered properly

    Known Issues

    • When listing of packages is displayed in PPM, they scroll off the top of the screen
    • After installation, temporary files are not deleted
    • LOCATION option in PPM does not work
    • Several modules, including TK and DB_File do not work
    • A file type for Perl scripts is not being made
    • PerlIS is no longer getting environment variables
    • If LIB value is set in the system registry, it replaces the default directories.

    Build 469 July 2, 1998

    • First beta release of 5.005 / merged code
    • No alpha binaries - will be available in a future release

    What's changed from 300 series builds

    Most modules can now be built on Win32 systems with little or no modification.

    PerlScript & Perl for ISAPI are part of the ActivePerl Package.

    The Perl Package Manager for managing your Win32-compatible Perl modules is now included.

    The Win32::OLE::Enum module provides an interface to OLE collection objects from Perl. It defines an enumerator object closely mirroring the functionality of the IEnumVARIANT interface.

    Functions

    With this release, a few changes have had to be made. Some of your Perl for Win 32 3xx scripts may need a little tweaking to work, but these are minor. Here is where the changes come in:

    OLE

    The way in which OLE objects are created has changed.

    CreateObject OLE -> new Win32::OLE
    or
    Win32::OLE->new

    Functions replaced by the Win32 module

    Old function New replacement function
    OLE Win32::OLE
    OLE::Variant Win32::OLE::Variant
    OLE::VT_* Win32::OLE::VT_*
    Win32::Reg* Win32::Registry
    Win32::OpenEventLog Win32::EventLog::OpenEventLog
    Win32::OpenBackupEventLog Win32::EventLog::OpenBackupEventLog
    Win32::BackupEventLog Win32::EventLog::BackupEventLog
    Win32::ClearEventLog Win32::EventLog::ClearEventLog
    Win32::CloseEventLog Win32::EventLog::CloseEventLog
    Win32::GetNumberOfEventLogRecords Win32::EventLog::GetNumberOfEventLogRecords
    Win32::ReadEventLog Win32::EventLog::ReadEventLog
    Win32::WriteEventLog Win32::EventLog::WriteEventLog

    Functions no longer available

    Old function New replacement function
    Win32::PerlVersion $]
    Win32::GetArchName $ENV{PROCESSOR_ARCHITECTURE}
    Win32::GetChipName $ENV{PROCESSOR_IDENTIFIER}

    Functions that are no longer built in and require "use Win32"

    Win32::LookupAccountName
    Win32::LookupAccountSID
    Win32::InitiateSystemShutdown
    Win32::AbortSystemShutdown
    Win32::ExpandEnvironmentStrings
    Win32::MsgBox
    Win32::LoadLibrary
    Win32::FreeLibrary
    Win32::GetProcAddress
    Win32::RegisterServer
    Win32::UnregisterServer

    Functions that are still built in (do not require "use Win32")

    Win32::GetCwd
    Win32::SetCwd
    Win32::GetNextAvailDrive
    Win32::GetLastError
    Win32::LoginName
    Win32::NodeName
    Win32::DomainName
    Win32::FsType
    Win32::GetOSVersion
    Win32::IsWinNT
    Win32::IsWin95
    Win32::FormatMessage
    Win32::Spawn
    Win32::GetTickCount
    Win32::GetShortPathName
    Win32::Sleep

     

       ActivePerl Release Notes