-ConvertedtheaccessorgeneratortoClass::XSAccessorinsteadofClass::Accessor.AfterconsultingDevel::NYTProf,itseemedthatthemajorityofthetimeofasimpleFile-Find-ObjectscanwasspentinClass::Accessor.Hopefully,thiswillmakeF-F-Orunfaster.-Asmalloptimization-addedaflagto$selfwithwhetherthestackisfullornot.Thisisusedinside_top_it()and_is_top().-Asmalloptimization-implemented_currentdirectlyinsteadofa_top/_non_topversion-saved2.5secondsofruntime.-Asmalloptimization-gotridof_current_components_copy()(whichwasuselessbecause_current_componentsalreadyreturnsadynamicreference)andreplacedallcallswithcallsto_current_components().-Asmalloptimization-->dir()insteadof->_dir_copy()forafunctionwhosereturnvalueisdereferencedandflatted.-Asmalloptimization-nowcachingtheresultsof_current_componentsinsideanaccessorandupdatingituponeverychange.-Asmalloptimization-nowcachingtheresultsof_current_path()uponeverymodificationof_current_components,soFile::Spec->catfile()won't be called excessively. - Optimization/Refactoring - changed the actions() handling so instead of having the indices, we calculate an array of master actions at start that correspond with the depth() parameter, and then assign it for each PathComponent object in turn based on $top. This is instead of the indexes and explicit calculations etc., which was both messier and slower. - Optimization/Refactoring - renamed _current_components() to _curr_comps() and _current_path to _curr_path() to make them shorter and faster. Added a comment explaining what they are. - Optimization/Refactoring - optimized _calc_current_item_obj. - Optimization - removed an _is_top() conditional in _recurse() that was likely not to be evaluated, by re-arranging the order of _mystat call. Now _mystat is not an action, but rather called explicitly. _is_top() is now PODded-out because it'snotused.-Refactoring-madethetoppathcomponent-handlingobjectaseparateobject(::PathTop)insteadof$top/$tree.Hopefully,thiswilllaterallowcaching_current(),andhavingaunifieddirectorystack.-Refactoring-createdabaseclassforPath-Components(i.e:::PathTopand::PathComponent).Mostofthemethodsoutof::Basebelongtheresotheyweremoved.Thisclassinheritsfrom::Base,butthere's not a lot there anymore. - Refactoring - renamed ::PathComponent as ::DeepPath and ::PathTop as ::TopPath. Otherwise they could be confused with ::PathComp. - Refactoring - made the first ::PathTop component the first element in _dir_stack() so we won'tneedtokeepinadistinctreference.Alltheotherelementsmoved1leveldownthestack.-Optimization-nowcaching$top->_dir_stack()->[-1]into$top->_current()asanaccessor.0.1.5-SatJan317:17:31IST2009-Unifiedthetwocallstostat()(andseveralcallstootherfileoperators)inordertoreducethenumberofsystemcalls/diskaccessesissuedbyFile::Find::Object.-RefactoredthecodefromthelastchangeandaddedFile::Find::Object::Result->stat_ret()forthereturnvalueofstat().0.1.4-ThuDec2518:27:48IST2008-Bugfix:madesure->item_obj()isavailableonthefirstcalltothecallback()andisproperlysynchronizedwithit.0.1.3-WedNov1218:50:49IST2008-Refactoring:converted_movenext()frompseudo-conditionalstopolymorphismbymakingitamethodof->_current().-Refactoring:extractedthe_next_traverse_to()method.-Bugfix(withpossiblecorrectness/SECURITYimplications):-nowcorrectlyhandlingfilesanddirectorieswhosefilenamesarefalseinPerl-mostnotable"0".0.1.2-SunOct2612:57:55IST2008-CorrectedtheREADME.-Nowcheckingforinodesthatare0,whencheckingforcyclicaltrees,asafixforstat()callsonsystemsthatdonotsupportthem.ThisshouldfixWin32testfailures(andbadbehaviouringeneral)likethefollowing:-http://nntp.x.perl.org/group/perl.cpan.testers/24795820.1.1-WedOct2212:30:56IST2008-PotentialSecurityFix!!!Nolongerpassingafilenamedirectlytotheformatin<<printf(STDERR)>>whenwarningonaloop.-Bugfix-thecheckforaloopwasbroken.-NewFeature-Addedthe->next_obj()and->item_obj()methodstoreturnaFile::Find::Object::Resultobjectinsteadofaplainpath.-Refactoring:-Nolongerpassing$currentexplicitlyfromonemethodtoanother(helloEEK!).Instead,wereference$self->_current()-RemmedouttheDESTROYmethodasitwasempty.-Revampedthe_actionhandling-anarrayinsteadofahash.-Created_topand_non_topmethodsdelegatedby_is_topusing_top_it()-_current_idx()waseliminated-nowit's just $#dir_stack. - Created a _copy methods to create flat copies of array references. - Extracted many methods. - Switched Build.PL to inc/Test/Run/Builder.pm - that gives us: - ./Build runtest - ./Build distruntest - ./Build tags0.1.0 - Wed Mar 5 20:46:27 IST 2008 - Now handling directories that cannot be opendir()'edinagracefulmanner-justnottraversingthemfurther.0.0.9-FriFeb2220:04:03IST2008-Nowrunningcanonpath()onthetargetsinthecalltoFile::Find::Object->new.Thatway,trailingslashesareomittedintheresults.-AllowFile::Find::Objecttoproperlyacceptpathstoregularfilesasinputpaths.Fixes:http://rt.cpan.org/Public/Bug/Display.html?id=33453ThankstoSergeyVPanteleevforreportingthebug.-TODO:checkbehaviorontraversingnon-existantpaths.-Done.-Nowskippingnon-existantfiles.-Addedatestforitint/03traverse.t0.0.8-TueJul3116:23:34IDT2007-addedtheemptyPL_FILESkeytotheMakefile.PLtoavoidrunningBuild.PLonolderversionsofEU::MM.0.0.7-FriFeb219:03:29IST2007-movedthetreescriptundertheexamplesdirectory.-addedtheLICENSEsectiontothePOD.-addedt/pod.tandt/pod-coverage.tandmadesurethemodulehasfullPODcoverage.-addedaBuild.PLbuildscripttogenerateabetterMETA.ymlfile.-alloftheseareKwaliteeimprovements.(http://cpants.perl.org/dist/File-Find-Object )-AddedsomelinkstothemainPODdocumentationforsimilarmodulesandforthePerlAdventarticle.0.0.6-TueNov2815:49:23IST2006-Addedthefollowingnewinterfacemethods:-set_traverse_to-get_traverse_to-get_current_node_files_list-prune-Somechangestotheinternalstoaccomodateforthem.0.0.5-SunSep323:22:36IDT2006-EliminatedtheF-F-O-internalisaF-F-Orelationship.-Createdaccessorsforeverything-nowbasedonClass::Accessor-F-F-O-internalisnownamedFile::Find::Object::PathComponent-Somesmallerrefactorings.0.0.4-WedAug2300:31:39IDT2006-Eliminatedcircularreferences.(Hopefully)-StillhaveanisarelationshipbetweenFile::Find::ObjectandFile::Find::Object::internal,whichiswhathandleseachrecursedtodirectory.-Createdsomeaccessorfunctionsinsteadofdirecthashaccesses.0.0.3-FriJul1414:25:42IDT2006-FixedsomelanguageproblemsinthePOD.-AddedtheChangesfile.-ChangedthelicensetoGPL/Artistic/Artistic-2.0-Placedthe.pmfilesinsidelib.-AddedtheTreeCreatemoduleundert/lib(withappropriatetests)totestthemainmodule.-Madethedefaulttestorderlexicographical,andpredictable.Intheprocess,eliminatedkeepingthedirectoryhandles,andpossiblythefactthattheyarekeptopen.-Fixedabugwherecircularreferencespreventedthemodulefrombeingdestroyed.