Osh Release History

Version Date Description
1.0.3 January 27, 2013
  • Terminal output symbol ($) now formats output using %s. This avoids tuple notation for output tuples of size 1.
1.0.2 October 3, 2010
  • File and Process objects can now be transmitted, e.g. this works: osh @fred [ ls /foo/bar ] $
  • ps command can now optionally omit the osh process itself from the list of processes.
  • timer can now output time as a tuple or seconds since 1/1/1970.
  • process.command_line renamed to commandline.
  • sql command is now better at figuring out whether to report rows or a row count. Native postgres driver support has been disabled as a result. use a DBAPI driver instead.
  • Fixed bugs in handling of list- and tuple-valued accumulators for the agg and red commands.
  • Fixed long-standing bug in out command which occasionally resulted in misplaced newline characters downstream from a fork command.
1.0.1 May 11, 2010
  • MySQL now supported. (It just worked, but now I know.)
  • Added support for ssh identity files.
  • New command: red (reduce): A simplified form of the agg (aggregation) command. agg is more general. red is simpler, but should suffice in nearly all cases.
  • Replaced used of process module by subprocess.
  • Bug fixes.
1.0.0 October 27, 2008 Major overhaul:
  • Overhauled user guide: Added page discussing osh concepts.
  • DBAPI 2.0 support: Earlier versions of osh could only access Postgres databases, and only using the pygresql driver. Osh now supports any DBAPI 2.0-compliant driver.
  • New commands: ls (list files) and ps (list processes).
  • File support: A File class has been added to osh, simplifying operations on files and directories. For example, osh ls /foo/bar ^ f 'file: (file, file.size)' $ prints a list of file names and sizes for files in /foo/bar.
  • Remote execution and multithreaded execution: Remote execution, (as in osh @cluster [ ... ]), created a thread for each node and then executed the bracketed command on each node. Forking and remote execution have been unbundled. The CLI syntax has been generalized to enable forking separately from remote execution.
  • Merging of ordered sequences: If each thread of a forked command creates an ordered sequence, then it is often useful to merge the sequences into a single sequence. In earlier releases of osh, this would have required a sort. In many situations, the sort can be replaced by a merge.
0.9.2 January 1, 2008
  • Bug fixes.
  • Added support for "running totals" to the agg command, (the -r flag).
0.9.1 October 7, 2007 Bug fixes.
0.9.0 August 25, 2007 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.
0.8.1 April 15, 2007
  • Added cat command.
  • Improvements in error handling, especially remote errors.
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.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.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.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.6.2 December 15, 2005 Bugfix release. Fixed a number of bugs in the squish command.
0.6.1 November 15, 2005 Bugfix release. sql command no longer hides error messages from database system.
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.5 October 25, 2005 Cleanup for first public release. Added timer command, process objects and the processes function.
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.3 May 2005 Added remote execution syntax and commands (@, [...], install, installosh, copyfrom, copyto).
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.1 October 2004 Each osh command ran as a separate process. Pickling was used to transmit objects between commands.