NEWS (C version)

* Note: Implied Consent -
  If you send in a code patch or fix of one type or another you consent
  to have your name and email address listed here unless you explicitly
  note otherwise.  Whether your name & email is actually listed depends
  on how extensive the change.  (If it's a minor code, document change,
  or spelling correction your name will probably not be listed.)

****************************   Release 3.3 ******************************
modules 3.3.0
	* I18nized the various messages.
	* Removed the module-trace command
	* Simplified the module syslogging interaction
	* Removed the modulefile caching, which has been one of the major
	  obstacles for deep modulefile directories
	* All string allocation is performed by a common internal routine
	* --disable-beginenv is now the configuration default
	* Converted the module commands to use Tcl 8.0 dual-ported objects
	* Check for directory existence & added tests for chdir
	* Use Tcl ckalloc() and ckfree()
	* Removed the old debugging code ... use a symbolic debugger instead
	* Added a unix vector package to ease list handling
	* Consolidated the MODULEPATH list code to one spot
	* Included another modulefile which adds $HOME to the *PATH hierarchy
	* Wrapped the Tcl hash array code into a more convenient form - MHash
	* Put all hash arrays in the MHash form and removed crufty code
	* Changed the global rc file name to modulerc
	* Let the path separator "/" be dependent on the system
	* Added the "notavail" modulefile (as shown in man page)
	* Let the "module-version" command use a "name" of '.' for "this"
	  module directory ... useful for deep modulefile directories.
	* Reworked configuration and Makefile for fine-grain control of
	  certain paths and config files.
	* Removed the $MODULESHOME env.var. which is not used at all.
	* Fixed the "module purge" memory corruption (Poor Yorick)
	* Removed the RegExp code from cmdPath.c (Poor Yorick)
	* Isolated calls to the new interpreter and get & set env.vars.
	* Fixed unload & load of same module problem.
	* Removed the ChangeLog from the repository.

