Revision history for Language::Befunge. High-level changelog ==================== 4.0x LB:LS split in LBS/LBW, extensions 3.0x multidims, multiops possibilities 2.0x optimizing + test coverage 1.2x real LaheySpace support 1.1x support for Build.PL 1.0x official release + mailing-list 0.3x oo interface 0.2x libraries semantics 0.0x initial work, with basic capabilities Low-level changelog =================== 4.12 Tue Jul 7 16:41:51 2009 - fix #47642: missing prereqs 4.11 Thu Jun 4 20:24:49 CEST 2009 - new fingerprint: CPLI - complex numbers extension - new fingerprint: DIRF - directory operations - new fingerprint: FILE - file i/o operations - new fingerprint: FIXP - fixed point operations - new fingerprint: STRN - string operations - new fingerprint: SUBR - subroutines extension - new fingerprint: TIME - date/time operations - debug() now a plain sub in Language::Befunge::Debug, for a ~20% speedup - tests sanitized (ported to test::more, test::output and test::exception) 4.10 Sun Apr 5 15:44:57 CEST 2009 - new infinite loop detection (mark) 4.09 Sat Jan 17 14:34:08 CET 2009 - using class::xsaccessor internally, for a 10% speedup 4.08 Sun Nov 16 11:23:13 CET 2008 - change libs semantics when unloading under stack - fix on some extensions 4.07 Sat Nov 15 19:44:27 CET 2008 - fix month in y instruction - new fingerprint: BASE - non-standard math bases extension - new fingerprint: BOOL - boolean operations extension - new fingerprint: EVAR - environment variables extention - new fingerprint: HRTI - high-resolution timer extension - new fingerprint: MODU - modulo arithmetic extension 4.06 Tue Nov 11 17:50:47 CET 2008 - new fingerprint: NULL - extension to opacify loaded extensions - new fingerprint: ORTH - orthogonal easement extension - new fingerprint: PERL - extension to embed perl within bBefunge - new fingerprint: REFC - referenced cells extension - new fingerprint: ROMA - roman numerals extension 4.05 Mon Nov 10 15:46:00 CET 2008 - handprint changed to JQBF - mycology compliance. this comes with some changes in unclear semantics: . spaces and comments are now slurped in 0 tick . k interprets the instructions at its position 4.04 Mon Jul 28 18:54:02 CEST 2008 - speeding LBS->store by 55+% (mark) - input not cached per ip, but per interpreter (mark) - bringing test coverage up to 100% (mark, jq) 4.03 Fri Jul 4 12:14:45 CEST 2008 - adding 'm' opcode (z if) (mark) - completing code coverage up to 97.5% (mark, jq) - adding optional module for TEST lib (jq) 4.02 Thu Jul 3 20:44:11 CEST 2008 - completing list of required modules, even if a corelist one - providing empty base class LBW 4.01 Mon Jun 9 17:33:48 CEST 2008 - Test::Exception now a hard prereq of the module 4.00 Sun Jun 8 17:08:22 CEST 2008 - split LB::LaheySpace in LB::Storage and LB::Wrapping (jq, mark) - first storage implementations: . LBS:2D:Sparse 2-dims, sparse hash (jq) . LBS:Generic:AoA n-dims, array of arrays (jq, mark) . LBS:Generic:Vec n-dims, vec-based, supporting lbsgvxs (mark) . LBS:Generic:Sparse n-dims, sparse hash (mark) - first wrapping implementations: . LBW:LaheySpace funge98 wrapping (jq) - LBI->new: . stricter params checking (jq) . easier to expand with syntaxes (jq) . new alternative syntaxes (mark) - requiring perl 5.10 (jq, mark) - API changes: . LBV has additional rasterize method (moved and expanded from LBGSGA) (mark) . LBV supports accelerated rasterize method in LBVXS > 1.0.0 (mark) . labels_lookup should return Vector objects (mark) . expand() should exist for all Storage modules (mark) . add get_dims() to the Storage API (mark) - new befunge lib: TEST (book) ** 3.05 Tue Jan 22 17:52:27 CET 2008 - LBV now uses an array internally for more efficiency - LBV tries to load transparently LBVXS for even more speed - LB:LaheySpace.pm now also understand \r\n and \r terminated programs - some tests cleaning 3.04 Wed Jan 9 17:50:58 CET 2008 - more robust way of skipping tests when Test::Exception isn't present . fix t/1-classes/vector.t and t/3-lahey/generic.t . fix RT ticket #32164 3.03 Sun Jan 6 19:05:09 CET 2008 - tests reorganized 3.02 Mon Nov 26 13:02:20 CET 2007 - kwalitee/cpants release 3.01 Wed Oct 24 14:22:24 CEST 2007 - fixing stricture 3.00 Fri Sep 28 17:41:27 CEST 2007 - new LB::Vector class for abstracting dimension (mark) - new LB::LaheySpace::Generic, a n-dims laheyspace (mark) - support for n-dims - ops now belong to their own modules, with one test per op - new LB::Interpreter class to create the combination dims / ops - possibility to choose the set of ops: unefunge, befunge, generic-funge - move to lib/ layout ** 2.08 Mon May 28 19:36:11 CEST 2007 - skipping a failing exec test on windows 2.07 Sat May 26 15:05:46 CEST 2007 - kwalitee release: LICENSE, pod tests, etc. 2.06 Tue May 2 18:02:12 CEST 2006 - corrected input error introduced during accessor split - migrated 02befunge.t, 10stdio.t and 22lib.t to Test::More - added tests for generic Befunge.pm test - added tests for output errors - added tests for library semantics 2.05 Mon May 1 18:34:18 CEST 2006 - migrated 03ip.t to Test::More - updated 03ip.t to 100% cover L::B::IP - updated 04lahey.t to 100% cover L::B::LaheySpace - test-suite coverage is now 95.7% 2.04 Sun Apr 30 15:47:16 CEST 2006 - removed cargo-cult proto in constructors - removed OO indirect notations - renamed private methods to begin with _ - migrated 04lahey.t to Test::More - ran coverage on the test-suite: 93.6% 2.03 Fri Feb 17 17:04:49 CET 2006 - use-ing integer for faster computations 2.02 Fri Feb 17 15:36:08 CET 2006 - rewritten accessors for L::B::IP, using same technik as L::B - doc updated 2.01 Fri Feb 17 15:15:43 CET 2006 - rewritten accessors generation, for another speedup - adapted the documentation 2.00 Fri Feb 17 14:48:54 CET 2006 - splitted accessors for L::B in get_* and set_*, for a small speedup. note: this will break your code if you're running your own inner-loop! - beginning of L::B 2.x, an optimization serie ** 1.20 Mon Feb 13 18:08:28 CET 2006 - fixed wrapping in L::B::LaheySpace::move_ip_forward to comply with LaheySpace specs (mark) 1.11 Tue Feb 7 18:07:03 CET 2006 - fixed L::B::IP->svalue returning undef on non-existent stack depth (mark) 1.10 Tue Feb 7 15:05:13 CET 2006 - included a Module::Builder mechanism (old scheme with Makefile.PL is preserved) ** 1.06 Mon Feb 6 21:04:04 CET 2006 - reworked Makefile.PL (now more light-weight) - added a TODO file 1.05 Mon Feb 6 19:01:37 CET 2006 - fixing wrapping when ip delta is greater than lahey space width or height (mark) 1.04 Wed Feb 1 17:38:49 CET 2006 - detecting infinite loop on bogus funges in move_curip (mark) 1.03 Mon Jan 2 21:20:07 CET 2006 - fixing failed test on 64bits platforms (mark) 1.02 Fri Dec 2 21:44:48 CET 2005 - enhanced input checking, dealing correctly with non-ascii characters (with the help of Mark Glines) 1.01 Sat Nov 26 16:22:23 CET 2005 - unrolling k instruction to avoid deep recursion warning (mark) 1.00 Thu Oct 28 19:13:59 CEST 2004 - i instruction support binary flag (book) - mailing-list available: language-befunge@mongueurs.net - stable for now 2 years, -98 fully implemented: sane basis for further work on the module ** 0.38 Fri May 3 14:47:09 CEST 2002 - Removed a (silly) debug message. - Fool-proof for ascii input. - Numeric input works with LB::IP::input() (just as ascii input). - Numeric input asks for input until it gets a valid input. 0.37 Wed Apr 24 08:54:00 CEST 2002 - New mechanism of libraries loading: loading instances of extension instead of a plain module. - doc/library.pod modified to reflect this. 0.36 Mon Apr 22 20:44:10 CEST 2002 - jqbf98 now understands the -v flag (verbose) - New examples tpr00.bf, palin.bf - IP.pm now has two methods spush_vec and spop_vec. Befunge.pm modified to take advantage of those methods. - IP.pm now has a method spush_args to push (and convert) arguments on the stack. - IP.pm comes with a storage facility to allow library to fetch and store whatever data they want. This is highly experimental and the interface may change in future releases. 0.35 Tue Apr 16 17:20:29 CEST 2002 - LaheySpace::labels_lookup() now also returns the velocity that found the label. - Minor pod update. 0.34 Tue Apr 16 15:00:27 CEST 2002 - Minor bug fix in LaheySpace.pm. I discovered it by chance, since it's a tiny little bug that did not seem to break anything. - LaheySpace now has a labels_lookup() method, that allow to search for labels inside comments. This will be used in Inline::Befunge and maybe some extensions will use this non-standard mechanism. - Minor update to doc/library.pod 0.33 Mon Apr 15 17:21:23 CEST 2002 - Fancy stuff added in order to support Inline::Befunge (does not change the default behavior) - One more debug message 0.32 Mon Apr 15 12:01:53 CEST 2002 - POD fixing in doc/library.pod 0.31 Mon Apr 15 09:41:21 CEST 2002 - Smarter way of handling parameters. - jqbf98 interpreter now handles parameters. 0.30 Sun Apr 14 15:53:19 CEST 2002 - Befunge.pm now has an Object Oriented interface. - rewriting tests to take the new interface into account. ** 0.20 Sat Apr 13 13:08:17 CEST 2002 - Befunge.pm modified to understand libraries semantics: parens (to load/unload) and capital letters. - IP modified in order to accept the libraries semantics. - New directory lib/ where to put libraries. - New libraries FOO and HELO - New test 22lib -> test libraries semantics. - Pod completed in Befunge.pm - Tutorial (doc/library.pod) on how to build new extensions. - all instructions implemented in instr.txt ** 0.12 Fri Apr 12 18:51:04 CEST 2002 - Shipped with some examples. - Shipped with the Funge-98 specs. 0.11 Fri Apr 12 18:33:09 CEST 2002 - Bug fix in the way spaces are handled in strings. - Bug fix in numeric input. - Bug fix in ascii input. - New script jqbf98, a standalone interpreter. - Rewrite of Makefile.PL to install this file. 0.10 Fri Apr 12 15:04:10 CEST 2002 - More POD documentation. - Bug fix in instruction t. - More debug messages. - New test 21concur.t -> tests concurrent Funge. 0.09 Fri Apr 12 12:05:03 CEST 2002 - Bug fix in y instruction (flags). - Bug fix in y instruction (size of TOSS). - 20th field of y instruction returns ENV sorted by keys. - More debug messages in Befunge.pm - New test 20system.t -> tests exec and info retrieval 0.08 Thu Apr 11 19:34:38 CEST 2002 - Fixed some bad API calls in Befunge.pm - Bug fix in LaheySpace.pm - More debug messages in Befunge.pm - Minor bug fix in output file for text flag. - New test 19storg.t -> tests storage - 10stdio.t extended to test input and output file. 0.07 Thu Apr 11 17:49:03 CEST 2002 - Fixed a bug in IP.pm and 03ip.pm - Fixed some bad API calls in Befunge.pm - More debug messages. - New test 18sos.t -> tests stack stack manipulation - instr.txt rewritten. 0.06 Thu Apr 11 15:06:50 CEST 2002 - Pod cleaning in LaheySpace.pm. - Some bug fixes in Befunge.pm - New test 16string.t -> tests string thingies - New test 17stack.t -> tests stack stuff 0.05 Thu Apr 11 14:25:10 CEST 2002 - Completed 14flow.t - New test 15decis.t -> tests decision making 0.04 Thu Apr 11 12:04:30 CEST 2002 - store_code includes magic to display the correct filename in error msgs. - instr.txt explained. - Bug fixes for control flow instructions. - New test 13dir.t -> tests direction changing - New test 14flow.t -> tests flow control 0.03 Thu Apr 11 09:59:28 CEST 2002 - Bug fix with string-mode. - Debug facilities. - New test 02befunge.t -> tests the exported functions - New test 10stdio.t -> tests ,. and space - New test 11nums.t -> tests 0-9a-f - New test 12maths.t -> tests +-*/% - New file inst.txt with the instruction and their current status (tested with a X). 0.02 Wed Apr 10 14:22:31 CEST 2002 - New function store_code. - Language::Befunge synopsis extended. 0.01 Wed Apr 10 14:01:20 CEST 2002 - Original version. - Every instruction is implemented, but _not_ tested. - Module LaheySpace written and tested. - Module IP written and tested.