Stash is following the milestone JShrink hit last week and has reached it’s 100,000th download using Composer and the Packagist repository!
Two and a half years ago JShrink was put on Packagist, and since then it has become an increasingly important channel for JShrink’s distribution. Today it hit a new milestone- 100,475 downloads! It’s not just the total number of downloads that is going up, but the monthly download count as well, with downloads hitting just shy of 15k a month.
Thanks for all your support!
There’s been a lot of discussion about PSR-6, the php-fig caching interfaces, so I thought it was time to step in and describe what this system is all about. Be prepared to read far more about caching interfaces than you probably thought possible.
I’m a firm believer in hosting my own email and other services, and after running some updates to deal with Shellshock I realized it was time to replace my provisioning scripts and bring my personal systems under proper configuration management. It was while doing this that I found out there isn’t a PSAD module for Puppet! This is something I just couldn’t allow, so I’ve spent some time over the last few days fixing that problem.
PSAD is one of my favorite security tools for services. It works with the existing firewall to detect post scans and actively block them. It has the ability to persist data, meaning it can catch scans that are occurring over long periods of time, and it has a variety of configuration options to suite all needs. Further, because it’s using the firewall logs themselves you can add and remove new firewall rules without needing to change any of the PSAD configurations- whitelisting an IP address is a simple matter of adding that change to your firewall.
The PSAD module handles everything you need to get PSAD up and running.
- It can be used to control the entire configuration of PSAD.
- It adds the firewall logging rules that are needed.
- It adds a cronjob to keep PSADs signatures up to date.
- Of course, it also installs PSAD and keeps the service running.
It’s hard to stress how much work went into these two releases. For Stash there was 139 commits and the Stash Bundle itself had another 103. Much of this was internal changes designed to improve performance and ease future development, but there are also a lot of goodies that you’ll want to start exploring.
New Documentation Site and Github Organization
Stash and the Stash Bundle have both been moved out of my personal Github account and over to a new organization. At the same time we’re launching a brand new site, StashPHP.com, for all of the Stash documentation. A special thanks to the folks at the Guzzle project for releasing their Sphinx theme to the public, as that was the basis for the new site.
Full Support for HHVM
This latest release is the first to commit to supporting HHVM. Every new change will be tested against both the stable HHVM and the nightly builds, and any problems that come up will be resolved before being released.
Stash has already has great support for grouping cached items together using Stacks, and with this latest release it adds Namespaces to the mix. These features are redesigned to work together, allowing each namespace to contain it’s own completely independent groups of items.
For more information on how to use these features in your project check out the Groupings documentation on the Stash site.
Public API Additions
Besides the Namespace features there are a few new public functions available. The DriversList class has been expanded to allow more data to be pulled out about what drivers are available on the system as well as making it possible to register custom drivers. The Item class also contains new functions which pull out metadata about when an Item was first created and when it is expected to expire.
Intensely Expanded Test Suites
Testing is by far one of the most important parts of the Stash library. Stash’s test suite contains 162 tests and over 4,200 assertions, which act to make sure that all drivers behave in a consistent manner and that all data that goes into Stash comes out as it should.
The StashBundle had not, until this point, been tested nearly as thoroughly. That has changed with this update, and the StashBundle now has 98% code coverage, with 94 tests and 834 different assertions.
Major Rewrite and Expansion of Documentation
All of the documentation has been reviewed and updated, including the PHPDoc and inline commenting. New sections have been added to help people Extend Stash for their purposes, Add New Drivers for systems not currently supported, and to Integrate Stash into their projects.
Lots of Little Things
Although a lot of big things have been mentioned, there’s numerous smaller changes that help make Stash better. For more information as well as a list of all potential BC breaks please check out the Changelogs for Stash and StashBundle.
In the most recent release of JShrink I pledged full HHVM support, and since then have been running our full test suite against the 3.0 release as well as the nightly builds. Well, it seems that HHVM has itself committed to supporting JShrink, as they’ve added it to their own framework compatibility test suite.
For the last week JShrink has been present on the HHVM Compatibility Dashboard, where it is one of 24 projects that are working at 100%. I’m proud to publish code that supports HHVM, and am very excited that JShrink is one of the projects used to test compatibility of HHVM against the existing php ecosystem.
JShrink has been in development for several years now. It’s migrated from Google Code to Github and modernized with support for things like Composer and the PSR standards. It’s been adopted by numerous projects (SugarCRM and Piwik are two examples), and extended by other developers for use with Assetic and Symfony2. Through Packagist along it has had over 32k downloads (over 5k of which was just last month). In recent months a lot of work has been put into increasing test coverage, adopting standards, and making contributions easier. This latest version of JShrink is the fastest, best documented, and most comprehensively tested version yet.
All of which leads to this, JShrink 1.0.
Thank you to everyone who has contributed to and adopted JShrink!
This release of Stash deals with changes between the APC and Opcode Caching system in PHP 5.4, specifically how opcode caches get invalidated. As of this release the Filesystem Driver explicitly invalidates the opcode cache for the files it creates or updates, preventing PHP from including an older version of it’s data.
This release handled a few bugs and improves integration with the testing suite, particularly for people running it via Vagrant. The biggest benefit with testing is that the staging environment is now created and reset automatically when phpunit is run, rather than needing to be initialized separately. This release also adds better support for messages with special encoding.
As I was poking around the Packagist website this morning I found that Stash has reached 40k downloads through composer! What’s really exciting is that 2,135 of those downloads were just in the last 10 days.
This is an exciting milestone for me. Stash has been in active development since 2009, but was only moved to Github 2 years ago- around the time that it was made available through Packagist. Since then the community has rallied behind it- with 23 different contributors, a fork supporting PHP 5.2, bundles for popular frameworks like Symfony (thanks Josh!), and adoption of projects like EZPublish, the growth of this project has been phenomenal.
Thanks to all of the community for their help in developing Stash! I’m looking forward to my next update on Stash, where I’ll talk a bit more about what makes it such a great caching library.