****************************   Release 3.2 ******************************
Modules 3.2.10
Dec 21, 2012				R.K. Owen (
	* Fixed the module switch with custom delimiters (Tyson Whitehead)
	* If a bash shell check if interactive or not for alias/functions
	* Fix the flags with regards to recursive load/unload
	* Fix init file typo (bug 3497092)
	* Moved from cvs to git (and now: modulefile/module-git)
	* Fix the module swap with the --delim option (Tyson Whitehead)
	* Increased the "update" buffer (Leon Kos)
	* Use the locale for sorting modulefiles by the avail command
	* Fixed the segfault problem with Tcl_RegExpCompile() (Kenneth Hoste,
	  Tyson Whitehead)
	* Updated the FSF address in LICENSE.GPL (Jan Synacek)
	* Forked the Tcl-only version to be maintained by Kent Mein.
	* Added the "module-info type" query to return 'C' to indicate that
	  the modulecmd executable is the "C" version.
	  (The Tcl-only version will return 'Tcl'.)
	* Search /usr/lib64 for also (Jan Synacek)

Modules 3.2.9
Nov 24, 2011				R.K. Owen (
	* Fix the coexistence of load/remove flags (Martin Siegert)
	* Fixed an overlapping string copy (Wilson Snyder & Orion Poplawski)
	* Isolated calls to the new interpreter and get & set env.vars.
	* Optionally use Tcl memory check routines for malloc/realloc.
	* Crucial bug fix of same by (Orion Poplawski).
	* Fixed the "module purge" memory corruption (Poor Yorick)
	* Added support for Ruby (Tammo Tjarks)
	* Fix the flags with regards to recursive load/unload

Modules 3.2.8
Oct  1, 2010				R.K. Owen (
	* Handle the .modulerc/.version in deep modulefile dirs,
	  Patches thanks to Lindsay Todd, and others.
	* Note that .version takes precedence over .modulerc files.
	* Renamed init/python to init/ and updated with
	  anonymous patch to eliminate 'sed' references
	* Renamed init/perl to init/
	* Added brief section to module.1 on invoking modules for perl & python
	* Added Nathaniel Waisbrot's patch for CMake support with tests.
	* Fixed the MANPATH in modulefiles/modules to use configure generated
	* Added the configure --with-man-path so a system specific MANPATH
	  could be used.  Some "man"s radically change their search path
	  when a MANPATH exists and when not.
	  The default is "/usr/man:/usr/share/man" (when both exists).
	* Purging a purged module list does not result in an error.
	* Fixed the configure script for searching for
	  and handle --without-x in the tests.

Modules 3.2.7
Jul 30, 2009				R.K. Owen (
	* Have init/bash export the module function (thanks to Roy Dragseth)
	* Fixed swap bug when prepending or appending multiple times
	  (fix thanks to Gavin Walker), added tests for same.
	* Have purge remove loaded modules in reverse order
	  (patch contributed by carriees)
	* Added a batch of patches from Gerrit Renker
	  - Goes through each of the two manpages, bringing them up to date.
	  - Fix an error in caused by misspelling
	  - Fix typos in help messages and source-code comments
	  - Fix the setup of $MODULESPATH to not have a trailing ':'
	  - Fix segmentation violation occurring when the shelltype is absent
	  - Fix a condition where 'make uninstall' does not cleanse a directory
	  - Fix a build problem which set the executable bit on 'data' files
	  - Cleans up noise in '.modulespath' file
	  - Replaces external sed filter script with internal rule
	  - Adds missing 'zsh' case in etc/global
	  - simplify (t)csh initialisation
	  - Add bash auto-completion for the 'module' command
	  - Adds new 'chdir' modulefile command (sets cwd on module load)
	* versions a & b fixed some bugs

Modules 3.2.6
Oct 29, 2007				R.K. Owen (
	* Fixed the locate_module.c:realloc() calls which didn't properly
	  take the element size into account (Fix thanks to Ron Isaacson).
	* Fixed some valgrind errors found and resolved by Alan Morris.
	* Skip .git version control dirs in modulefile dirs.

Modules 3.2.5
Feb 14, 2007				R.K. Owen (
	* Wrapped all malloc() calls to make sure the size is never 0.
	  This fixes a problem spotted by Francesco Nigro under AIX,
	  and diagnosed by G Lehnert.
	* Updated tests when domainname is unknown.
Modules 3.2.4
Feb  2, 2007				R.K. Owen (
	* Fixed bug where "empty" directory paths in the MODULEPATH env.var.
	  needed to be handled gracefully.
Modules 3.2.3
Jun  1, 2006				R.K. Owen (
	* Allow version names to be substrings of other version names
	  thanks to dgoldendias at
	* Fixed compiling bug when --enable-log was specified.
	* Made some minor changes to the syslogging and tests so that
	  they all pass.
	* the set-alias command will for Bourne shell derivatives
	  substitute the safe ${1+"$@"} for $*.
	* Added the --delim option to prepend-path and append-path to
	  allow arbitrary delimiters instead of the colon ':'
	* Fixed build problem with regards to the init/* files
	  (solution due to Thomas Zeiser)
Modules 3.2.2
May  4, 2006				R.K. Owen (
	* Replaced all strtok() calls with an internal version.
	* Now can append/prepend and empty string '' or colons ':'
	* Added more --with-tclx-* options in case
	  can not be found, but the TclX lib does exist.
	* Expanded the search path for
	* Updated the TclX init call for 8.4
Modules 3.2.1
Feb 13, 2006				R.K. Owen (
	* Catch 'exit N' within modulefiles, use this as an exit return code.
	  Has the behavior of loading the modulefile up to the point of exit.
	* For bash, a non-zero exit will append a test that returns false.
	* Added tests for "break" and "exit N"
	* various other bug fixes
Modules 3.2.0
Jan 19, 2006				R.K. Owen (
	* default for cache is now "no"
	* Added version_test() to testsuite to make some of the
	  tests conditional on the values generated by --version.
	* Reworked every configure-based file
	  - the configure options help is formatted with AC_HELP_STRING
	  - uses automake to generate most of the
	  - renamed to per autoconf
	  - Versioning is optional now with a configure option
	  - reworked the init scripts for versioning or not
	  - eliminated acconfig.h and put templates in
	  - make install now honors the DESTDIR variable for package builds
	  - honors bindir for modulecmd location
	   (but the init scripts are only correct if no versioning)
	* Collected the usage info and now it can be displayed with
	  the --help or -H option (same as help)
	* --version now gives most of the optional configure parameters
	  for easy debugging of problems
	* Made the output deterministic (sorted) and reworked tests also
	* Fixed the UserLevel check code (which failed when optimized)
	* Fixed bug in "Switch" command when --enable-free was set
	* Added or Fine-tuned the --enable-shell-funcs, --enable-shell-alias
	  and --enable-shell-eval configure options.  The configure script
	  will test for the existence of the first two properties in /bin/sh
	  where the options can override the tested values.  Made the
	  associated tests conditional on the existence of these properties.
	* The configure script now tests how large env.vars. can be for
	  /bin/csh, the default behavior is if > 4000 then do not set
	  --with-split-size, else if smaller then set to the tested
	  value - 20.  If the option is given, but no value, then set
	  to 1000.
	* Fixed the tests to work when --enable-beginenv ... also changed
	  the error message when disabled.
	* Added and set the default for --enable-beginenv=test, which means
	  that this feature is enabled by the user by setting the
	  MODULESBEGINENV env.var. for a file name (allows one level
	  of variable expansion).
	* Have the caching skip version control directories (CVS, RCS, .svn)
	  unless they have a .version file then assume the directory is
	  a genuine modulefiles directory.
	* Expand '$$' to the current process id when performing one
	  level of variable expansion for the MODULESBEGINENV env.var
	* Fixed up the automake/autoconf scripts to create a workable
	  distribution tarball
	* Fixed the configuration behavior if --exec-prefix is given
	  Also put the init/ scripts under the --exec-prefix, but
	  keep the special bin scripts under the --prefix root.
	* Updated the config/tcl.m4 (used by configure)
	* Eliminated any warnings caused by using Tcl 8.4
	* Fixed any mixed size differences when using ints and pointers.
	  (Only an issue with 64 bit machines.)
	* Updated the init* subcommands to work on multiple "module load"
	  lines in the "dot rc" files.  Added a suite of tests too.
	* Eliminated the --with-force-path option, with the attendant
	  code.  It was supposed to make sure PATH and LD_LIBRARY_PATH
	  contain some minimum set of paths ... it was rarely, if ever,

	 	Andrew Ruder  		
	* cmdConflict.c: Fixed memory allocation bug in cmdPrereq().
	  When there is more than 1 argument to the prereq command, both
	  savedlens and savedlists were indexed past what the initial malloc
	* ModuleCmd_Refresh.c: Like "update" but refreshes only the
	  non-persistent attributes of the currently loaded modules,
	  regardless of the state of the loaded modules (i.e. refresh

	 	Mark Lakata  		
	* removed configure *.in files from testsuite and added envvars to
	  allow running the testsuite from another directory
	* other fixes to testsuite
	* allowed one argument for 'switch', i.e. "module switch foo/1.3"
	  is the same as "module switch foo foo/1.3"
	* bug fix in cmdXResources regarding parsing the XRDB
	* removed probetcl from distribution; function moved to aclocal.m4
	* special shell chars in env vars are escaped rather than
	  quoted. This allows the use of single quotes inside the env var
	* noglob option turned on for module command in csh/tcsh
	* use customed temp file routine, rather than tmpnam or tempnam
	* minor bugs
****************************   Release 3.1 ******************************
Modules 3.1.6
Thu Jan  3 20:56:16 PST 2002		R.K. Owen (
		Scott Gaskins		
	 	Leo Butler		)
		Philip Kearns		
		Andy Bruce		
	* A 'break' in a modulefile will cause the modulefile to
	  not be added to $LOADEDMODULES, but will be considered
	  a successful execution to not affect other modulefiles
	  being loaded concurrently (Patch due to Scott Gaskins).
	* Tests and docs added for the above.
	* Added CYGWIN/Windows specific code (due to Andy Bruce)
	* Fixed problem with module load when the full path
	  is given (patch due to Scott Gaskins).
	* Added tests for the above problem.
	* Added the Modules-Paper in PDF format (thanks to Philip Kearns
	  and Leo Butler for raising the issue).
	* Modified probetcl to avoid using the -c option
	  (patch due to Philip Kearns).
	* Modified probetcl to use tclsh first then tcl
	* Added TCL_VERSION to configure and use it in the Makefile
	  to use the -ltcl@TCL_VERSION@ library.
Modules 3.1.5
Sat Aug 18 07:32:48 PDT 2001		R.K. Owen (
		Eric Stanley		
	* Fixed up cmdPath to remove individual items from a path
	  (patch due to Eric Stanley).
	* Fixed problem of failed "module loads" in a modulefile
	  (patch due to Eric Stanley).
Modules 3.1.4
Fri Aug  3 12:45:55 PDT 2001		R.K. Owen (
	* Some preliminary steps to a rpm file.
	* Added bz2 files to distribution mix.
	* Fixed "module swap" to put the substituted module in the
	  same path location as the old.  Also added a number of tests
	  for this feature.
	  (Bug was pointed out by Leo Butler )
	* Added tests for the "is-loaded" modulefile command introduced
	  back in 3.0.8-rko.
	* Fixed up some documents.
Modules 3.1.3
Wed Jul 11 14:30:53 PDT 2001		R.K. Owen (
	* Added module-cvs modulefile for easy CVS/ftp access to the
	  modules CVS repository.
	* Added README.perl describing Ron Isaacson's Env::Modulecmd
	  perl module (
	* Added document file INSTALL.RH7x which explains how to set up
	  an modules environment for all users through the system shell
	  files.  Is specific to Linux/RedHat 7.x, but is of general
	* Added further tests for modulefile "module use dir_path"
	* Fixed bug of unloading a modulefile with a "module use dir_path"
	* Environment variable contents are now quoted to preserve
	  any embedded environment variables. (Needed for versioning)
	* Added over 50 tests specific to module versioning, and testing
	* Fixed the unsetenv on unload function, the feature added in 3.0.6-rko
	  was supposed to set the env.var. to the optional third argument.
	  This was to allow old env.var. values to be recovered by unraveling
	  a stack set in an other env.var.  Added tests for this feature.
	  This is used by the version modulefile.
	* Fixed and updated the version modulefile to allow stacked
	  versions to be removed the stack.
	* Removed an annoying spurious stderr newline.
Modules 3.1.2
Fri Jun  8 23:12:24 PDT 2001		R.K. Owen (
	* Fixed the "module use --append" feature, and fixed the tests
	  for "module use", "module use --append", and "module unuse".
	* Changed the global variable names (flags,current_module) to
	  (g_flags, g_current_module) to identify their ubiquity in the
	  module source.
Modules 3.1.1
Thu Feb  1 11:20:44 PST 2001		Robert Minsk (
		Robert Minsk		
	* init file for python added (Robert Minsk)
	* Added the beginnings of support for scheme.  Still need an init
	  script. (Robert Minsk)
	* Fixed bug with the _LMFILES_ environment variable.  If a user was
	  using a csh variant of a shell and modules was compiled
	  with with-split-size enable the _LMFILES_ variable was not
	  handled correctly when it needed splitting. (Robert Minsk)
	* Fixed bug with creating aliases for ksh, bash, and zsh to
	  recognize the escape ("\").  Any time an alias had a "$"
	  in it a function was created instead of an alias. (Robert Minsk)
	* Fixed bug in searching the LOADEDMODULES environment variable.
	  Would not find a module if only a partial module name was given.
	  (Robert Minsk)
	* Fixed memory corruption bug in LOADEDMODULES environment variable
	  handling. (Robert Minsk)
	* Fixed bug in csh init file.  Some versions of csh echo the current
	  prompt if the shell was in an eval of an eval (eval `eval ...`).
	  (Robert Minsk)
	* Started adding support for mel (Maya Extension Language)
	  (Robert Minsk)

	Note: Since I have just recently become a co-maintainer of modules with
	      R.K. Owen it has been hard to keep up with user submitted
	      patches.  If you did not receive proper credit for a fix or
	      enhancement that has appeared in this release you will
	      receive proper credit in the next release.  Robert Minsk
Modules 3.1.0
		Jens Hamisch		
		Robert Minsk		
		Magnus Holmberg		
	* Fixed the changed *interpter->result return value with Tcl8.3+
	  (patch due to Jens Hamisch).
	* Removed warning message for unloading a module that's not loaded.
	* Added source code cross-referencing via cxref-1.5b(patched)
	  (see for details).
	* Changed the long format, eliminated the release column as a separate
	  entity.  The release value is just part of the package name.
	* Added --with-dot.ext[=<.ext>] to configure & DOT_EXT to config.h
	  for an extension to be added to the shell dot-file names for the
	  "module init*" commands
	* Addes .modules to dot file list for "init*" commands (Magnus Holmberg)
	* Matched the "help" and "man module" optional commands more closely
	* Fixed man pages it's .modulerc not .modulesrc
	* Made it easier to ftp distribution to
	* Fixed init/perl & init/tcsh (due to Robert Minsk).
	* Fixed "module list" to show paths deeper than 2 levels
	  (due to Robert Minsk).
	* Fixed warning message about `alias' to non-sh/csh derivatives
	  (due to Robert Minsk).
	* Fixed tests with regards to syslogging & alias.
	* Licensed changed to GPL.

****************************   Release 3.0 ******************************
Modules 3.0.8-rko
Wed May 10 09:45:55 PDT 2000		R.K. Owen (
		Steve Muskiewicz	
		Robert Minsk		
	* Added another option to the module-info command named "specified"
	  which gives the name as specified on the command line.
	  This patch is due to Robert Minsk.
	* Added the beginnings of python support.  Still need an init
	  script.  This patch is due to Robert Minsk.
	* Changed the numbering of modules during a terse listing.
	  Instead of numbering left-to-right row by row, number
	  top-down by columns ... this corresponds to the order
	  of modules.  Patch is compliments of Steve Muskiewicz.
	* Fixed a modulefile unload of another modulefile problem.
	  This patch is due to Steve Muskiewicz.
	* Fixed swap bug with setenv.  Patch due to Robert Minsk.
	* Added 'is-loaded' to test whether a given module is loaded
	  or not already.  (need to add testsuite.) Provided by Robert Minsk.
Modules 3.0.7-rko
Fri Apr  7 10:58:45 PDT 2000		R.K. Owen (
	* Fixed xgetenv
	* A bunch of patches from Robert Minsk
	  that eliminates a lot of the compile time warnings
	  (mostly unused variables etc.)
	* More patches from Robert Minsk for the --disable-cache
	* Modified add.modules to provisionally handle .bash_profile
	  and .bash_login (thanks to Ted Richards).
	* Modified the way shell start-up files are specified in init.c
	  with patches from Max Zomborszki.  Now easier for a site
	  to make local customizations.
Modules 3.0.6-rko
Wed Feb 16 09:06:34 PST 2000		R.K. Owen (
	* Changed "unsetenv" to allow an optional third argument to
	  set the env.var. to when unloading.
	* Fixed bugs with and upgraded the "module init*" commands.
	* Added a preliminary RPM .spec file ... some of the versioning
	  changes conflict with some RPM features.
Modules 3.0.5-rko	(not meant for public release)
Fri Jan 21 18:59:18 PST 2000		R.K. Owen (
	* Changed the behavior if "module" is called without an argument.
	  In addition to the error message it prints out the help text.
	* Fixed a problem with module swapping. A test needs to be
	  added to the testsuite.
	* Rewrote many of the init files & modified modules to allow
	  one level of env.var. expansion in the MODULEPATH & MODULERCFILE
	  environment variables.  The purpose is to allow the co-existence
	  of many versions of the module command.
	  Only this & successive versions will implement this.
	* Got the --with-logging configure option actually doing something
	  in the code.  The default is no syslog-ing.
	  However, this affects the tests ... expect 3 failures originating
	  from testsuite/modules.50-cmds/100-loglevel.exp .
	  (fixed in version 3.0.9-rko)
Modules 3.0.4-rko
Wed Jan 12 09:45:21 PST 2000		R.K. Owen (
	* Rewrote a lot of the calls to low level Tcl RegExp
	  routines, which required direct access to the tclRegexp.h
	  header file.
	  Used higher level Tcl routines to accomplish the same.
	  The net result is that modules should be configurable under
	  any version of Tcl > 7.4 (not tested).
	* Rewrote a reference to a low level Tcl glob routine, which
	  required direct access to the tclInt.h header file.
	  Used the $HOME environment instead.
	* Mean-time hack to support multiple subdirectories for the
	  "avail" option.
	* Fixed the long listings to be Y2K OK.
	* Added a version option to print out the module version ...
	  for future automated scripting.
	* Some documentation clean-up.
	* Removed all references to PARSEABLE_ERRORS in config.h
	  and configuration ... since it's not used at all.
	* Modified init files because some systems treat undefined
	  variables in sh/ksh/bash/zsh as errors and terminates login
	  process (Thanks to Martin Jost).
	* Modified Tcl_HashTable declaration initialization to 
	  assignment, because some ANSI C compilers complain
	  (Thanks to Martin Jost).
Modules 3.0.3-rko
Thu Dec 23 08:20:44 PST 1999		R.K. Owen (
	* removed the global definition refering to stdout and put
	  the assignment in one of the routines.  This fixes a
	  compilation problem with RedHat 6.1 & gcc-2.95.
Modules 3.0.2-rko
Thu Nov 11 16:57:30 PST 1999		R.K. Owen (
	* added the --[enable|disable]-version-magic option to the
	  configure script and associated sources.  However, `disabling'
	  will break the ./modules.20-locate/030-defvers.exp test.
	  `disabling' allows older modulefile directories that don't
	  have .version files with proper module magic cookies to be
	* Disabled errorlogging if "module avail" can't open a
	* Added some logic in the Makefile & elsewhere to generate
	  patch-able diff files.
Modules 3.0.1-rko
Tue Oct 26 12:47:58 PDT 1999		R.K. Owen (
	* misc fixes from compiling with AIX xlc compiler
	* cmdInfo - incorrect call to Tcl_SetResult() fixed
Modules 3.0.0-rko
Thu Aug 12 08:32:52 PDT 1999		R.K. Owen (
	* Grabbed the 3.0beta sources from
	  made wide-spread changes to update it & port it to Linux

	* Modified file/routine comments to be visible to cxref
	* collapsed sw_human, sw_terse to sw_format & toggling bits
	  for long/terse/human/parse output options
	* Fixed list/avail output
	* Added RCS Ids removed SCCS Ids, placed sources into CVS
	* Got "module whatis" to list all whatis entries as designed,
	  but not implemented
	* Removed unnecessary & made files from CVS control
	* Added several scripts for setting up a modules environment:
		add.modules, mkroot
	* Minor fixes to init files to eliminate env. variable persistence
	* Upgraded man pages and Help
	* Wrote INSTALL document to hand-hold the modules novice
	* Reworked testsuite to test current results
	* Codified distribution based on version level
	* Created LSM

Tue Oct  1 13:53:47 MET DST 1996	Jens Hamisch (jens@Strawberry.COM)

	* modules_def.h ModuleCmd_Whatis.c, ModuleCmd_List.c
		- Bugfix: Skip directories while scanning all modulefiles
		  for 'apropos'
		- traditional lists output

	* doc/, doc/
		- new fetures of 3.0 added

	* aclocal.m4,,, init.c, main.c
		- Patches for TCL 7.6 / TK 4.2 applied.
		  Probe for TCL version number added.
		  API for TCLX has changed on TCLX 7.6

Mon Jul 29 18:03:50 MET DST 1996	Swen Thuemmler 

	* cmdModule.c
	  strdup the module_command, because Tcl_Eval modifies the
	  argv beginning @ Tcl 7.5

Thu Feb  8 15:05:40 1996		Leif Hedstrom  

	* ModuleCmd_Avail.c (print_aligned_files): Fix out of bounds
	  array access.

	* error.c (MeasLookup): Initilization of `mid'.
	  (GetFacility_sub): Dito.

	* cmdVersion.c (FindName): Initialization of `cmp', I don't
	  know if it's correct to set it to `1', but it's definitely
	  wrong not to initialize it at all! :)
	  (FindModule): Dito.

Sat Jan  6 13:29:48 MET 1996		Jens Hamisch (jens@Strawberry.COM)

	* aclocal.m4
		- Add a 'touch' rule in order to fix the modification
		  dates of the modulefiles in the testsuite
	* cmdAlias.c cmdConflict.c cmdMisc.c cmdPath.c cmdSetenv.c
	  cmdXResource.c cmdModule.c cmdTrace.c cmdUlvl.c cmdVerbose.c
	  cmdVersion.c cmdWhatis.c cmdLog.c:
		- Unification of the DISPLAY output