perl/plp/.git
15 years agov3.20 release 3.20
Mischa POSLAWSKY [Wed, 28 May 2008 07:09:41 +0000 (07:09 +0000)]
v3.20 release

15 years agoimprove lighttpd configuration samples
Mischa POSLAWSKY [Thu, 29 May 2008 16:58:32 +0000 (16:58 +0000)]
improve lighttpd configuration samples

Use the merge (+=) syntax so the user doesn't have to integrate any
existing options, and can simply add the snippet as is (even as a
seperate include, especially easy in a Debian setup).

Extend backend configuration examples with options for a directory index
of index.plp, and (static) source rejection.

15 years agokeep SCRIPT_* environment variables in CGI
Mischa POSLAWSKY [Wed, 28 May 2008 11:41:13 +0000 (11:41 +0000)]
keep SCRIPT_* environment variables in CGI

These are now identical to their PLP_* counterparts, and should be used
instead for familiarity (why rename for no apparant reason; SCRIPT_* now
contain their expected values so no reason to suggest otherwise).
Apache already has both.

15 years agolicense file from COPYING renamed LICENSE
Mischa POSLAWSKY [Wed, 28 May 2008 10:36:53 +0000 (10:36 +0000)]
license file from COPYING renamed LICENSE

While COPYING seems to be most frequently used overall, LICENSE is used
more in perl modules and recommended by Kwalitee guidelines.  Fine with
me either way, so use the name that breaks the least.

15 years agodo not import parent module in PLP::Backend::FastCGI
Mischa POSLAWSKY [Wed, 28 May 2008 10:23:50 +0000 (10:23 +0000)]
do not import parent module in PLP::Backend::FastCGI

FastCGI initialized normal CGI as well, providing unneeded CGI support.
Apparantly it's not in the way, but wrong nonetheless (and quite
confusing to be able to use the fastcgi module with cgi).

15 years agosuppress warning in PLP::Backend::CGI
Mischa POSLAWSKY [Wed, 28 May 2008 10:07:09 +0000 (10:07 +0000)]
suppress warning in PLP::Backend::CGI

Add parentheses to my $scalar argument to read() to verify it's really
only a single variable.  Works the same, but fixes a warning if run -w.

15 years agorestructure file locations
Mischa POSLAWSKY [Wed, 28 May 2008 08:41:06 +0000 (08:41 +0000)]
restructure file locations

Use root directories lib/ (pm and pod) and bin/ (executable scripts).
This is the common layout of modern modules, and in fact ever more
expected (by Module::Build for example).

15 years agocustom META.yml
Mischa POSLAWSKY [Sat, 22 Mar 2008 14:52:00 +0000 (14:52 +0000)]
custom META.yml

Automatically generated module information cannot ascertain certain
information, so I'd rather provide all YAML myself.

Compared to ExtUtils::MakeMaker 6.42 output, this adds resources,
recommends, and optional_features.

15 years agoseperate/rewritten README file
Shiar [Wed, 30 Apr 2008 05:00:45 +0000 (07:00 +0200)]
seperate/rewritten README file

Plain text README should be a minimal introductionary basics: intro
(first paragraph of pod description), installation, help, copyright.
Leave the pod (and only that) to be the full manual.  All users should
be able to run perldoc, without being held off by some wannabe text
conversion.

15 years agoset $PLP::interface to executing backend
Mischa POSLAWSKY [Wed, 28 May 2008 05:42:08 +0000 (05:42 +0000)]
set $PLP::interface to executing backend

Useful to know how we're running, as code may want to target specific
backends.  Currently undocumented so that behaviour can be changed
easily if need be.

15 years agochange to MIT license
Mischa POSLAWSKY [Mon, 24 Mar 2008 02:04:27 +0000 (04:04 +0200)]
change to MIT license

