0.006000 2019-04-09 - Stepford no longer depends on Graph::Easy. The output of Stepford::Graph's as_string method is now always a representation similar to Graph::Easy's txt representation. The method no longer takes an output format. - The dry_run attribute on Stepford::Runner is now a boolean and no longer takes a Graph::Easy output format. 0.005000 2018-01-31 - Stepford is not alpha. It is used for serious things. We removed the alpha warning. - Stepford::Role::Step::FileGenerator now accepts MooseX::Types::Path::Tiny types in addition to MooseX::Types::Path::Class types for files. - The unused and undocumented Stepford::Types::Internal::ArrayOfFiles type was removed. - Graph::Easy is now used to generate the string representation of a Stepford::Graph. PR by José Joaquín Atria. GitHub #35. 0.004001 2017-02-14 - Fixed an issue where Stepford would fail if $_ was modified by a step. - Removed duplicate "Running.." message during sequential runs. 0.004000 2017-01-25 - The internals of Stepford were largely rewritten. The planner contained significant bugs that caused Stepford to run or skip steps incorrectly, particularly on complex trees. - If a dependency has an undef last_run_time, the step will always be re-run. Previously, the step would be re-run only if all dependencies had an undef last_run_time due to a bug. - Stepford::Planner, a deprecated class, was removed. Use Stepford::Runner instead. 0.003009 2016-09-29 - Make Memory::Stats optional (since not all platforms can reliably install it). 0.003008 2016-07-13 - Log output at the info level now includes details of memory usage as before and after each step object is created. 0.003007 2016-06-02 - Added the force_step_execution option to Stepford::Runner to force running all steps reguardless of the last run time. 0.003006 2016-05-31 - Fixed warning that could occur from trying to inline the constructor for Stepford::Error. Since this class subclasses a Moo class, this could cause issues. 0.003005 2015-12-16 - When running steps in parallel and a step in a child process dies, we now include the step class name in the error message, which makes diagnosing failures much easier. 0.003004 2015-10-21 - Updated some tests to work better on filesystems (e.g. OS X's HFS+) that don't support sub-second accuracy on timestamps 0.003003 2015-03-02 - The fix for Atomic file generator steps in the last release introduced a new bug. If the pre-commit and post-commit files both existed, the pre-commit file would just be ignored. We want to use the pre-commit file whenever one is generated. 0.003002 2015-02-23 [BACKWARDS INCOMPATIBILITIES] - When running in parallel, each step's run() method is executed in a try/catch block. This should not affect your code unless you explicitly checked $^S inside the run() method. [BUG FIXES] - When running in parallel, if the step dies, we now pass the error back to the parent process and do not execute any more steps. We also now explicitly handle steps calling exit() internally, as well as step processes exiting because of some sort of external signal. Previously a child step could die and the build would simply continue on. - Steps classes which consumed the Stepford::Role::Step::FileGenerator::Atomic role would throw an error if their run() method did not produce a pre-commit file, even if the final post-commit file _did_ exist. This should not be an error, as it's up to each step to decide whether it needs to regenerate the post-commit file. [ENHANCEMENTS] - Added more logging around the checks for whether a step needs to be re-run based on last run time. This will make debugging unnecessary rebuilds much simpler. 0.003001 2014-12-17 [BUG FIXES] - Remove use of Path::Class::File->copy_to method in a test, as this requires new(ish) version of Path::Class (0.33), but nothing else in this distro would require a specific new version (that we know of). 0.003000 2014-12-02 [BACKWARDS INCOMPATIBILITIES] - Renamed Stepford::Planner to Stepford::Runner. The old class name will still work, but you will get a warning every time you call Stepford::Planner->new. [ENHANCEMENTS] - Added the Stepford::Role::Step::Unserializable role. This role tells the Stepford::Runner not to run the step class in a forked process because it's productions cannot be serialized. Instead, this step will be run in the same process as the planner. 0.002011 2014-11-13 - The Stepford::Role::Step::FileGenerator::Atomic now creates its pre_commit_file() in the same directory as the final file. Previously we used a temp dir but renaming the pre_commit_file() to the final file could fail if the two files were on different filesystems. 0.002010 2014-11-12 - Fixed a bug with Stepford::Role::Step::FileGenerator::Atomic steps and parallel test runs. The step would create a temp directory in the parent process which could be deleted by the time the step's run() method was called in a child process. 0.002009 2014-10-22 - There is now a new Stepford::Role::Step::FileGenerator::Atomic role. This role can be consumed by step classes which want to ensure that single file is generated atomically. Implemented by Ran Eilam. GH #11. 0.002008 2014-10-14 - (Some) previous releases were missing a LICENSE file. 0.002007 2014-09-30 - FileGenerator steps can now return undef from the last_run_time() method in order to indicate that the step must be re-run. The last_run_time() method provided by the Stepford::Role::Step::FileGenerator role does this when any of the production files are missing. Fixed by Ran Eilam. GH #9. - When running a parallel plan, steps that should have been rebuilt because of stale files were not being rebuilt properly. Fixed by Ran Eilam. GH #10. 0.002006 2014-08-12 - The logger passed to each step class is now wrapped to prepend a per-step class moniker to each log message. This makes following the logs for a parallel run much easier. - The planner object now recognizes inner classes created by any files that it loads. This means you can create step classes on the fly and the planner will recognize them as being valid. 0.002005 2014-06-30 - More doc fixes for Stepford::Runner. The docs on when we do error checks and what type of errors are checked for were out of date. 0.002004 2014-06-30 - Fixed the Stepford::Runner docs. The docs said that the constructor accepted a final_steps method, and did not document the parameter passed to the run() method properly. Bug report by Olaf Alders. GH #5. 0.002003 2014-06-19 - Added debug level logging that explains how each dependency for each class is resolved. 0.002002 2014-06-02 - The Stepford::Runner object now throws an error if it finds a class in any given step namespace that is a subclass of Moose::Object but which doesn't consume the Stepford::Role::Step role. 0.002001 2014-05-21 - Fixed an incorrect example in the Stepford::Runner SYNOPSIS and improved the larger example in the Stepford.pm SYNOPSIS. 0.002000 2014-05-21 * Breaking API changes. Final step(s) are now passed to the $planner->run() method rather than the Stepford::Runner constructor. - Implemented the ability to specify multiple final steps for a run. - Implemented parallel running. - All runs now end with a new step, Stepford::FinalStep. This just logs a message saying that the run is complete. - Plans are now optimized so steps run as early as possible in the plan. This helps improve parallelism and is just more generally correct. Thanks to Ran Eilam for pointing me at a blog post (blog.codeaholics.org/parallel-ant/#how-it-works) that described a very simple algorithm to do this. 0.001002 2014-04-22 - Require Time::HiRes 1.9726. Some earlier versions broke constructs like (stat $file). This construct is used in the Stepford::Role::FileGenerator role. 0.001001 2014-03-27 - (Hopefully) Fix some test failures that look they're caused by hash randomization. Reported by Slaven Rezic. GitHub issue #1. 0.001000 2014-03-20 - Totally redesigned the whole thing after discussions with Greg Oschwald here at MaxMind. I did say this was alpha! 0.000002 2014-03-03 - The tests now require Time::HiRes 1.9722. It seems like the version shipped before Perl 5.16 (1.9721_01) has a weird bug when used like this: some_sub( (stat $file) ); It seems to return the value "9" rather than the mtime. 0.000001 2014-02-25 - First release upon an unsuspecting world.