Revision history for Zoidberg - a modular perl shell 0.90 Mon Sep 6 2004 This release is going to amsterdam.pm for demonstration. It is supposed to be the first release candidate for a stable 1.00 version (but not all builtins are done yet). - Refactored the settings to control parser behaviour; all kinds of blocks can be wrapped in array refs again Sun Sep 5 - Modified the format of redirections in the parse tree - {error} now also contains the signal that caused it - made routines in Z:Shell not modify $$shell{error} Sat Sep 4 - Fixed bug with multiline entries in the history file - PWD is now also logged for interactive use Fri Sep 3 - Blocks now also can be anonymous subroutines - Added --plug option to fluff - Mode can be a class now Wed Sep 1 - Tweaked the parsing of redirections - Made output() handle capturing more consequently - Added command substitution for `..` $(..) and @(..) Wed Aug 11 - Added the parser stack for word_expansion again - Renamed {contexts} to {parser} because it contains more then just contexts - Renamed {parent} to {shell} because I think its clearer Tue Aug 10 - Added the 'symbols' builtin to Commands - copied idea from Psh - Removed some deprecated devel builtins from Commands - Removed Help plugin, and merged the 'help' builtin in Commands - Added the 'which' builtin - copied idea from Psh Sun Aug 8 - Added autoloading of contexts (and thus modes) - Several small fixes and clean ups - Added shell_job() to skip parsing for a simple command Sat Aug 7 - Added 'completion_function' hook for contexts to define - Removed currying feature from DispatchTable - Made fluff use our own GetOpt - Added the CPAN plugin Tue Aug 03 - Updated the Fish api Mon Aug 02 - Made some obscure changes in the StringParser internals, it doesn't use a tied grammar anymore, hope it performs better now - Added 'builtin' and 'command' builtins to Z:Shell and made some changes in the parse_block() logic to optimise these uses Sat Aug 31 - Removed 'call' events in favour of using builtin commands for this - Made the 'output' routine capture output of builtin commands - Added parser flow chart to zoiddevel man page Fri Jul 30 - Stripped down lot of the StringParser interface - Added glob arguments and a 'path2hashref' routine to GetOpt - Simplified the Utils autoloading mechanism Wed Jul 28 - Finished Zoidberg::Utils::GetOpt base functionality Tue Jul 27 - Added sub shells, it uses the 'SUBZ' context - Removed 'SH' context in favour of 'CMD' context with the 'fork_job' bit set - Removed PATH caching, it isn't needed anmore since execvp knows the path this means no cache dir is used anymore - Added logic for redirection operators '>|', '>&', and '<&' Sun Jul 25 - Added GetOpt to the Utils collection - Removed data/settings.pl and data/grammar.pl and inlined their contents in Zoidberg.pm - Removed 'load_on_init' config for plugins, just use the 'loadrc' event - gave 'plug' a '--list' option Mon Jul 19 - Made Intel use Autoload - Added completion for the 'make' and 'man' commands Sun Jul 20 - Added Zoidberg::SettingsHash to Zoidberg.pm to tie the setting hash modifying a setting now generates an event - Added events for mode changes and plugin loading/deleting Mon Jul 12 - Made PluginHash understand bare '.pm' files as plugins without hooks - Made PluginHash understad 'settings', 'aliases' and 'context' in a PluginConf - Added 'plug' and 'unplug' builtins to control plugin loading - Fixed zoidcmd string so aliases work for non-word syntax - Added the 'mode' feature to switch default contexts Sun Jul 11 - Changed util funtion "abs_path()" into "path()" - Rewrote directory history feature in the 'cd' builtin Thu Jul 8 - Added overload function for the array-dereference operator for the return value of shell() - Added a 'loadrc' event 0.55 Sun Jul 4 2004 - Added a tied @JOBS for a perlish job-/list-control interface Fri Jul 2 - Revised the parsing of escapes a bit - Added regex globs Thu Jul 1 - Removed positional parameters from alias expansion, reserving @_ for future use - Made Zoidberg switch to multiline editing mode automaticly 0.54 Tue Jun 29 2004 Enough new stuff for a release and some cute bug fixes. Hope it will do better then the last two. - Fixed some bugs with regard to tab-expansion and quoting Mon Jun 28 - (re-)created Help.pm - deprecated usage of '.pd' files Sun Jun 27 - Added documentation for Commands.pm - fixed a quoting problem with "export var='value'" syntax by making it a special syntax Tue Jun 22 - Added heuristic enqueuing of commands when you start the command with an operator instead of a command Thu Jun 17 - Moved commands related to job control from Contractor to Commands - Z:Fish::Commands now uses AutoLoader Wed Jun 16 - Made aliases work more like macros, they can now contain logic and positional parameters 0.53 Thu May 27 2004 Oops, another "nuked" release :( Got a typo in the test script. 0.52 Tue May 25 2004 Mon May 24 - Added another interface between Intel and ReadLine Fri May 21 - Fixed bug in Intel code for shell object - Added "beat" broadcast event for async events Wed May 19 - Made elaborate changes in the execution order of lists of commands. Job control now effectively suspends the whole list rather then one process and step over it Wed Apr 14 - Added Zoidberg::Shell::scalar to make the Z:Shell AUTOLOAD function work more DWIM'ish; it isn't perfect but it is pure perl. 0.51 Thu Apr 08 2004 The 0.50 got "nuked" due to problems with the install scripts, so lets try again. 0.50 Mon Apr 05 2004 'this that time of the year again, time for a release Tue Mar 30 - Added the notify_verbose setting after trying tcsh(1) Fri Mar 26 - Changed $ENV{ZOIDREF} to $Zoidberg::CURRENT - Changed history to Log and made it compat with ReadLine Wed Mar 24 Tested zoid on IRIX - thanks to Jorik Jonker for the account - Made Storable an optional dependency because it's not included in Tue Mar 16 - Made Contracter send a SIGPIPE if a pipeline ends, fixes some hangs - Made shell() return true on succes - Removed is_exec_in_path(), just let execvp(3) figure it out Mon Mar 15 - Fixed some problems in the block_parser routine by adding a "parser" context sub, also made "word_list" and "filter" context subs into stacks Sat Mar 13 Tested on NetBSD - thanks to S.C.Sprong for the account - Introduced $ENV{CLICOLOR} to switch colours on/off - made Utils/FileSystem less disk usage intensive - various small fixes in parsing - Fixed a set of nasty bugs concerning errors of child processes and both logic list handling and notification Thu Mar 11 - Made intel understand the generic completion_function api - Dropped Term::ANSIScreen in favour of a hardcoded hash with ansi codes Sun Mar 07 - Removed Buffer plugin, replaced it by the ReadLine plugin using Term::ReadLine::Zoid is recommended - Removed Prompt plugin, replaced it by a new module called Env::PS1 Thu Jan 29 Tested on OS X / Darwin, this resulted in two bug fixes - Worked on a more sane job data struct Mo Jan 26 2004 - Made Intel expand filenames after a ':' or 'VAR=', expand filenames in perl code and expand environment variables in both perl and shell. - Added diagram of the process flow to zoiddevel - Cleaned up old stub code Su Jan 25 2004 Items below all reported by Markus "Psh2" Peter (a.k.a Warp) - Added small hack for darwin to the default zoidrc - Fixed bug in History when history is not writable - Dropped version numbers in Requires.pd because this forces people to install all dependencies up to date without necessity Fr Jan 23 2004 - Made _dezoidify() behave a little more hybrid, environment variables in lower case are also interpolated now - Fixed some bugs with interpolating of variables and globs in the tab expansion - Added "appdir" action to build process Fr Jan 16 2004 - Moved Zoidberg's build process to Module::Build 0.42 Sa Jan 10 2004 - Tested compat for 5.6.2, fixed a few oddities Th Jan 08 2004 - Changed parsing order for word expansions so $_ / $shell{topic} now also works for shell context We Jan 07 2004 - Aliases can now be recursive Mo Jan 05 2004 - Added a filter layer before context parsing Sa Jan 03 2004 Nerd weekend at carl0s' place -- fooled around with the parser - Added redirection for block contexts - Added local env syntax for all contexts - Fixed bug with multiple procs in pipeline segment - Cleaned up the interfaces for custom contexts - Added wantarray detection to shell() Th Jan 01 2004 - Removed Zoidberg::Parser and merged it's code into Zoidberg Mo Dec 29 2003 - Done some cleanups and some prep to dance with the parser - Removed Term::ANSIColor deps in favour of Term::ANSIScreen We Dec 10 2003 - added environment variables to dezoidify(), scalars just get translated, arrays get imported from Env.pm - fixed @ISA bug in expanding objects - added dezoidify for { .. } syntax, but not for perl{ .. } syntax Mo Dec 08 2003 - added DESTDIR make variable to allow packaging as an ebuild Sa Dec 06 2003 - added currying for closures to DispatchTable - carl0s made meta key combo's work transparent 0.41 Fr Dec 05 2003 Maintenance release, also know as "the sinterklaas release" (yes you have to be dutch to pronounce that correctly). Not really new features but some nice bug fixes and clean-ups. - replace all parent->print() calls with output() - removed overload for chdir, ENV{PWD} is now set at precmd event - small bug fixes in Buffer and Intel - Update lot of pod documentation We Dec 03 2003 - small bug fix in Parser - small bug fixes in Buffer and Buffer::Meta::Vim Tu Dec 02 2003 Re-routing some interface stuff - changed $self in eval scope to $shell - make Zoidberg inherit from Zoidberg::Shell - Zoidberg::Eval now only imports from Z::Shell - Make shell() in Z::Shell the main exec interface - added system() to shell so allow DispatchTable can be used to call system commands, OO only to avoid conflicts with perlfunc system() - make Zoidberg::AUTOLOAD also call Z::Shell::AUTOLOAD Fr Nov 28 2003 - Fixed bug that caused non existing commands to die silently - made error string less informative :) Tu Nov 25 2003 Done all kinds of namespace cleanup - Fixed Zoidberg::Utils cluster interface using a modified version of Exporter::Tidy - Moved Output, Error and FileRoutines to the Utils namespace, FileRoutines was renamed to FileSystem - Renamed StringParse to StringParser - Removed PdParse and StringFormat, moving pd_read to Utils.pm Su Nov 02 2003 - Splitted Z::ZoidParse into Z::Parser and Z::Contractor 0.40 Th Oct 30 2003 You may notice the numbering scheme changed, this was done to make the numbering a little more CPAN friendly. - Added regex to make statements starting with a sub routine calls also default the context to perl - Fixed bug that die'ing data files could kill zoid on init - Fixed job notification - Added 'events' en 'import' as keys for PluginConf We Oct 29 2003 - Fixed some config issues in Fish::Buffer - Rewrote Fish::Buffer::Meta::Vim Mo Oct 27 2003 - Applied patch submitted by carl0s to fix a bug that at random caused jobs to hang. Seesm to work. Sa Oct 25 2003 - Finished interface for custom contexts - Fixed bug in Intel that appeared after upgrading to perl 5.8.1 - Double checked man1 docs Fr Oct 24 2003 - Made Buffer use DispatchTable, tuned bindings for ^u and ^w - Added support for custom contexts Th Oct 23 2003 - Discovered and repaired a bug in DispatchTable's stack code - Changed sub names in Zoidberg::Shell We Oct 22 2003 - Fixed Config to work correctly with AppDir - Fixed a bug in the hashing of plugins Tu Oct 21 2003 - Fixed bug that zoidrc could kill zoid - Fixed bug that aliases didn't show in expansion - Made the DELETE function of DispatchTable actully pop it's stack - Changed all uses of Exporter into Exporter::Tidy - Removed Exporter::Inheritor and Devel::GetSymbols form cvs tree - Cleaned up some documentation and updated faq Su Oct 19 2003 - Added stack to error hash, callers $DEBUG is used as stack lenght - Changed ~/.history.log into ~/.history.yaml - Fixed nasty bug in &Zoidberg::Eval::_dezoidify for 'arrow syntax' - Cleaned up most debug code, also added '-DSome::Class' switch to fluff - Added dir format for plugins Sa Sep 13 till Su Oct 19 2003 Didn't record Changes for some time, so now I list what I remember without specific dates -- bad project manager, no cookie ;) - Created Zoidberg::PluginHash to tie $zoid->{objects} - Patched DispatchTable to interact with PluginHash - Made DispatchTable stacking so it can also be used for {events} - Merged all config for fluff, plugins and Z::Config.pm into {settings} - Revised some of the make process; creating appdirs goes more smoothly now see also Install - The dir ~/.zoid isn't used by default but can overload share/zoid - Share doesn't contain a 'skel' subdir anymore but now has the subdirs 'data' and 'plugins' - Zoidberg.pm doesn't have a init() sub anymore, this fixed some bootstrap bugs between fluff and Zoidberg - Started work on Zoidberg::Utils, this should ultimatly bundle all the library stuff - added read_data_file() to Utils, should be used instead of pd_read - Created Zoidberg::Output to contain output stuff to be bundled in Utils, currently Zoidberg.pm has backward compatible code. - Added Buffer->ask for later usage in plugins - Moved a lot of unused modules out of cvs tree Su Aug 03 2003 - Added array support for sh-like syntax Mo Jul 28 2003 - Added dirstack functionality to Fish::Commands Su Jul 27 2003 - Added variable expansion for shell-like syntax - Added fake arrays for shell-like syntax 0.3c Fr Jul 18 2003 Minor release, some bugfixes, we wanted to have the latest version available for YAPC::Europe. Tu Jul 14 2003 - added support for rcfiles - added some command line switches - made Zoidberg::Config values potentially search paths Su Jul 13 2003 - rewrote Zoidberg::Shell, initial version works - changed the Eval AUTOLOAD function, eval now uses the one from Zoidberg::Shell - Added a test (t/90_full.t) running a complete zoid in non-interactive mode :) Th Jul 10 2003 - updated most documentation - removed deprecated plugin docs 0.3b Mo Jul 07 2003 Basicly a bugfix release, but also two features restored. Su Jul 06 2003 - Restored tab expansion for zoid-syntax - Restored basic support for redirections Sa Jul 05 2003 - A critical bug was fixed in the execution of logic lists. Fr Jul 04 2003 - Fixed a bug so now the parser silently ignores empty blocks, this shows for example after a '&' or ';' command delimiter. - Carl0s fixed a bug in the job control code which caused a lot of zombie processes. - Initial IPC code added. 0.3a Tu Jul 01 2003 Finally a new release with /some/ level of stability. Enjoy ! Mo Jun 30 2003 - Fixed some issues with escape chars in Intel Su Jun 29 2003 - Carl0s added another mini buffer: SearchHist. use ctrl_r to open search history for a command. - Fixed some issues with escape chars in StringParse Fr Jun 27 2003 - Fixed lot's of small bugs in the make process. - Changed "LOCAL_DIR" var to "APPDIR" 0.3a_pre1 Tu Jun 24 2003 Releasing 0.3a_pre1 to test the make and release process - Fixed Intel module for the new StringParse system Th Jun 19 2003 - Added Zoidberg::Error for OO exception handling We Jun 04 2003 - Implemented new StringParse module, fixes lot of bugs. - Changed the parse tree format. - Patched ZoidParse and Eval to work with new parse tree format. Su Jun 01 2003 - Added Zoidberg::DispatchTable to tie a hash with commands and/or functions, it understands "->" notation. Mo May 12 2003 - Added support for $CDPATH, upgraded "cd" builtin. We May 07 2003 - Fixed major bugs in make process, it's now CPAN compatible. Sa Apr 19 2003 - Added Zoiderg::Config Su Apr 06 2003 - Removed the MOTZ plugin, this was just legacy. - Tuned the interface of the FileRoutines module, seems a bit faster now. Mo Mar 31 2003 - Both events and commands are now defined in a plugins config file, thus allowing zoidberg to 'wake up' plugins when needed. - Commands defined by a plugin are integrated with both the perl syntax as with the command syntax variants. We Mar 19 2003 - All plugins now have their own config files. This makes moving plugins around a bit easier. Tu Mar 18 2003 - Config is not dumped on exit any longer, change of mind. - The FileRoutines cache now dumps using Storable, this speeds up the initialisation. 0.2b Su Feb 16 2003 - Module namespace cleaned up for CPAN 0.2 We Feb 12 2003 - Plugins get loaded on use, not on init, thus reducing the footprint of shells running in the background. - Exec comand fixed, this solves a lot of bugs. - Lots of other small fixes. Jan 2003 - ZoidIPC works over domain sockets, providing transparent objects. - Partially rewrote the input buffer, allowing multiple modusses. - Vi commands and keybindings are fairly complete (usable). Fr Jan 10 2003 Lets try another approach to Makefile.PL, all make targets now link to files in the 'm/targets' directory. - We no longer use ExtUtils::MakeMaker - Install everything with "make all" Try "perl Makefile.PL && make help" for more info. We Jan 8 2003 Making a fresh cvs directory -- this will make the directory structure clean and fit for packaging. As a result there will no longer be a separate ProgramFiles package. Also the release scripts etc. have been updated to the new structure. 0.1c Mo Jan 5 2003 Critical bug in t/use_ok.t -- 0.1b won't install on systems without cvs modules installed :(( - Intel now knows "multi set" results -- allowing for more flexability - Zoid now waits correctly for foreground jobs 0.1b Tu Dec 31 2002 Major change in the way pipes are handled so time for a new devel release. Also zoid as inlog shell seems to be working. - New pipes implementation, you now can use all context types in pipes. - Started writing user documentation. - Tab expansion more stable, expanding objects works again. - More keybindings implemented. - More escape codes to use in the prompt. - Command line options fixed. Prompt respawns to fast at the moment. 0.1 Fr Dec 20 2002 We decided to make an unstable release since there are lot of fixes since the 0.04 release, but there is still a lot to do before releasing a stable version. The version numbering scheme changed today: - odd numbered minor numbers will only be used for (unstable) devel versions - versions will have only one major and one minor number for real changes - a second minor number points to (small) bug fixes (like typo's) So today we release the 0.1-devel-unstable version, the first stable release will be 0.2, we are looking forward to that release :) Th Dec 19 2002 denthijs wrote: > zoid running natively on macosx without problems > config: perl 5.6.0 , osx 10.2 > i needed a lot of perlmods (ofcourse) but everything went like a charm - "zoid in zoid"-bug fixed -- zoid now takes back terminal control after leaving a second zoid, or for instance after leaveing a sshclient. We Dec 18 - made all help files pod and upgraded the help system -- Pod::Text::Color is nice - added some general help files - added zoid.pod -- now "man zoid" works - made fluff and install.pl to use Getopt::Long Dec 15 - also added Ctrl-BackSpace Tu Dec 17 2002 - thx to carl0s keybindings finally work under debian "sid" and redhat 8.0 non-blocking reading from STDIN seems to be malicious. Fr Dec 13 2002 - added a ~/.zoid/plugins dir -- dont bug the admin to install plugins - added Ctrl-left and Ctrl-right in the buffer Dec 2002 Created the zoidberg-devel mailing list. - "less" finally works in pipes - the Trog object and the simpel parser will be taken together to form ZoidParse.pm - apart from Intel the whole parsing structure is now context oriented Th Nov 29 2002 - we now use the £ sign as special sigil also £_ as special topic :)) - fixed exit status both intern and extern Th Nov 28 2002 - parser is now fully context bassed & hot swappable - created namespace for persistent vars - carlos implemented a SQL plugin - added file expansion - inline:: glue -- use C on your perl prompt 0.04 Nov 22 2002 Released Zoidberg 0.04 This will probably be the last version of the 0.0x series. - many bug fixes - rewrote basic parsing - added '&&', '||' and ';' - added commandline options to "zoid.pl" Nov 7 2002 - The new input parser is in place (Trog.pm by carlos) - Pipes are (partially) implemented 0.03 Mo sep 30 2002 - multi line editting done - changed from ".ph" to ".pd" more powerfull dumper - can even decompile closures - added much intel to tab expansion - added help functionality - added a few commands - many bug fixes ... 0.02 Fr sep 27 2002 - included basic functions by rewriting a personal project - created a sourceforge project - prepared first release 0.01 Wed Sep 25 18:19:48 2002 - original version; created by h2xs 1.21 with options -AX -n Zoidberg 0 Oct 2002 Freshmeat can't give me a perl shell I really like better then bash. - done some hacking on a perl shell -3 Somewhere spring 2002 project 'fluff' - intended to be a MUD client - MUD-like shell environment - route-planner for Ahnk-Morpork