Add a proper license instead of the just saying 'public domain'
(arguably unfulfilling, see http://www.linuxjournal.com/article/6225).
The MIT or X11 license is similar in intent to the perceived PD,
and should provide all if not more rights to users.
It's essentially the same as the 2-clause BSD and ISC licenses.

With consent of the original copyright holder Juerd Waalboer:
> BTW, mocht je een echte licentie willen gebruiken, dan stel ik MIT
> voor als je je daar zelf in kunt vinden

15 years agotest for pod correctness
Mischa POSLAWSKY [Wed, 28 May 2008 04:15:54 +0000 (04:15 +0000)]
test for pod correctness

If Test::Pod is present, check the pod of files in our manifest.

15 years agoexpand backend documentation
Mischa POSLAWSKY [Wed, 28 May 2008 03:55:29 +0000 (03:55 +0000)]
expand backend documentation

Add descriptions for PLP::Backend::FastCGI and ::Apache explaining
their configuration and advantages, and recommend/reorder backends
accordingly.

Document a major bug in mod_perl2, and discourage its use for now.
Not investigated, but easily reproducable with:

<:
use Cwd qw(cwd);
say cwd, '<br>';
sleep 10;  # now request a plp from a different directory
say cwd, '<br>';

15 years agohandle fastcgi signals
Mischa POSLAWSKY [Wed, 7 May 2008 17:53:50 +0000 (17:53 +0000)]
handle fastcgi signals

http://www.fastcgi.com/devkit/doc/fcgi-spec.html#S7
> A Web server can request that a FastCGI application exit by sending it
> SIGTERM. If the application ignores SIGTERM the Web server can resort
> to SIGKILL.

So stop accepting new requests after receiving a TERM signal.  Allow the
current page to finish, we should assume it won't be long (long-running
scripts usually require customized destructors anyway, so don't account
for those).  This is quite important to prevent interrupted output.

According to http://www.fastcgi.com/docs/faq.html#Signals Apache
mod_fastcgi will send a SIGUSR1 in addition to the TERM.  Seems safe to
ignore these.

If a client aborts a connection, we'll get a SIGPIPE.  Because the page
may still have crucial actions to perform, we should ignore and finish
the code.  Pages can easily handle PIPEs themselves if wanted.

The LastCall method is used, even though FCGI 0.67 warns:
> Note that this method is still experimental and everything about it,
> including its name, is subject to change.

As it's stable since september 2001, I guess it'll be fine for now.

16 years agofix default text for pod links to other modules
Mischa POSLAWSKY [Mon, 24 Mar 2008 06:44:13 +0000 (06:44 +0000)]
fix default text for pod links to other modules

