Osh Release History

Version Date Description
0.1 October 2004 Each osh command ran as a separate process. Pickling was used to transmit objects between commands.
0.2 December 2004 Complete rewrite. Introduced piping of objects internal to python process, denoted by '^'. Everything after "osh" on the command line is concatenated into a single string which is then parsed. Introduced tpg parser to parse command line.
0.3 May 2005 Added remote execution syntax and commands (@, [...], install, installosh, copyfrom, copyto).
0.4 September 8, 2005 Lots of polishing and bug-fixing based on day-to-day usage in helping to develop the Archivas cluster, ArC.
0.5 October 25, 2005 Cleanup for first public release. Added timer command, process objects and the processes function.
0.6.0 October 31, 2005 Cleaner integration with Python functions. Previously, functions in f, select, etc. received a single argument, typically a tuple or list, and elements were obtained by subscripting. Now, the elements of an incoming tuple or list are assigned to arguments. (If you want to use a tuple argument, then prefix the argument declaration with '*', just as in ordinary Python.) Also deleted spread command, replacing it with expand, which is more general.
0.6.1 November 15, 2005 Bugfix release. sql command no longer hides error messages from database system.
0.6.2 December 15, 2005 Bugfix release. Fixed a number of bugs in the squish command.
0.6.3 February 15, 2006 Bugfix and minor feature release. Fixed error handler to not propagate errors downstream. Added -t option to out. Much improved ctrl-c handling.
0.7.0 April 26, 2006 Major upgrade:
  • Added an API: osh can now be used from within Python.
  • Nodes of cluster can be configured as a list of addresses as before; or as a map in which the key is a logical name and the value is the address.
  • Generalized expand command.
  • Modified options of window command.
0.7.1 October 5, 2006
  • oshtestssh is now much faster. It checks all nodes in parallel.
  • Fixed bugs and error reporting in the sql command.
  • Cluster configuration can now specify a default database for each node of the cluster, (see documentation for sql command).
0.8.0 January 8, 2007
  • Restructured so that top-level modules are in the osh package.
  • Osh configuration file now supports slice notation, (e.g. osh.remote['cluster-123'].user = 'root').
  • Added version command.
  • Added imp command.
  • Added py command.
  • oshapi errors are now reported as exceptions, not output on e stream. Better fit for a python script. This also enables osh() to return o stream output in a list.
  • New oshapi command, return_list() to return o stream output in a list. Most uses of oshapi no longer need to handle o and e stream outputs via handlers.
  • Improvements in error handling, especially remote errors.
0.8.1 April 15, 2007
  • Added cat command.
  • Improvements in error handling, especially remote errors.
0.9.0 In progress Major overhaul of osh.
  • Removed the concept of named streams. They were only used to have separate output and error streams, and error streams were awkward to use, different in the CLI and API, and a mess internally. The 'o' stream is still present, but not named. It's just the one stream that carries objects from one command to the next. Exceptions and stderr output are handled by functions, which can be replaced by the user. Default implementations print to stderr.
  • Cleanup of module names, following introduction of package structure in version 0.8.0. E.g., osh.oshapi has been renamed osh.api.
  • Complete rewrite of documentation. Command-line help and reference manual are both derived from module and function __doc__ strings. The reference manual is generated using epydoc.
Other changes:
  • gen command has new flag, -p, to format generated integers as 0-padded strings.