ActivePerl
Release Notes
Build 521 Friday, October 15, 1999
For the latest information on ActivePerl,
please see:
http://www.ActiveState.com/ActivePerl/
Contents
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
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
Bug Fixes and Changes
- New build based on Perl 5.005_02
- Fixes made to maintain binary
compatability with 5.005
- Improved core docs
Bug Fixes and Changes
- Win32-OLE and Registry modules
included in their entirety.
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
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
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.
- First beta release of 5.005
/ merged code
- No alpha binaries - will
be available in a future release
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 |
|