Do not provide an explicit link presentation for stand-alone module
references (no context, so let the renderer do what it thinks best).
In a running text we want the opposite though: make sure modules names
aren't 'linkified' when they shouldn't (e.g. "use the XML::Quote
manpage" when we mean just the module).

16 years agoshort TODO with planned features
Mischa POSLAWSKY [Mon, 24 Mar 2008 06:30:24 +0000 (06:30 +0000)]
short TODO with planned features

Note some of the things planned for near-future releases.

16 years agomove backend interface modules into PLP::Backend:: namespace
Mischa POSLAWSKY [Sat, 22 Mar 2008 14:47:33 +0000 (14:47 +0000)]
move backend interface modules into PLP::Backend:: namespace

Keep our namespace a bit organized.

16 years agofix exit constants usage in apache2
Mischa POSLAWSKY [Tue, 18 Mar 2008 01:52:41 +0000 (01:52 +0000)]
fix exit constants usage in apache2

Apache2::Const requires HTTP_* constants to be compiled before they can be
accessed. This caused at least a warning message at the end of each page,
usually:

Use of inherited AUTOLOAD for non-method Apache2::Const::OK() is deprecated

16 years agoupdate plp.cgi
Mischa POSLAWSKY [Mon, 17 Mar 2008 19:28:26 +0000 (20:28 +0100)]
update plp.cgi

Update plp.cgi intro comments to reflect new interfaces status.
To make it more usable out of the box, executable flag is set (so it can be
run directly) and uses interpreter from environment (/usr/bin/env should be
supported better than /usr/bin/perl).

16 years agomove detailed setup documentation to interface modules
Mischa POSLAWSKY [Mon, 17 Mar 2008 19:02:45 +0000 (20:02 +0100)]
move detailed setup documentation to interface modules

Only keep basic instructions for Lighttpd+mod_fastcgi and
Apache+mod_perl in PLP's main synopsis. Other configurations is given in
the pods of interface modules. These are linked at PLP#DESCRIPTION,
which now also contains an overview of supported servers.

Mod_perl configuration variables have also been moved into PLP::Apache.
In all, makes the main documentation much cleaner (uncluttered with
interface-specific details).

16 years agoadd license to Makefile definitions
Mischa POSLAWSKY [Sun, 16 Mar 2008 15:26:39 +0000 (16:26 +0100)]
add license to Makefile definitions

As recommended by Kwalitee indicator metayml_has_license.
Currently we specify public domain even though it's not listed in
Module::Build::Api and arguably not a valid license at all. Maybe change
our license later, or classify as 'unrestricted'.

16 years agogit exclude of compile-time files
Mischa POSLAWSKY [Sun, 16 Mar 2008 13:43:04 +0000 (14:43 +0100)]
git exclude of compile-time files

Ignore everything generated by/for make.

16 years agohandle request automatically on PLP::CGI import
Mischa POSLAWSKY [Sat, 15 Mar 2008 00:52:51 +0000 (01:52 +0100)]
handle request automatically on PLP::CGI import

As it's not used for much else, PLP::CGI can simply start running on
import. So like PLP::FastCGI, the executable only needs to C<use PLP::CGI>
(and C<require> for advanced usage).

No backwards compatibility issues, as the last release didn't have this
modularized (PLP wrapper works the same as before).

16 years agofix setting PLPcache from apache configuration
Mischa POSLAWSKY [Fri, 14 Mar 2008 23:40:49 +0000 (00:40 +0100)]
fix setting PLPcache from apache configuration

Apache has been split from PLP package, so need to specify variable
explicitly.

16 years agomake mod_perl request object a global in PLP::Apache only
Mischa POSLAWSKY [Fri, 14 Mar 2008 23:08:38 +0000 (00:08 +0100)]
make mod_perl request object a global in PLP::Apache only

No reason to always create $PLP::r, as it's only used with Apache.

16 years agoeg/plpinfo.plp demo/status page
Mischa POSLAWSKY [Tue, 2 Oct 2007 10:23:56 +0000 (12:23 +0200)]
eg/plpinfo.plp demo/status page

Demo page reporting about the current status of Perl and PLP. Useful as
test page (see if correct versions are loaded as they should, and what
variables are set), or at least as a somewhat larger example of a plp
page.

Modelled closely after PHP's phpinfo() output (even color scheme is the
same, albeit html is much cleaner) to keep it as familiar as possible to
php switcheroos.

16 years agoFastCGI interface (PLP::CGI extension using FCGI)
Mischa POSLAWSKY [Tue, 2 Oct 2007 10:23:27 +0000 (12:23 +0200)]
FastCGI interface (PLP::CGI extension using FCGI)

Do not exit from PLP::CGI, allowing it to be used consecutively.

Coincidentally, PLP::FastCGI does just that: extending the PLP::CGI
interface to handle FCGI requests. Its import() runs a PLP dispatcher,
so a FastCGI executable (example plp.fcgi is provided) only has to
C<use PLP::FastCGI>. If a server supports run arguments, a wrapper
script isn't even needed this way: just do /usr/bin/perl -MPLP::FastCGI.

PATH_TRANSLATED is explicitly removed from environment so file names are
gotten from SCRIPT_*, which mostly already point to the requested script
(at least much more correctly than can be determined from PATH_*).

This seems to work correctly on at least:
- Apache 1.3.34, 2.2.4, 2.2.8 with mod_fastcgi and mod_fcgid
- Lighttpd 1.4.7 and 1.4.18 with mod_fastcgi

Caching can be controlled by setting an environment variable PLP_CACHE
(unlike with mod_perl, no other means of configuration are provided).
If not specified, PLPcache will be turned on.

fcgi script

16 years agogeneralize reading post input
Mischa POSLAWSKY [Tue, 2 Oct 2007 10:08:26 +0000 (12:08 +0200)]
generalize reading post input

Input retrieval differs per server interface, so set $PLP::read to a
function providing a read of specified number of bytes. This differs
from $PLP::print as it's not just a name, because it won't be evalled
but called directly.

16 years ago404 handling for pre-parsed CGI handling
Mischa POSLAWSKY [Fri, 27 Jul 2007 19:13:52 +0000 (19:13 +0000)]
404 handling for pre-parsed CGI handling

When using SCRIPT_FILENAME provided by server, still make sure the file
exists. Lighttpd can provide non-existant files when setting check-local
is turned off.

PATH_TRANSLATED handling (i.e. Apache) is unaffected: always does 404
checking when walking the path.

