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 |
|