pyrus is ready for initial testing
| From: | Greg Beaver | Date: | Wed, 10 Jun 2009 23:22:29 +0000 |
| Subject: | pyrus is ready for initial testing | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-51939@lists.php.net to get a copy of this message | ||
Hi,
Pyrus is the PHP 5.3+ re-factoring of the PEAR Installer, and it is
within inches of a public alpha. As such, I want to let all of you, the
developers who will be most affected by its release, know about pyrus
and have a chance to play around with it before the first public release.
As of about 3 seconds ago, I committed a small fix that completes
Pyrus's ability to create packages. Pyrus is now capable of creating
package.xml files (a la PEAR_PackageFileManager), and packages
compatible with the PEAR installer as well as new-fangled packages that
only work with Pyrus.
package.xml creating only works for PEAR2 packages and PECL packages,
but there is nothing stopping the support of PEAR packages, and that
will probably be soon.
There are some glitches to be worked out in the REST support for
pear.php.net and pecl.php.net (all of pecl's REST is invalid XML, for
instance), and a bug in packagesinfo.xml in all existing channels using
Chiara_PEAR_Server or pearweb/peclweb, but these should be resolved soon.
Most packages have valid package.xml, but a few do not, and Pyrus won't
install them if they have any errors (it validates using the XSchema for
package.xml, unlike PEAR).
Pyrus is fully capable of managing existing PEAR installations, except
it cannot install ancient packages that only have package.xml 1.0, as
package.xml 2.0 and 2.1 are the only supported versions in Pyrus. It
can, however, display information from ancient packages that are
installed, and in theory can uninstall them (haven't tried this myself,
as I don't have any installed).
Another big change is that the developer tools are not bundled with
pyrus, but are a separate package. This allows much more flexible
development of these tools, while keeping the core of pyrus rock-solid
and focused on the things people who are using PEAR packages will be
needing.
Some improvements over PEAR:
Smaller - it leverages all of the best built-in extensions of PHP 5.3
including simplexml, libxml2, spl, phar, sqlite3, greatly reducing code
size and improving features
Faster - same reasons. XML parsing is particularly speedy compared to
PEAR, and the new default sqlite3 registry format is also very, very
fast for queries.
More robust - redundant registries, with the ability to repair a broken
registry, much more secure file installation transactions that are
power-loss safe (no .tmpBlah files left around if you Ctrl-C)
More flexible - installations can cascade, and pyrus automatically
recognizes PEAR installations in include_path without configuration.
More unit tested - even at this early pre-alpha stage, pyrus has 71%
unit test coverage of its codebase, with more to come.
Basically, it is quite awesome, and represents the collective work of
me, Brett, Helgi, David Coallier, David Jean-Louis, Josh and a few
others I am sure I am forgetting over the past several years both in
terms of coding (primarily me) and of working out standards for PEAR2
that Pyrus is based off of.
Pyrus also makes possible a simple channel server which can take a
release and create the REST and release tarballs. doc.php.net is
already using this simple channel server in production (as I understand
it, correct me if I'm wrong)
You can grab pyrus.phar from http://pear2.php.net or by checking
out
"all" from PEAR2's svn:
svn checkout http://svn.pear.php.net/PEAR2/all
pyrus is in Pyrus/pyrus.phar
If you check out all, use these commands to get access to the developer
commands:
cd all
php Pyrus/pyrus.phar install -pf Pyrus_Developer/package.xml
simply run "php pyrus.phar" to get started.
Greg