16 years agoclean up CGI environment parsing
Mischa POSLAWSKY [Fri, 27 Jul 2007 18:36:22 +0000 (18:36 +0000)]
clean up CGI environment parsing

When parsing PATH_TRANSLATED, put results in SCRIPT_* variables. Create
additional PLP_* vars only later. This makes both cases result in the
same intermediate state, and therefor easier to follow.

16 years agoLighttpd CGI support
Mischa POSLAWSKY [Wed, 25 Jul 2007 16:05:42 +0000 (18:05 +0200)]
Lighttpd CGI support

In case no PATH_TRANSLATED environment var is present, assume request is
already parsed and SCRIPT_* pointing to target script (not plp handler).
This supports at least Lighttpd CGI requests.  Functionality unchanged
for Apache1/2 CGI.

16 years agouse recommended apache2 constants
Mischa POSLAWSKY [Mon, 30 Jul 2007 09:04:03 +0000 (11:04 +0200)]
use recommended apache2 constants

According to mod_perl documentation (porting/compat):

REDIRECT and similar constants have been deprecated in Apache for
years, in favor of the HTTP_* names (they no longer exist Apache
2.0). mod_perl 2.0 API performs the following aliasing behind the
scenes

16 years agomake PLP::Apache mod_perl 2.0 compatible
Mischa POSLAWSKY [Mon, 30 Jul 2007 08:22:28 +0000 (10:22 +0200)]
make PLP::Apache mod_perl 2.0 compatible

16 years agomove plp server handlers to respective modules
Mischa POSLAWSKY [Wed, 25 Jul 2007 16:21:02 +0000 (18:21 +0200)]
move plp server handlers to respective modules

Keep compatibility wrappers for handler() and everything().

16 years agotest-suite directory
Mischa POSLAWSKY [Wed, 4 Jul 2007 19:43:11 +0000 (21:43 +0200)]
test-suite directory

Anticipating more tests.

Also clarifies (limited) testing scope by filename.

17 years agoseperate modules for backend-specific code
Mischa POSLAWSKY [Sat, 31 Mar 2007 02:56:50 +0000 (04:56 +0200)]
seperate modules for backend-specific code

Split out initialization and other specifics for CGI and mod_perl (Apache).

17 years agoremove disabled Cwd include
Mischa POSLAWSKY [Sat, 31 Mar 2007 02:44:37 +0000 (04:44 +0200)]
remove disabled Cwd include

17 years agodocumentation fixes
Mischa POSLAWSKY [Sat, 31 Mar 2007 02:38:26 +0000 (04:38 +0200)]
documentation fixes

Typo, small mistake in example, unmarked code.

17 years agofix html of default error message
Mischa POSLAWSKY [Sat, 31 Mar 2007 02:35:08 +0000 (04:35 +0200)]
fix html of default error message

Remove unclosed and useless tag; consistent tag capitalization.

17 years agoreindent remaining 4-space+tab@8 code
Mischa POSLAWSKY [Sat, 31 Mar 2007 02:31:20 +0000 (04:31 +0200)]
reindent remaining 4-space+tab@8 code

Use only tabs for indenting, spaces for alignment.

17 years agotiny speedup decoding + in DecodeURI()
Mischa POSLAWSKY [Sat, 31 Mar 2007 02:08:21 +0000 (04:08 +0200)]
tiny speedup decoding + in DecodeURI()

17 years agov3.19 release 3.19
Mischa POSLAWSKY [Thu, 15 Sep 2005 19:10:40 +0000 (21:10 +0200)]
v3.19 release

17 years agominor code cleanups and clarifications
Mischa POSLAWSKY [Sat, 31 Mar 2007 01:43:13 +0000 (03:43 +0200)]
minor code cleanups and clarifications

17 years agocommon argument handling in functions
Mischa POSLAWSKY [Sat, 31 Mar 2007 01:13:23 +0000 (03:13 +0200)]
common argument handling in functions

Slightly cleaner and faster, and accepts read-only values in all functions.

17 years agochange code indenting to tabs
Mischa POSLAWSKY [Sat, 31 Mar 2007 01:08:27 +0000 (03:08 +0200)]
change code indenting to tabs

17 years agoremove undocumented function HiddenFields()
Mischa POSLAWSKY [Sat, 31 Mar 2007 01:01:39 +0000 (03:01 +0200)]
remove undocumented function HiddenFields()

17 years agoadd tests for all quoting functions
Mischa POSLAWSKY [Sat, 31 Mar 2007 00:59:40 +0000 (02:59 +0200)]
add tests for all quoting functions

17 years agoupdate text dump of documentation
Mischa POSLAWSKY [Sat, 31 Mar 2007 00:58:25 +0000 (02:58 +0200)]
update text dump of documentation

README regenerated from PLP.pm pod.

17 years agomakefile cleanup
Mischa POSLAWSKY [Sat, 31 Mar 2007 00:56:44 +0000 (02:56 +0200)]
makefile cleanup

Also drops perl <5.5 support, since PLP requires 5.6 anyway.

17 years agomodule Cwd not used in PLP; don't use
Mischa POSLAWSKY [Sat, 31 Mar 2007 00:53:52 +0000 (02:53 +0200)]
module Cwd not used in PLP; don't use

17 years agodocument caveats for quoting functions; fix documentation indenting/wrapping.
Mischa POSLAWSKY [Sat, 31 Mar 2007 00:52:19 +0000 (02:52 +0200)]
document caveats for quoting functions; fix documentation indenting/wrapping.

17 years agofix header sending for tied printing
Mischa POSLAWSKY [Sat, 31 Mar 2007 00:45:07 +0000 (02:45 +0200)]
fix header sending for tied printing

Headers were not sent on initial printf or print with empty first argument.

plp.tieprint.patch by Shiar 2002-08-21 18:54:45

17 years agonew maintainer: shiar
Mischa POSLAWSKY [Sat, 31 Mar 2007 00:41:17 +0000 (02:41 +0200)]
new maintainer: shiar

17 years agov3.18 release 3.18
Juerd Waalboer [Fri, 18 Oct 2002 18:37:35 +0000 (18:37 +0000)]
v3.18 release

17 years agoextend howto
Juerd Waalboer [Sat, 31 Mar 2007 00:35:23 +0000 (02:35 +0200)]
extend howto

Explain basic http authentication. Mention SQLite.

17 years agocleanup (minor things like punctuation, use spaces for docu indenting)
Juerd Waalboer [Sat, 31 Mar 2007 00:33:29 +0000 (02:33 +0200)]
cleanup (minor things like punctuation, use spaces for docu indenting)

17 years agooptional end tag for plp code
Juerd Waalboer [Sat, 31 Mar 2007 00:27:44 +0000 (02:27 +0200)]
optional end tag for plp code

17 years agofix header key conversion to match documentation
Juerd Waalboer [Sat, 31 Mar 2007 00:26:19 +0000 (02:26 +0200)]
fix header key conversion to match documentation

Really convert Content_Type to content-type.

17 years agov3.17 release 3.17
Juerd Waalboer [Thu, 22 Aug 2002 13:06:02 +0000 (13:06 +0000)]
v3.17 release

- More cleanups
- %get is now built on script start, no longer on first access
- Apache->request->print is used now under mod_perl, not print (faster)
- Small documentation fixes
- Setting a header when headers are already sent now tells you where output
  started
- Speedup in source()

17 years agov3.16 release 3.16
Juerd Waalboer [Sat, 1 Jun 2002 13:41:39 +0000 (13:41 +0000)]
v3.16 release

17 years agodisable Safe.pm implementation
Juerd Waalboer [Sat, 31 Mar 2007 00:20:18 +0000 (02:20 +0200)]
disable Safe.pm implementation

Leave commented out for future reregard.

17 years agocode comment cleanup addendum
Juerd Waalboer [Sat, 31 Mar 2007 00:17:51 +0000 (02:17 +0200)]
code comment cleanup addendum

17 years agouse relative paths in compile-time includes
Juerd Waalboer [Sat, 31 Mar 2007 00:17:09 +0000 (02:17 +0200)]
use relative paths in compile-time includes

17 years agoSafe.pm implementation
Juerd Waalboer [Sat, 31 Mar 2007 00:16:02 +0000 (02:16 +0200)]
Safe.pm implementation

17 years agocode cleanup (mainly improving comments)
Juerd Waalboer [Sat, 31 Mar 2007 00:11:22 +0000 (02:11 +0200)]
code cleanup (mainly improving comments)

17 years agoupdate author's email address
Juerd Waalboer [Sat, 31 Mar 2007 00:04:10 +0000 (02:04 +0200)]
update author's email address

17 years agoadded howto documentation
Juerd Waalboer [Sat, 31 Mar 2007 00:01:22 +0000 (02:01 +0200)]
added howto documentation

17 years agov3.15 release 3.15
Juerd Waalboer [Tue, 21 May 2002 12:26:08 +0000 (12:26 +0000)]
v3.15 release

- Added caching of scripts. This means using more memory but it also means
  executing scripts 45-65% faster! (mod_perl only)
- Added configurability of caching: PerlSetVar PLPcache On/Off (Default: On)
- Changed PLP.pm to use File::Basename and File::Spec
- Added recursion protection for compile-time includes (fixed max depth: 128)

17 years agov3.14 release 3.14
Juerd Waalboer [Mon, 20 May 2002 14:10:29 +0000 (14:10 +0000)]
v3.14 release

17 years agoplp.vim update
Juerd Waalboer [Fri, 30 Mar 2007 23:55:17 +0000 (01:55 +0200)]
plp.vim update

17 years agosmall documentation changes
Juerd Waalboer [Fri, 30 Mar 2007 23:54:45 +0000 (01:54 +0200)]
small documentation changes

17 years agov3.13 release 3.13
Juerd Waalboer [Sun, 19 May 2002 23:42:06 +0000 (23:42 +0000)]
v3.13 release

17 years agov3.12 release 3.12
Juerd Waalboer [Sat, 18 May 2002 19:15:54 +0000 (19:15 +0000)]
v3.12 release

17 years agofixed strict-violation in PLP.pm that happened only without mod_perl
Juerd Waalboer [Fri, 30 Mar 2007 23:46:25 +0000 (01:46 +0200)]
fixed strict-violation in PLP.pm that happened only without mod_perl

17 years agov3.11 release 3.11
Juerd Waalboer [Sat, 18 May 2002 16:18:29 +0000 (16:18 +0000)]
v3.11 release

17 years agofixed all tie-stuff by reverting a change
Juerd Waalboer [Fri, 30 Mar 2007 23:41:43 +0000 (01:41 +0200)]
fixed all tie-stuff by reverting a change

Symbol.pm's delete_package doesn't delete a package in the way I thought it did.

17 years agocheckin v3.10 3.10
Juerd Waalboer [Sat, 18 May 2002 00:35:58 +0000 (00:35 +0000)]
checkin v3.10

16 years agov3.06 release 3.06
Juerd Waalboer [Tue, 23 Apr 2002 06:19:52 +0000 (06:19 +0000)]
v3.06 release

16 years agov3.05 release
Juerd Waalboer [Fri, 12 Apr 2002 07:07:23 +0000 (07:07 +0000)]
v3.05 release

16 years agov3.04 release
Juerd Waalboer [Thu, 11 Apr 2002 11:18:13 +0000 (11:18 +0000)]
v3.04 release

16 years agov3.03 release
Juerd Waalboer [Thu, 11 Apr 2002 09:05:09 +0000 (09:05 +0000)]
v3.03 release

16 years agov3.02 release
Juerd Waalboer [Thu, 11 Apr 2002 08:57:15 +0000 (08:57 +0000)]
v3.02 release

16 years agov3.01 release
Juerd Waalboer [Wed, 10 Apr 2002 07:50:25 +0000 (07:50 +0000)]
v3.01 release

16 years agov3.00 release 3.00
Juerd Waalboer [Tue, 9 Apr 2002 20:06:55 +0000 (20:06 +0000)]
v3.00 release

16 years agov2.40 release
Juerd Waalboer [Tue, 1 Jan 2002 13:29:37 +0000 (13:29 +0000)]
v2.40 release

16 years agov2.22 release
Juerd Waalboer [Wed, 2 May 2001 11:28:05 +0000 (11:28 +0000)]
v2.22 release

16 years agov2.21 release
Juerd Waalboer [Tue, 1 May 2001 08:00:24 +0000 (08:00 +0000)]
v2.21 release

16 years agov2.01 release 2.01
Juerd Waalboer [Sun, 7 Jan 2001 12:24:21 +0000 (12:24 +0000)]
v2.01 release