1.. _NEWS: 2 3Release notes 4============= 5 6This file describes changes in recent versions of Modules. It primarily 7documents those changes that are of interest to users and admins. 8 9Modules 4.6.0 (2020-09-16) 10-------------------------------- 11 12* Rework internal state handling to gather all state definitions in a global 13 array and use the same initialization and retrieval procedure, named 14 ``getState``, for all these states. 15* Add the ``setState``, ``unsetState``, ``lappendState``, ``isStateDefined`` 16 and ``isStateEqual`` procedures to provide unified ways to set or check the 17 value of state. 18* Introduce the :subcmd:`sh-to-mod` sub-command, to evaluate shell script and 19 determine the environment changes it does. Corresponding modulefile 20 content is outputted as a result. Changes on environment variables, shell 21 aliases, shell functions and current working directory are tracked. The 22 following shells are supported: sh, dash, csh, tcsh, bash, ksh, ksh93, zsh 23 and fish. 24* Doc: add *Source shell script in modulefile* design notes. 25* Introduce the :mfcmd:`source-sh` modulefile command, to evaluate shell 26 script and apply resulting environment changes through modulefile commands. 27 When a modulefile using :mfcmd:`source-sh` modulefile command is loaded, the 28 modulefile commands resulting from shell script evaluation are recorded in 29 the :envvar:`MODULES_LMSOURCESH` environment variable to be able to undo 30 these environment changes when modulefile is unloaded and to report the 31 modulefile commands used when modulefile is displayed. The same kind of 32 environment changes than the :subcmd:`sh-to-mod` sub-command are tracked. 33 The same list of shells than :subcmd:`sh-to-mod` sub-command are supported. 34 (fix issue #346) 35* Doc: add *Source shell script in modulefile* cookbook recipe. 36* Doc: embed new Modules logo on website, online README and documentation 37 portal. 38* Install: disable by default the build of Modules compatibility version. From 39 now on, option ``--enable-compat-version`` has to be set to trigger this 40 build. 41* Introduce the ``username`` sub-command to the :mfcmd:`module-info` 42 modulefile command to get the username of the user currently running 43 :file:`modulecmd.tcl` or to test a string passed as argument corresponds to 44 this username. 45* Introduce the ``usergroups`` sub-command to the :mfcmd:`module-info` 46 modulefile command to get all the groups of the user currently running 47 :file:`modulecmd.tcl` or to test a string passed as argument corresponds to 48 one of these groups. 49* Doc: improve markup of :ref:`NEWS` and :ref:`MIGRATING` documents starting 50 from this 4.6 version to enable references to module sub-commands, command 51 line switches, environment variables and modulefile Tcl commands. 52* Use inclusive terminology to eliminate *master* and *slave* terms as much as 53 possible from code source and documentation. 54* Doc: use a versioned magic cookie in examples that demonstrate new 55 modulefile features. (fix issue #349) 56* Introduce the ``--enable-multilib-support`` configure option to add 57 mechanism in :file:`modulecmd.tcl` to look at an alternative location to 58 find the Modules Tcl extension library in case this library cannot be found 59 at its main location. 60* Lib: remove *fetch_hidden* argument from ``getFilesInDirectory`` procedure 61 of Modules Tcl extension library. 62* Doc: add *Hide or forbid modulefile* design notes. 63* Add the :mfcmd:`module-hide` modulefile command, to dynamically hide 64 modulefile, module alias or symbolic version matching passed specification. 65 When hidden, a modulefile, an alias or a symbolic version is not reported 66 nor selected unless referred by its exact name, like for module whose name 67 or version starts with a dot character. :mfcmd:`module-hide` supports the 68 advanced module version specifiers. (fix issue #202) 69* Add option ``--soft`` to the :mfcmd:`module-hide` modulefile command to 70 introduce a soften level of camouflage: modules targeted by such hide 71 directive are made visible as soon as their root name is part of search 72 query. 73* Add option ``--hard`` to the :mfcmd:`module-hide` modulefile command to 74 introduce a hardened level of camouflage: modules targeted by such hide 75 directive keep being hidden even if they are fully matched by search query. 76* Do not report among :subcmd:`whatis` search result the modulefiles with 77 version name prefixed by a dot character and targeted by a symbolic version 78 unless if they are precisely searched. 79* When a loading module has hidden alternative names (hidden due to their 80 name or version starting with a dot character or because they match a 81 :mfcmd:`module-hide` statement), these alternative names are not recorded in 82 environment unless if they are not hard-hidden and if they have been used in 83 query to select loading module. 84* On :subcmd:`avail` sub-command, remove hidden symbolic versions from the 85 list to display along modulefile or directory they target, unless these 86 symbols are not hard-hidden and are used in query to search modules. 87* When the :option:`--default` filter of :subcmd:`avail` sub-command is set, 88 unhide all the *default* symbolic versions or modules targeted by these 89 symbols unless if they are hard-hidden. 90* Define the *default* and *latest* automatic symbolic versions only if 91 relative module name matches search query to ensure all elements for this 92 module have been processed prior assigning the symbols. 93* In case a symbolic version is transitively applied toward a modulefile, like 94 for instance when this symbol is first set onto a directory, record the 95 resolution of each transitively applied symbol. By doing so, a module 96 :subcmd:`load` tentative using the transitively applied symbolic version 97 will now correctly resolve to the modulefile targeted by symbol. 98* Fix use of the advanced version specifiers in arguments to the 99 :mfcmd:`is-avail` modulefile command. 100* Introduce the :option:`--all`/:option:`-a` option for :subcmd:`avail`, 101 :subcmd:`aliases`, :subcmd:`whatis` and :subcmd:`search` sub-commands, to 102 include in the search process all hidden modulefiles, module aliases or 103 symbolic versions. Hard-hidden modules stay hidden even if 104 :option:`--all`/:option:`-a` option is used. 105* Add the :mfcmd:`module-forbid` modulefile command, to dynamically forbid 106 evaluation of modulefile matching passed specification. When forbidden, a 107 module cannot be loaded and an access error is obtained when trying to 108 evaluate them. :mfcmd:`module-forbid` supports the advanced module version 109 specifiers. 110* Add ``--not-user`` and ``--not-group`` options to :mfcmd:`module-hide` and 111 :mfcmd:`module-forbid` modulefile commands to ignore hiding or forbidding 112 definition if current user is respectively part of specified username list 113 or member of one of specified group list. 114* Add ``--before`` and ``--after`` options to :mfcmd:`module-hide` and 115 :mfcmd:`module-forbid` modulefile commands to ignore hiding or forbidding 116 definition respectively after and before a specified date time. Accepted 117 date time format is ``YYYY-MM-DD[THH:MM]``. 118* Add ``--message`` option to :mfcmd:`module-forbid` modulefile command to 119 supplement the error message obtained when trying to evaluate a forbidden 120 module. 121* When a module that will soon be forbidden (as the date limit specified on 122 the ``--after`` option of a matching :mfcmd:`module-forbid` command is near) 123 is evaluated, warn user this module access will soon be denied. 124* The range of time the above warning appears can be controlled with the 125 ``nearly_forbidden_days`` configuration option, whose value equals to the 126 number of days prior the module starts to be forbidden. This configuration 127 is set to ``14`` (days) by default and this value can be controlled at 128 :file:`configure` time with ``--with-nearly-forbidden-days`` option. When 129 the ``nearly_forbidden_days`` configuration is set through the 130 :subcmd:`config` sub-command, the :envvar:`MODULES_NEARLY_FORBIDDEN_DAYS` 131 environment variable is set. 132* Add ``--nearly-message`` option to :mfcmd:`module-forbid` modulefile command 133 to supplement the warning message obtained when evaluating a nearly 134 forbidden module. 135* Add the ``debug2`` verbosity level, to report each call of 136 :file:`modulecmd.tcl` internal procedures in addition to debug messages. 137 Debug2 mode can be enabled by setting the ``verbosity`` config to the 138 ``debug2`` value or by using the :option:`-D` command-line switch twice. 139* Install: look for ``make`` rather ``gmake`` on MinGW and build library with 140 a ``.dll`` extension on this platform. 141* Add the ``trace`` verbosity level, to report details on module searches, 142 resolutions, selections and evaluations. Trace mode can be enabled by 143 setting the ``verbosity`` config to the ``trace`` value or by using the 144 :option:`-T`/:option:`--trace` command-line switches. 145* Introduce the ``tr`` key in the color palette to specifically render trace 146 messages. Default value for ``tr`` key is ``2`` (decreased intensity). 147* When trying to set an environment variable to an empty value on the Windows 148 platform, unset this environment variable instead to cope with the 149 underlying OS behavior. 150 151 152Modules 4.5.3 (2020-08-31) 153-------------------------- 154 155* Install: take into account the ``--build``, ``--host``, ``--target``, 156 ``--enable-dependency-tracking`` and ``--disable-dependency-tracking`` 157 configure options to transmit them to the :file:`configure` scripts of 158 Modules Tcl extension library and Modules compatibility version. (fix issue 159 #354) 160* Install: ignore some regular options of an Autoconf :file:`configure` script 161 that are useless for this project but usually implied in build macros (like 162 RPM ``%configure`` macro). 163* Install: ignore unsupported ``--enable-*`` and ``--with-*`` options on 164 :file:`configure` script rather raise an error and add support to define 165 environment variable and build system type as :file:`configure` script 166 arguments to comply with `GNU configuration recommendations`_. 167* Install: fix :file:`modulecmd` pre-alternatives check in RPM spec file. 168* Install: use ``%make_build`` and ``%make_install`` macros in RPM spec file. 169* When :mfcmd:`module switch<module>` command is used in modulefile, do not 170 state when processing it a conflict over switched-off module if its 171 specification on the ``module switch`` command also matches switched-on 172 module's specification. Allow this way the replacement of any loaded version 173 of a module for a specific one required by currently loading module. (fix 174 issue #355) 175* Correctly report failed attempts to load module requirements expressed with 176 advanced version specifiers. (fix issue #356) 177 178.. _GNU configuration recommendations: https://www.gnu.org/prep/standards/html_node/Configuration.html 179 180 181Modules 4.5.2 (2020-07-30) 182-------------------------- 183 184* Init: :subcmd:`list` and :subcmd:`source` sub-commands do not take available 185 modules as argument in fish completion script. 186* Init: fix option list for :subcmd:`search` sub-command in bash completion 187 script. 188* Fix double error counter increase when modulefile evaluation breaks. 189* Install: adapt :file:`configure` script to pass to the :file:`configure` 190 script of Modules compatibility version only a subset of the options it 191 supports (most commonly used options). 192* Install: raise an error when an unknown option is passed to 193 :file:`configure` script rather silently ignore it. (fix issue #348) 194* Install: enable the definition of installation directory options of 195 :file:`configure` script with the ``--option value`` syntax in addition to 196 the ``--option=value`` syntax. (fix issue #348) 197* Doc: alphabetically sort sub-commands of :mfcmd:`module-info` modulefile Tcl 198 command in :ref:`modulefile(4)` document. 199* Script: clean previously built environment-modules RPMs in :command:`mrel`. 200* Clearly separate quarantine variable definition from tclsh binary on 201 :file:`modulecmd.tcl` evaluated command call in ``_module_raw`` function for 202 *sh*, *bash*, *ksh* and *zsh* shells. (fix issue #350) 203* Doc: clarify in documentation index that Environment Modules should not be 204 confused with language-specific modules. (contribution from Rob Hurt) 205* Adapt conflict detection tests to ensure a module loaded by its full 206 pathname will not detect itself as a conflict when declaring a reflexive 207 conflict. (fix issue #352) 208* Adapt the :command:`mrel` and :command:`mpub` commands to produce new 209 Modules release from a *vZ.Y.x* git branch rather than from the repository 210 main branch. 211 212 213Modules 4.5.1 (2020-06-01) 214-------------------------- 215 216* Install: consistently output Makefile warning messages on stderr. 217* Script: add the ``mrel`` script, that automates build of the Modules release 218 files and performs tests over these distribution files to guaranty their 219 correctness. 220* Script: add the ``mpub`` script, that automates Modules new release 221 publishing over git repositories and websites. 222* Install: remove project-specific tools from git repository export thus from 223 release distribution files. 224* Disable pager when ``clear`` sub-command is called from ``ml`` shortcut 225 command. (fix issue #338) 226* In case a modulefile evaluation fails, environment context prior this failed 227 evaluation is restored. Fix environment variable restoration mechanism to 228 keep the link that monitors and updates environment variable array ``env`` 229 in every Tcl sub-interpreters. (fix issue #340) 230* Ensure environment variable change at the Tcl interpreter level is 231 propagated to every sub-interpreters used to evaluate modulefiles or 232 modulercs. (fix issue #342) 233* Use absolute path to load Modules Tcl extension library. (fix issue #344 234 with contribution from Roy Storey) 235* Fix formatting of error stack trace not to look for internal commands to 236 withdraw if start-up stack pattern cannot be matched. 237 238 239Modules 4.5.0 (2020-04-07) 240-------------------------- 241 242* Doc: fix typos and grammar mistakes on :ref:`module(1)`, 243 :ref:`modulefile(4)` and :ref:`diff_v3_v4` documents. (contribution from 244 Colin Marquardt) 245* Doc: update cookbook recipes to highlight code of the Tcl scripts included. 246 (contribution from Colin Marquardt) 247* Doc: improve markup of :ref:`module(1)`, :ref:`modulefile(4)` and 248 :ref:`diff_v3_v4` documents to enable references to module sub-commands, 249 command line switches, environment variables and modulefile Tcl commands. 250 (contribution from Colin Marquardt) 251* Doc: alphabetically sort module sub-commands, command-line switches, 252 environment variables and modulefile Tcl commands in :ref:`module(1)` and 253 :ref:`modulefile(4)` documents. 254* Introduce the ``ml`` command, a handy frontend to the ``module`` command. 255 ``ml`` reduces the number of characters to type to trigger ``module``. With 256 no argument ``ml`` is equivalent to ``module list``, ``ml mod`` corresponds 257 to ``module load mod`` and ``ml -mod`` means ``module unload mod``. Multiple 258 modules to either load or unload can be combined on a single command. ``ml`` 259 accepts all command-line switches and sub-commands accepted by ``module`` 260 command. ``ml`` command is defined by default. Its definition can be 261 controlled at ``./configure`` time with ``--enable-ml`` option or later on 262 with ``ml`` configuration option (which defines ``MODULES_ML`` environment 263 variable when set). 264* Fix module sub-command abbreviation match to ensure passed abbreviated 265 form fully match sub-command, not only its minimal abbreviated form. As an 266 example, ``lod`` or ``loda`` do not match anymore the ``load`` 267 sub-command, ``lo`` or ``loa`` still do. 268* Add the ``-j``/``--json`` command line switches to the ``avail``, ``list``, 269 ``savelist``, ``whatis`` and ``search`` module sub-commands to render their 270 output in `JSON`_ format. (fix issue #303) 271* Script: remove need to build project management-specific tools 272 (``mtreview``, ``mb``, ``mlprof`` and ``playdemo``) prior using them. 273* Script: gather all distributed and maintained scripts in a ``script`` 274 directory at the root of the project repository tree. 275* Install: provide Windows-specific batch files when ``./configure`` option 276 ``--enable-windows-support`` is set. module command wrapper ``module.cmd`` 277 is installed in ``bindir`` and initialization script ``cmd.cmd`` in 278 ``initdir``. Those batch files are relocatable and expect ``modulecmd.tcl`` 279 in ``..\libexec`` directory. (fix issue #272 with contribution from Jacques 280 Raphanel) 281* Install: add ml command wrapper ``ml.cmd`` and install it in ``bindir`` when 282 ``./configure`` option ``--enable-windows-support`` is set. 283* Install: introduce envml command wrapper ``envml.cmd`` for Windows ``cmd`` 284 shell and install it in ``bindir`` when ``./configure`` option 285 ``--enable-windows-support`` is set. (contribution from Jacques Raphanel) 286* Doc: improve documentation portal index. 287* Install: add ``dist-win`` target to Makefile in order to build a 288 distribution zipball containing the required files to run Modules on a 289 Windows platform. ``INSTALL.bat`` and ``UNINSTALL.bat`` Windows batch files 290 are introduced and shipped in the zipball to automate installation and basic 291 configuration of Modules on the Windows platform. 292* Doc: update :ref:`INSTALL-win` document to describe how to install Modules 293 with newly provided Windows-specific distribution zipball. 294* Install: enable build of Modules from ``git archive`` tarball or zipball 295 exports (like download source archives automatically provided on GitHub 296 project) 297* Install: ship reStructuredText and MarkDown source documents at the root of 298 Modules distribution tarball rather their built txt counterpart. 299* Script: fix ``createmodule.sh`` script to correctly analyses environment 300 when shell functions are found defined in it. 301* Script: inhibit output generated by scripts evaluated by ``createmodule.sh`` 302 and ``createmodule.py`` to ensure these outputs will not get in the way when 303 analyzing the environment changes. (fix issue #309) 304* Correctly handle symbolic version target including a whitespace in their 305 name. 306* Testsuite: output test error details whatever the testsuite run verbose 307 mode. 308* Install: adapt configure script and Makefile to detect ``python`` command 309 location and set it as shebang for ``createmodule.py`` and 310 ``gitlog2changelog.py``. If ``python`` command is not found, ``python3`` 311 then ``python2`` are searched. 312* Install: enable to pass a specific Python interpreter command name or 313 location at configure step with ``--with-python`` option. Specified command 314 name or location should be found on build system only if building from git 315 repository. 316* Install: build ``createmodule.py`` script and install it in ``bindir``. 317* Install: update RPM spec file to explicitly define Python interpreter 318 location. 319* Script: fix ``createmodule.py`` script for Python3 (fix issue #315 with 320 contribution from Armin Wehrfritz) 321* Lift Perl variable strictness when defining ``_mlstatus`` variable in case 322 ``modulecmd.tcl`` output is directly evaluated without use of the ``module`` 323 sub-routine in Perl script. (with contribution from Andrey Maslennikov) 324* Script: fix path de-duplication in ``createmodule.sh``. (fix issue #316) 325* Doc: add *Handling Compiler and other Package Dependencies* cookbook 326 recipe, which discusses various strategies for creating modulefiles for 327 packages with multiple builds depending on previously loaded compiler, 328 MPI libraries, etc. (contribution from Tom Payerle) 329* Init: test availability of ``compopt`` Bash builtin prior using it in 330 Bash completion script to avoid error with versions of this shell older 331 than 4.0. (fix issue #318) 332* Install: adapt configure step to detect if ``sed`` option ``-E`` is 333 supported and fallback to ``-r`` otherwise in shell completion scripts. 334 (fix issue #317) 335* Add support for the ``NO_COLOR`` environment variable 336 (https://no-color.org/) which when set (regardless of its value) prevents 337 the addition of ANSI color. When set, ``NO_COLOR`` prevails over 338 ``CLICOLOR`` and ``CLICOLOR_FORCE`` environment variables. ``MODULES_COLOR`` 339 overrides these three variables. (fix issue #310) 340* Script: when analyzing environment variable changes in ``createmodule.sh`` 341 applied by shell script passed as argument, produce a ``setenv`` modulefile 342 statement for any variable found set prior script evaluation and for which 343 value is completely changed after script evaluation. (fix issue #320) 344* When an error message is composed of multiple lines, render it in the same 345 way whether it is part of a block message or not: lines after the first one 346 are prepended with a 2-space padding. As a result error messages appear 347 clearly separated from each other. 348* Append to the error message the error stack trace when a general unknown 349 error occurs in ``modulecmd.tcl`` and provide a link to encourage users to 350 report such error to the GitHub project. 351* Add to the error message the error stack trace for errors occurring during 352 site-specific configuration evaluation. Error stack is expunged from the 353 ``modulecmd.tcl`` internals to only report information relevant to 354 site-specific configuration file. 355* When an error occurs during the evaluation of a modulefile or a modulerc, 356 report associated error stack trace expunged from ``modulecmd.tcl`` internal 357 references to only output useful information for users. 358* GitHub: add issue templates to guide people submitting a bug report or a 359 feature request. 360* Doc: provide a link toward issues that have been fixed between versions 3.2 361 and 4.0 in :ref:`diff_v3_v4` document. 362* Script: introduce ``envml.cmd`` script for Windows platform providing 363 similar behavior than ``envml`` Bash script. (contribution from Jacques 364 Raphanel) 365* Init: add Bash shell completion for the ``ml`` command. (contribution from 366 Adrien Cotte) 367* Fix Fish shell stderr redirection for newer Fish versions. (fix issue #325) 368* Correctly handle modulefiles and modulepaths containing a space character in 369 their name whether they are used from the command-line, in collections, 370 within modulefiles or from loaded environment definitions. 371* Doc: add *Default and latest version specifiers* design note. 372* An ``avail`` search over a symbolic version targeting a directory now 373 correctly returns the special modules (alias and virtual module) lying in 374 this directory. (fix issue #327) 375* ``whatis`` and ``paths`` searches only return special modules (symbolic 376 version, alias and virtual modules) that fully match search query, not 377 those that partially match it. (fix issue #328) 378* alias and virtual module whose name mention a directory that does not 379 exists are correctly handled. (fix issue #168) 380* Hide special modules (aliases, symbolic versions and virtual modules) 381 whose version name starts with a dot character (``.``) from ``avail``, 382 ``whatis`` and ``paths`` searches if their query does not fully match 383 special module name. (fix issue #329) 384* Filter-out from the output of the ``aliases`` sub-command all hidden 385 aliases, symbolic versions or hidden modules targeted by a non-hidden 386 symbolic version. (fix issue #330) 387* Enable resolution of default module in module sub-directory when this 388 default symbol targets a hidden directory (whose name starts with a dot 389 character). (fix issue #331) 390* Doc: clarify hidden module location in :ref:`modulefile(4)` man page. 391* Install: define ``LD_PRELOAD`` as quarantine var along with 392 ``LD_LIBRARY_PATH`` in RPM specfile. 393* When ``implicit_default`` and ``advanced_version_spec`` configuration are 394 enabled, automatically define a ``default`` and ``latest`` symbolic version 395 for each module name (at each module depth for deep modules) if those 396 version names does not already exist. (fix issue #210) 397* Once a module is loaded, the automatically defined symbols associated to it 398 are recorded in loaded environment in the ``MODULES_LMALTNAME`` environment 399 variable. They are distinguished from the other alternative names applying 400 to the module by a ``as|`` prefix, which qualifies their *auto symbol* type. 401* When an advanced version specifier list contains symbolic version 402 references, fix resolving to honor default version if part of the specified 403 list. (fix issue #334) 404 405.. _JSON: https://tools.ietf.org/html/rfc8259 406 407 408Modules 4.4.1 (2020-01-03) 409-------------------------- 410 411* Fix error and warning messages relative to dependency management to enclose 412 dependency specification in single quotes to clearly distinguish 413 specification from each other. 414* Skip output of module loading message if module is already loaded. 415* Doc: add demonstration material played at SC19 to promote the new features 416 of Modules. 417* Contrib: add ``playdemo`` script to play recorded demonstration cast. 418* Doc: add a web anchor to each modulefile Tcl command, module sub-command 419 and module environment variable documentation. 420* Install: update RPM spec file to enable build on ``el8``. 421* Doc: fix RST syntax for bullet lists in design docs. (fix issue #306) 422* In case ``module avail`` query does not match a directory but only its 423 contained elements (for instance ``module av mod/7`` matches ``mod/7.1`` and 424 ``mod/7.2`` but not ``mod/``), fix query processing to correctly return 425 latest or default element in case ``--latest`` or ``--default`` flags are 426 set. 427* In case a ``module avail`` query performed in a no-indepth mode with 428 ``--latest`` or ``--default`` flags either enabled or disabled, fix query 429 processing to return directory elements if they are part of result. 430* When a ``module avail`` query performed in no-indepth mode targets a virtual 431 module, fix result to filter-out the directory holding the virtual module 432 from result. 433* Fix ``module avail --default`` queries when modulefile default version does 434 not match query: select latest version from modulefiles matching query 435 unless ``implicit_default`` configuration is disabled in which case no 436 default version is returned. 437* Improve highlighting of module ``avail`` and ``whatis`` search result by 438 coloring module names matching search query expressed with the advanced 439 version specifiers. ``name@1,3`` or ``name@1:3`` queries now highlight 440 ``name/1`` and ``name/3`` strings found in search result. 441* Contrib: add the ``mlprof`` script which wraps ``modulecmd.tcl`` to collect 442 profiling information on its execution. 443* Contrib: adapt ``mb`` script to profile ``modulecmd.tcl`` run tests rather 444 bench them when ``profile`` argument is passed to the script. 445* Improve overall performances of module names and versions comparison by 446 introducing optimized procedures and caching in memory module search 447 results. 448 449 450Modules 4.4.0 (2019-11-17) 451-------------------------- 452 453* Doc: add *Return file basename on module-info name for full path modulefile* 454 recipe to cookbook. (fix issue #297) 455* Rework internal handling of configuration options to gather all option 456 definitions in a global array and use the same initialization and retrieval 457 procedure, named ``getConf``, for all these options. 458* Add the ``setConf``, ``unsetConf`` and ``lappendConf`` procedures to provide 459 unified ways to set the value of configuration option. These procedures 460 should be used in site configuration files to override configuration option 461 value instead of directly setting corresponding option variable as it was 462 done in previous Modules releases. 463* Add the ability to match module specification in a case insensitive manner. 464 Default case sensitiveness behavior is set at ``./configure`` time with the 465 ``--with-icase`` option. It could be superseded with the ``MODULES_ICASE`` 466 environment variable, that could be set with ``config`` module sub-command 467 through the ``icase`` option. Command-line switch ``--icase`` (``-i``) 468 enables to supersede defined case sensitiveness configuration. (fix issue 469 #212 with contribution from Eric Deveaud) 470* Introduce the extended default mechanism, to help selecting a module when 471 only the first numbers in its version are specified. Starting portion of the 472 version, part separated from the rest of the version string by a ``.`` 473 character, will get matched to the appropriate complete version name. In 474 case multiple versions match partial version specified and only one module 475 should be returned, default version (implicit or explicit) among matches is 476 returned. In case ``implicit_default`` option is disabled and no explicit 477 default is found among matches, an error is returned. This mechanism is 478 enabled through a new configuration option named ``extended_default`` (which 479 defines ``MODULES_EXTENDED_DEFAULT`` environment variable when set). It may 480 be enabled by default in ``modulecmd.tcl`` script with option 481 ``--enable-extended-default`` passed to the ``./configure`` script. 482* Introduce the advanced module version specifiers mechanism to specify finer 483 constraints on module version. This new feature enables to filter the module 484 selection to a given version list or range by specifying after the module 485 name a version constraint prefixed by the ``@`` character. It leverages the 486 version specifier syntax of the `Spack`_ package manager. A single version 487 can be specified with the ``@version`` syntax, a list of versions with 488 ``@version1,version2,...``, a greater than or equal to range with 489 ``@version1:`` syntax, a less than or equal to range with ``@:version2`` and 490 an in between or equal to range with ``@version1:version2`` syntax. In case 491 ``implicit_default`` option is disabled and no explicit default is found 492 among version specifier matches, an error is returned. This mechanism is 493 enabled through a new configuration option named ``advanced_version_spec`` 494 (which defines ``MODULES_ADVANCED_VERSION_SPEC`` environment variable when 495 set). It may be enabled by default in ``modulecmd.tcl`` script with option 496 ``--enable-advanced-version-spec`` passed to the ``./configure`` script. 497* Conflict defined with a generic module name or an advanced version specifier 498 may match multiple loaded modules (generally in case multiple loaded modules 499 share same root name). Loaded environment analysis has been fixed to bind 500 conflict to all loaded modules matching it. As a result the *Dependent 501 Reload* mechanism is not triggered when one loaded module matching conflict 502 is removed if another loaded module still match the conflict. 503* Doc: add *Module selection contexts*, *Insensitive case*, *Extended default* 504 and *Advanced module version specifiers* design notes. 505* Make ``MODULESHOME`` environment variable controllable through the 506 ``config`` sub-command with ``home`` configuration option. A 507 ``--with-moduleshome`` argument is also added to the ./configure script to 508 set specific default value for this option at installation time. (fix issue 509 #292) 510 511.. _Spack: https://github.com/spack/spack 512 513 514Modules 4.3.1 (2019-09-21) 515-------------------------- 516 517* Contrib: add ``mb`` script to bench Modules versions. 518* Correct ``modulecmd.tcl`` script startup to correctly report error in case 519 Tcl extension library fails to load. (fix issue #284) 520* Install: fix typo on ``CFLAGS`` definition in ``lib/Makefile``. (fix issue 521 #287 with contribution from Felix Neumärker) 522* Remove useless code in Modules Tcl extension library 523* Make URLs in README correctly rendered in HTML. (contribution from Per 524 Persson) 525* Doc: clarify modulefile evaluation modes in modulefile.4 man page. (fix 526 issue #289) 527* When looking at the closest match among loaded modules when switching module 528 with just a single module argument specified, load the information on the 529 currently set environment to get the alternative names of loaded modules 530 prior to look at closest module match. (fix issue #290) 531* Doc: describe the way to determine the site-specific configuration script 532 location in cookbook recipes implying the installation of such a file. (fix 533 issue #266) 534* Doc: add *Log module command* recipe to cookbook. (fix issue #283) 535* Doc: add *Expose procedures and variables to modulefiles* recipe to 536 cookbook. 537* Doc: add *Make defined modulepaths persist over sudo* recipe to cookbook. 538* Doc: add *Ensure user fully qualify the modules they use* recipe to 539 cookbook. 540* Introduce the ``wa_277`` configuration option to workaround an issue with 541 Tcsh history mechanism. Default ``module`` alias definition for Tcsh hits 542 an issue with shell history mechanism: erroneous history entries are 543 recorded each time the ``module`` command is called. When ``wa_277`` option 544 is enabled (which sets the ``MODULES_WA_277`` environment variable to *1*), 545 an alternative module alias is defined which fixes the history mechanism 546 issue. However the alternative definition of the module alias weakens shell 547 evaluation of the code produced by modulefiles. Characters with special 548 meaning for Tcsh shell (like *{* and *}*) may not be used anymore in shell 549 alias definition elsewhere the evaluation of the code produced by 550 modulefiles will return a syntax error. (fix issue #277) 551* Doc: add *Tips for Code Reuse in Modulefiles* recipe to cookbook. 552 (contribution from Tom Payerle) 553* Fix the ``whatis`` and ``paths`` sub-command results for module symbolic 554 versions targeting a directory when ``implicit_default`` configuration 555 option is disabled. No error is returned and same result is now obtained 556 whether the symbolic name or its target is used as argument for those two 557 sub-commands. (fix issue #294) 558* Fix the ``whatis`` and ``paths`` sub-command results for module aliases 559 targeting a directory when ``implicit_default`` configuration option is 560 disabled. No error is returned and same result is now obtained whether the 561 alias name or its target is used as argument for those two sub-commands. 562 (fix issue #295) 563* Rework all the ternary operator expressions in ``modulecmd.tcl`` that may 564 result in a *nan* value (whatever the case used to write this string) as the 565 ``expr`` Tcl command raises an error when it returns such a value, which 566 breaks Modules as soon as a modulefile, an alias or a symbolic version is 567 named *nan*. (fix issue #296) 568 569 570Modules 4.3.0 (2019-07-26) 571-------------------------- 572 573* Introduce Vim addon files to highlight the modulefile syntax. Installation 574 of these files, which is enabled by default, is controlled by the 575 ``--enable-vim-addons`` and ``--vimdatadir`` configure options. 576 (contribution from Felix Neumärker) 577* If modulefile is fully read, cache the content read and the file header 578 computed to avoid another file read if the same modulefile need to be read 579 multiple times. 580* Except for path, paths, list, avail and aliases module commands always fully 581 read a modulefile whether its full content is needed or just its header to 582 verify its validity. Proceed this way to only read file once on commands 583 that first just check modulefile validity then read again valid files to get 584 their full content. 585* Introduce Modules Tcl extension library (written in C) to extend Tcl 586 language in order to provide more optimized I/O commands to read a file or a 587 directory content than native Tcl commands do. 588* Install: add ``--libdir``, ``--enable-libtclenvmodules``, ``--with-tcl`` and 589 ``--with-tclinclude`` options to configure script to control 590 libtclenvmodules build and installation. 591* When an error is caught during modulecmd.tcl first initialization steps, 592 ensure the error report facility is initialized to render error message. 593* When looking for modulefiles in enabled modulepaths, take ``.modulerc`` file 594 found at the root of a modulepath directory into account. Which means these 595 rc files are now evaluated like global rc files and can be used to define 596 module aliases targeting modulefiles stored in the underlying file tree. 597* Correctly get available default (-d) and latest (-L) version whether search 598 pattern is passed with an ending forward slash character or not or if it 599 contains a ``*`` wildcard character. 600* Append a forward slash character to any directory result of an avail command 601 to better distinguish these directories from regular files. 602* Introduce the ability to control whether ``avail`` command search results 603 should recursively include or not modulefiles from directories matching 604 search query by use of the ``--indepth`` and ``--no-indepth`` command-line 605 switches or the environment variable ``MODULES_AVAIL_INDEPTH``. Default 606 behavior is set at the ``./configure`` time with the 607 ``--enable-avail-indepth`` and ``--disable-avail-indepth`` switches. (fix 608 issue #150) 609* Update ``bash``, ``fish`` and ``zsh`` completion scripts to propose 610 available modulefiles in the no in depth mode. 611* Add the ability to graphically enhance some part of the produced output to 612 improve readability by the use of the ``--color`` command-line switch or the 613 ``MODULES_COLOR`` environment variable. Both accept the following values: 614 ``never``, ``auto`` and ``always``. When color mode is set to ``auto``, 615 output is colored if stderr is attached to a terminal. Default color mode 616 could be controlled at configure time with the ``--enable-color`` and the 617 ``--disable-color`` option, which respectively correspond to the ``auto`` 618 and ``never`` color mode. 619* Control the color to apply to each element with the ``MODULES_COLORS`` 620 environment variable or the ``--with-dark-background-colors`` and 621 ``--with-light-background-colors`` configure options. These variable and 622 options take as value a colon-separated list in the same fashion 623 ``LS_COLORS`` does. In this list, each element that should be highlighted is 624 associated to a Select Graphic Rendition (SGR) code. 625* Inform Modules of the terminal background color with the 626 ``MODULES_TERM_BACKGROUND`` environment variable or the 627 ``--with-terminal-background`` configure option, which helps to determine if 628 either the dark or light background colors should be used to color output in 629 case no specific color set is defined with the ``MODULES_COLORS``. 630* Color prefix tag of debug, error, warning, module error and info messages. 631* Highlight the modulefile or collection name when reporting messages for a 632 an action made over this modulefile or collection. 633* Color the modulepaths reported on a ``use`` command. 634* Highlight title of separator lines or column name of table header. 635* Color modulepaths, directories, aliases and symbols reported by the 636 ``avail``, ``aliases``, ``list``, ``whatis`` and ``search`` commands. 637* When color mode is enabled and module aliases are colored, do not associate 638 them a ``@`` tag as the color already distinguish them from regular 639 modulefile. 640* When color mode is enabled and a Select Graphic Rendition (SGR) code is set 641 for the ``default`` modulefile symbol, apply this SGR code to the modulefile 642 name instead of associating it the ``default`` symbol tag. 643* Highlight matched module search query string among ``avail``, ``whatis`` and 644 ``search`` command results. 645* Highlight the modulefile and collection full path name on ``display``, 646 ``help``, ``test`` and ``saveshow`` command reports. 647* Color modulefile Tcl commands set in a modulefile on a ``display`` command 648 report. 649* Color module commands set in a collection on a ``saveshow`` command report. 650* Re-introduce ``clear`` sub-command. (fix issue #203) 651* Leverage ``--force`` command-line switch on ``clear`` sub-command to skip 652 confirmation dialog. (fix issue #268) 653* Init: improve readability of variable definition operations by writing one 654 definition operation per line rather having multiple commands on a single 655 line like ``VAR=val; export VAR``. (fix issue #225) 656* Add the ability to define a site-specific configuration file with an 657 environment variable: ``MODULES_SITECONFIG``. When set, the script file 658 pointed by the variable is sourced (if readable) after the site-specific 659 configuration file initially defined in ``modulecmd.tcl``. (contribution 660 from Ben Bowers, fix issue #234) 661* Doc: add description in the module.1 man page of ``MODULERCFILE`` in the 662 environment section and ``siteconfig.tcl`` in the files section. 663* Install: provide at installation time a bare site-specific configuration 664 script in designated ``etcdir`` if no pre-existing ``siteconfig.tcl`` file 665 is found at designated location. 666* Introduce the ``config`` sub-command to get and set ``modulecmd.tcl`` 667 options and to report its current state. 668* Contrib: update ``createmodule.py`` script to support execution from the 669 *cmd* shell. (contribution from Jacques Raphanel, fix issue #270) 670* Add the ability to configure when unloading a module and multiple loaded 671 modules match request if firstly loaded module should be chosen or lastly 672 loaded module. Configure option ``--with-unload-match-order`` defines this 673 setting which can be superseded with the ``MODULES_UNLOAD_MATCH_ORDER`` 674 environment variable. This variable can be set with the option 675 ``unload_match_order`` on the ``config`` sub-command. By default, lastly 676 loaded module is selected. It is recommended to keep this behavior when the 677 modulefiles used express dependencies between each other. 678* Add the ability to configure whether an implicit default version should be 679 defined for modules with no default version explicitly defined. When 680 enabled, which stays the default behavior, a module version is automatically 681 selected (latest one) when the generic name of the module is passed. When 682 implicit default selection is disabled, the name of modules to evaluate 683 should be fully qualified elsewhere an error is returned. This option is set 684 at ``./configure`` time with the ``--enable-implicit-default`` and 685 ``--disable-implicit-default`` options. It could be superseded with the 686 ``MODULES_IMPLICIT_DEFAULT`` environment variable, that could be set with 687 ``config`` module sub-command through the ``implicit_default`` option. 688* Install: add to the configure script the ``--with-locked-configs`` option to 689 ignore environment variable superseding of Modules configurations defined in 690 ``modulecmd.tcl`` script. Lockable configuration option are 691 ``extra_siteconfig`` and ``implicit_default``. Currently locked options are 692 reported through the ``locked_configs`` option on the ``config`` 693 sub-command. 694* Introduce the ability to control the module search match. Search query 695 string should match module name start or any part of module fully qualified 696 name. Default search match behavior is set at ``./configure`` time with the 697 ``--with-search-match`` option. It could be superseded with the 698 ``MODULES_SEARCH_MATCH`` environment variable, that could be set with 699 ``config`` module sub-command through the ``search_match`` option. 700 Command-line switches ``--starts-with`` (``-S``) and ``--contains`` (``-C``) 701 for ``avail`` module sub-command enable to supersede defined search match 702 configuration. 703* Introduce the ability not to set the shell startup file that ensure 704 ``module`` command is defined once shell has been initialized. Setting shell 705 startup file currently means defining ``ENV`` and ``BASH_ENV`` environment 706 variables to the Modules bourne shell initialization script. ``./configure`` 707 options ``--enable-set-shell-startup`` and ``--disable-set-shell-startup`` 708 define if shell startup should be set or not by default. It could be 709 superseded with the ``MODULES_SET_SHELL_STARTUP`` environment variable, that 710 could be set with ``config`` module sub-command through the 711 ``set_shell_startup`` option. 712* Cookbook: add the *test-modulefiles* recipe. (fix issue #182 with 713 contribution from Colin Marquardt) 714* Fix location of global RC file to ``@etcdir@/rc`` instead of 715 ``@prefix@/etc/rc`` to cope with ``@etcdir@`` specific setup (``@etcdir@`` 716 defaults to ``@prefix@/etc``). 717* Take into account Modules initialization configurations found in ``etc`` 718 directory if they exist rather in ``init`` directory. If ``initrc`` 719 configuration file is found in ``etcdir`` then it is preferred over 720 ``modulerc`` file in ``initdir``. Following the same trend, ``modulespath`` 721 configuration file is found in ``etcdir`` then it is preferred over 722 ``.modulespath`` file in ``initdir``. 723* Introduce the ability to install the Modules initialization configuration 724 files in the ``etcdir`` rather than in the ``initdir``. A new configure 725 option is introduced for this task: ``--with-initconf-in``. Accepted values 726 for this option are: ``etcdir`` or ``initdir`` (default). 727* Add the ``--enable-modulespath`` configure option, which is an alias for the 728 ``--enable-dotmodulespath`` option as ``.modulespath`` configuration file is 729 named ``modulespath`` when installed in ``etcdic``. 730* Install: update RPM spec file to disable ``set_shell_startup`` option by 731 default, set ``/etc/environment-modules`` as configuration directory and 732 store Modules initialization configuration files in it. 733* Report an error when a module load or unload evaluation aborts due to the 734 use of the ``break`` or ``exit`` modulefile commands. This error 735 notification clarifies that module evaluation failed. (fix issue #267) 736* Remove the message block display output for the ``reload``, ``purge`` and 737 ``restore`` sub-commands to preserve this output style for modulefile 738 evaluation modes (load, unload and switch) and thus clarify understanding. 739* When unloading a module that contains a ``module load`` or ``module switch`` 740 modulefile command, inhibit the unload performed of the useless requirement 741 when auto_handling mode is disabled if currently performing a ``purge``, 742 ``reload`` or ``restore`` sub-command. As the unload sequence is determined 743 and managed from these top commands. 744* Add ability to control module command message verbosity with configuration 745 option. Introduced verbosity levels from the least to the most verbose are 746 ``silent``, ``concise``, ``normal``, ``verbose`` and ``debug``. This option 747 could be set at ``./configure`` time with ``--with-verbosity`` option. 748 It could be superseded with the ``MODULES_VERBOSITY`` environment variable, 749 that could be set with ``config`` module sub-command through the 750 ``verbosity`` option. Silent, verbose and debug verbosity modes can be set 751 at the command-line level respectively with ``--silent``/``-s``, 752 ``--verbose``/``-v`` and ``--debug``/``-D`` command-line switches. (fix 753 issue #204) 754* When verbosity level is ``normal`` or higher, reports every module loads or 755 unloads performed to ``restore`` a collection or ``source`` a scriptfile, 756 even if there is no specific message to output for these module evaluations. 757 Clarifies what module evaluations have been triggered by these sub-commands. 758* Also honor the ``CLICOLOR`` and ``CLICOLOR_FORCE`` environment variables to 759 define color mode. (fix issue #279) 760 761 762Modules 4.2.5 (2019-07-08) 763-------------------------- 764 765* Correctly escape ``?`` character in shell alias. (fix issue #275) 766* When resolving the enabled list of modulepaths, ensure resolved path 767 entries are unique. (fix issue #274) 768* Right trim '#' characters from the fetched modulefile magic cookie string 769 to ensure a correct compatibility version comparison. Useful when modulefile 770 first line is equal to ``#%Module4.2##############``. 771* Fix argument parsing for the ``append-path``, ``prepend-path`` and 772 ``remove-path`` modulefile commands to consider every arguments found after 773 the variable name as variable values and not command option even if argument 774 starts with ``-`` character. (fix issue #278) 775* Fix automatic loading of modulefiles when multiple module names are set on a 776 single ``module load`` modulefile command. When auto_handling mode was 777 disabled, the load of not loaded modules was not achieved as soon as some 778 modules on this list were already loaded. (fix issue #281) 779 780 781Modules 4.2.4 (2019-04-26) 782-------------------------- 783 784* Better track each module evaluation and the context associated to it in 785 order to report a more accurate information on the additional modules 786 loaded or unloaded when proceeding the main evaluation request. (fix issue 787 #244, #245, #246, #247 and #248) 788* Doc: preserve quotes and dashes when making HTML docs. (fix issue #250 with 789 contribution from Riccardo Coccioli) 790* Fix hanging ``list`` sub-command when terminal width is equal to the single 791 column text width to be printed. (contribution from Jesper Dahlberg) 792* During an additional evaluation triggered by an automated module handling 793 mechanism, ensure warning and error messages are reported under the message 794 block of the main evaluation. (fix issue #252) 795* During the unload of a module when the automated module handling mode is 796 disabled, report a warning message for each unload of a useless requirement 797 that fails as done when the automated module handling mode is enabled. (fix 798 issue #253) 799* When multiple modules are listed on a ``prereq`` command, drop the output of 800 those modules that fails to load (by the *Requirement Load* automated 801 mechanism) to only keep the output of the module whose load succeed. (fix 802 issue #254) 803* Fix ``switch`` sub-command when the switched-off module cannot be unloaded 804 when other loaded modules depend on it. Whole switch process is failed and 805 no load of the switched-on module is attempted. (fix issue #251) 806* When switching modules, report failure of switched-off module unload or 807 switched-on module load under the message block of the switch action. A 808 failed switched-off module unload is reported as an error, as it aborts the 809 switch evaluation, whereas a failed switched-on module load is reported as a 810 warning. (fix issue #255) 811* When a module requirement is seen missing but the load of this module was 812 attempted, report a more specific error or warning message to let user 813 understand that the load of the requirement was attempted but failed. (fix 814 issue #257) 815* When loading a module, report any missing requirement on the message 816 reporting block corresponding to this module load. This warning or error 817 message comes in addition to the eventual *Requirement Load* message 818 reported under the message block of the main evaluation. (fix issue #258) 819* When unloading a module which has some dependent module still loaded, 820 produce a more specific error or warning message if an evaluation of these 821 dependent modules has been realized or if the unload of the required module 822 is forced. (fix issue #259) 823* When a conflicting module is seen loaded but the unload of this module was 824 attempted, report a *Conflict Unload* error or warning message toward the 825 main evaluation message block. (fix issue #261) 826* When loading a module, report any loaded conflict on the message reporting 827 block corresponding to this module load. This warning or error message comes 828 in addition to the eventual *Conflict Unload* message reported under the 829 message block of the main evaluation. (fix issue #261) 830* Correctly report loading state of conflicting module. (fix issue #262) 831* Adapt warning, error and info messages relative to the *Dependent Reload* 832 mechanism to distinguish the unload phase from the load (reload) phase of 833 this mechanism. In the automated module handling summary report, unloaded 834 modules via this mechanism are reported in the *Unloading dependent* list 835 and modules reloaded afterward are reported against the *Reloading 836 dependent* list. (fix issue #263) 837* When the automated module handling mode is disabled, do not attempt to load 838 a requirement expressed in a modulefile with a ``module load`` command, if 839 this requirement is already loaded or loading. 840* Skip load or unload evaluation of a module whose respectively load or unload 841 was already attempted but failed. If this second evaluation attempt occurs 842 within the same main evaluation frame. (fix issue #264) 843* When reloading modules through the *Dependent Reload* automated mechanism, 844 prevent modules to automatically load of other modules with the ``module 845 load`` modulefile command, as it is done for the ``prereq`` command. (fix 846 issue #265) 847* Raise an error when an invalid option is set on ``append-path``, 848 ``prepend-path`` or ``remove-path`` modulefile command. (fix issue #249) 849* Zsh initializes by default the ``MANPATH`` environment variable to an empty 850 value when it starts. To preserve ``manpath`` system configuration even 851 after addition to this variable by modulefiles, set ``MANPATH`` variable to 852 ``:`` if found empty. (improve fix for issue #224) 853* Doc: provide a short installation guideline in README file. (fix issue #230) 854 855 856Modules 4.2.3 (2019-03-23) 857-------------------------- 858 859* Add all the module dependency-related internal information to those saved 860 prior a modulefile evaluation in order to correctly restore internal state 861 in case modulefile evaluation fails. 862* Init: in shell initialization scripts, initialize ``MANPATH`` if not set 863 with a value that preserves ``manpath`` system configuration even after 864 addition of paths to this variable by modulefiles. (fix issue#224) 865* Enable to define an entire path entry to the ``MODULEPATH`` variable which 866 corresponds to a variable reference only. (fix issue#223) 867* Cookbook: add the *modulefiles-in-git* recipe. (contribution from Scott 868 Johnson) 869* When ``module switch`` commands are found in modulefiles, track switched-off 870 modulefile as a conflict and switched-to modulefile as a requirement to 871 apply same behaviors than for ``module load`` and ``module unload`` commands 872 in modulefiles. If ``module switch`` has only one argument, do not define a 873 conflict toward switched-off modulefile. *CAUTION: it is not recommended to 874 use `module switch` command in modulefiles*. (fix issue#229) 875* When unloading a module, revert ``module switch`` commands found in 876 modulefile: switched-on module is converted to a ``module unload``, like for 877 ``module load`` command. Nothing is done for switched-off module, like for 878 ``module unload`` command. (fix issue#226) 879* For default element in a modulefile directory which is a module alias that 880 points to a modulefile, when this modulefile is loaded, it receives as 881 alternative names the eventual module aliases set on the distant directory 882 holding the alias pointing to it. (fix issue#231) 883* When unloading a module that contains ``module load`` or ``module switch`` 884 commands in its modulefile, select for unload the automatically loaded 885 requirement module which has been loaded prior its dependent. (fix 886 issue#232) 887* Doc: describe Emacs settings useful for adhering to coding conventions in 888 CONTRIBUTING guide. (fix issue #233 with contribution from Ben Bowers) 889* When looking for a loaded or loading dependency requirement, select among 890 the eventual multiple candidates the closest match to the dependent module. 891* During the unload of a module, if the unload of one of its dependent (by the 892 *Dependent Unload* mechanism) fails, abort the whole unload process. 893 Exception made if the force mode is enabled. In this case failing module 894 stays loaded and the *Dependent Unload* mechanism continues with next module 895 to unload. 896* During the unload of a module, if the unload of one of its useless 897 requirements (by the *Useless Requirement Unload* mechanism) fails, keep the 898 requirements of this failing module loaded. Such error is reported as a 899 warning and it does not stop the whole unload process. (fix issue#240) 900* During the load or the unload of a module, if the unload of one of its 901 dependent (by the *Dependent Reload* mechanism) fails, abort the whole 902 unload or load process. Exception made if the force mode is enabled. In this 903 case failing module stays loaded and *Dependent Reload* mechanism continues 904 with next module to unload. This failing module is removed from the 905 *Dependent Reload* list, so it will not take part of the load phrase of the 906 mechanism. (fix issue#239) 907* During the load or the unload of a module, if the load of one of its 908 dependent (by the *Dependent Reload* mechanism) fails, abort the whole 909 unload or load process. Exception made if the force mode is enabled. In this 910 case failing module stays loaded and *Dependent Reload* mechanism continues 911 with next module to load. When the mechanism is applied during a ``switch`` 912 command, force mode is enabled by default on the load phase. (fix issue#241) 913* When reloading all loaded modules with the ``reload`` sub-command, if one 914 reloading module fails to unload or load, abort the whole reload process to 915 preserve environment sanity. (fix issue#237) 916* During the unload of a module when the automated module handling mode is 917 disabled and this module declares its requirements with the ``module load`` 918 modulefile command. If the unload of one of its useless requirements (by the 919 *Useless Requirement Unload* mechanism) fails, whole unload process is not 920 aborted and continue with next module to unload. (fix issue#238) 921* Contrib: add ``mtreview`` utility script that analyzes test suite log file 922 to compare actual and expected output of failed test. ``mt`` does not output 923 the full test suite logs anymore but only the information produced by 924 ``mtreview`` on failed tests. 925* Install: exclude Continuous Integration configurations from dist tarballs. 926 927 928Modules 4.2.2 (2019-02-17) 929-------------------------- 930 931* Correct the *Dependent Unload* mechanism when it triggers the unload of 2 932 modules making together a requirement from another module. This module is 933 now also added to the dependent modules to unload. 934* Doc: add a cookbook section in the documentation and port there the 3 935 pre-existing recipes: *inhibit-report-info*, *top-priority-values* and 936 *unload-firstly-loaded*. 937* Doc: add a CONTRIBUTING guide. 938* Doc: fix a typo on the Python initialization example in module man page. 939* Doc: add a FAQ entry to describe the use of module from Makefile. (with 940 contribution from Robert McLay) 941* Trim any white-space, newline or ``;`` characters at the beginning or end of 942 the function body passed to set-function modulefile command. 943* Init: add recognition of the ``--auto``, ``--no-auto`` and ``--force`` 944 command-line switches in fish shell completion script. 945* Init: add recognition of the ``--auto``, ``--no-auto``, ``--force``, 946 ``--paginate`` and ``--no-pager`` command-line switches in zsh shell 947 completion script. 948* When the load of a modulefile is asked but a conflict is registered against 949 this modulefile by an already loaded module, the load evaluation is now 950 performed and the conflict is checked after this evaluation. If the conflict 951 is still there, this evaluation (and the evaluation of its requirements) is 952 rolled back. (fix issue#216) 953* Init: fix ``_module_not_yet_loaded`` alias in tcsh completion script to 954 handle situation when ``noclobber`` variable is set. Also ensure actual 955 ``rm`` command is called and not an alias. (fix issue#219) 956* Fix warning message when the load of a modulefile is forced over a reflexive 957 conflict (message was reported twice). 958* When looking at the dependency of a loaded module, only consider requirement 959 loaded before dependent module (holding a prior position in the loaded 960 module list) as valid. Those loaded after dependent module are considered as 961 an unmet dependency thus they are not taking part in the *Dependent Unload*, 962 the *Useless Requirement Unload* and the *Dependent Reload* mechanisms. 963 964 965Modules 4.2.1 (2018-11-11) 966-------------------------- 967 968* Cookbook: add the *inhibit-report-info* recipe. 969* Cookbook: port *unload-firstly-loaded* and *top-priority-values* recipes to 970 v4.2. 971* Init: fix listing of loaded modules for *fish* and *tcsh* shell completions. 972* Init: fix saved collection listing when no collection found for *bash*, 973 *zsh*, *tcsh* and *fish* shell completions. 974* Adapt ``system`` modulefile Tcl command to execute the command passed as 975 argument through shell, like it is performed on compatibility version. (fix 976 issue#205) 977* Correctly filter modulefile search memory cache entries when using a full 978 search result to search later on a specific modulefile. 979* Prefix debug messages by information on the current modulefile or modulerc 980 interpreter if any. 981* Init: fix listing of loaded modules on unload and switch sub-commands for 982 *bash* shell completion. 983* Refrain ``module unload`` modulefile command from unloading a module 984 required by another loading module. 985* Enable ``is-loaded`` modulefile Tcl command in modulerc interpretation 986 context, like done on compatibility version. (fix issue#207) 987* Check a required module is not already loading before attempting to load it. 988 Helps to handle cyclic dependencies. 989* Compute loaded modules requirement dependency relations without cycle and 990 consider the module closing the cycle in a constraint violation state to 991 avoid reloading loops on the *Dependent Reload* mechanism. 992* Safely unset dependency reference when computing dependency relations as 993 some dependencies expressed may target same module. 994* Ensure a loaded module matching multiple entries of a same *or* ``prereq`` 995 will just be considered as one module matching this requirement. 996* Init: quote prompt in *csh* and *tcsh* script with ``:q`` rather double 997 quotes to accommodate prompts with embedded newlines. (fix issue#209 with 998 contribution from Satya Mishra) 999* Init: skip shell environment alteration if ``autoinit`` command fails. (fix 1000 issue#208) 1001* Reword path-like variable element counter reference handling to simply 1002 ignore the counter values not coherent with the content of related 1003 path-like variable. (fix issue#206) 1004 1005 1006Modules 4.2.0 (2018-10-18) 1007-------------------------- 1008 1009* Add ``chdir`` and ``puts`` environment settings to the per-modulefile 1010 evaluation saved context. So previous values of these settings are restored 1011 in case of evaluation failure. 1012* Fix save and restore of ``x-resource`` environment settings on the 1013 per-modulefile evaluation context. 1014* Use the correct warning procedure to report the full reference counter 1015 inconsistency message (so this message is fully inhibited during global 1016 ``whatis`` evaluations). 1017* Make ``append-path``, ``prepend-path``, ``remove-path`` and ``unsetenv`` 1018 commands alter ``env`` Tcl global array during ``display``, ``help``, 1019 ``test`` or ``whatis`` evaluation modes. Thus an invalid argument passed to 1020 these commands will now raise error on these modes. (see 1021 :ref:`v42-variable-change-through-modulefile-evaluation` section in 1022 MIGRATING document) 1023* On ``whatis`` mode, ``append-path``, ``prepend-path``, ``remove-path``, 1024 ``setenv`` and ``unsetenv`` commands initialize variables if undefined but 1025 do not set them to their accurate value for performance concern. 1026* Clear value instead of unsetting it during an unload mode evaluation of 1027 ``setenv`` or ``*-path`` commands to avoid breaking later reference to the 1028 variable in modulefile. 1029* Make ``getenv`` command returns value on ``help``, ``test`` or ``whatis`` 1030 evaluation modes. (fix issue#188) 1031* Add an argument to the ``getenv`` command to return the value of this 1032 argument if the queried variable is undefined. 1033* Use a different modulefile interpreter for each evaluation mode. 1034* Adapt the procedure called for each modulefile command depending on the 1035 evaluation mode to adapt behavior of these commands to the module command 1036 currently running. 1037* Report calling name and arguments for modulefile commands on ``display`` 1038 mode. For the commands evaluated during this mode, trigger this report at 1039 the end of the evaluation. 1040* Inhibit ``chdir``, ``conflict``, ``module``, ``module-log``, 1041 ``module-trace``, ``module-user``, ``module-verbosity``, ``prereq``, 1042 ``set-alias``, ``system``, ``unset-alias``, ``x-resource`` commands on 1043 ``help``, ``test`` and ``whatis`` evaluation modes. 1044* Ignore ``chdir``, ``module``, ``module-trace``, ``module-verbosity``, 1045 ``module-user`` and ``module-log`` commands found during modulerc 1046 evaluation. 1047* Correctly restore an empty string value on sub-interpreter global variables 1048 when sanitizing this interpreter between two modulefile/modulerc 1049 evaluations. 1050* Cache in memory results of a modulefile search to reuse it in case of rerun 1051 instead of re-walking the filesystem. 1052* Evaluate global rc files once module sub-command is known and registered, 1053 so it can be queried during their evaluation. 1054* Rename ``_moduleraw`` shell function in ``_module_raw`` to use a common 1055 ``_module_`` prefix for all module-related internal shell functions. 1056* Install: add ``--enable-append-binpath`` and ``--enable-append-binpath`` 1057 configure options to append rather prepend the bin or man directory when 1058 adding them to the relative environment variable. 1059* Doc: clarify documentation for module usage on scripting language like Perl 1060 or Python to mention that arguments to the ``module`` function should be 1061 passed as list and not as a single string. 1062* When interpreting a ``setenv`` modulefile order during an unload evaluation, 1063 variable is still set to be unset in generated shell code but it is set to 1064 the value defined on the ``setenv`` order in the interpreter context instead 1065 of being cleared. 1066* Register the conflicts defined by loaded modules in the environment 1067 (variable ``MODULES_LMCONFLICT``) and ensure they keep satisfied. (see 1068 :ref:`v42-conflict-constraints-consistency` section in MIGRATING document) 1069* Register the prereqs defined by loaded modules in the environment (variable 1070 ``MODULES_LMPREREQ``) and ensure they keep satisfied. (see 1071 :ref:`v42-prereq-constraints-consistency` section in MIGRATING document) 1072* Introduce the automated module handling mode, which consists in additional 1073 actions triggered when loading or unloading a modulefile to satisfy the 1074 dependency constraints it declares. Those actions are when loading a 1075 modulefile: the *Requirement Load* and the *Dependent Reload*. When 1076 unloading a modulefile, *Dependent Unload*, *Useless Requirement Unload* and 1077 *Dependent Reload* actions are triggered. (see 1078 :ref:`v42-automated-module-handling-mode` section in MIGRATING document) 1079* Track the loaded modules that have been automatically loaded (with 1080 environment variable ``MODULES_LMNOTUASKED``) to distinguish them from 1081 modules that have been explicitly asked by user. This information helps to 1082 determine what module becomes a useless requirement once all its dependent 1083 modules are unloaded. 1084* Track in saved collections the loaded modules that have been automatically 1085 loaded by add of a ``--notuasked`` argument to ``module load`` collection 1086 lines. So this information is restored in loaded environment when collection 1087 is restored. This ``--notuasked`` argument is ignored outside of a 1088 collection restore context. 1089* Consider modules loaded from a ``module source`` file as explicitly asked by 1090 user. 1091* Install: add ``--enable-auto-handling`` configure option to enable or 1092 disable the automatic modulefile handling mechanism. 1093* Process list of loaded modules or modules to load one by one during the 1094 ``restore``, ``purge`` and ``reload`` sub-commands whatever the auto 1095 handling mode is. 1096* Add the ability to control whether the auto_handling mode should be enabled 1097 or disabled with an environment variable called ``MODULES_AUTO_HANDLING`` or 1098 from the command-line with ``--auto`` and ``--no-auto`` switches. These 1099 command-line switches are ignored when called from modulefile. 1100* Init: add pager-related command-line options in shell completion scripts. 1101* Doc: describe ``MODULES_LMCONFLICT``, ``MODULES_LMPREREQ`` and 1102 ``MODULES_LMNOTUASKED`` in module.1 man page. 1103* Add ``-f`` and ``--force`` command-line switches to by-pass dependency 1104 consistency during ``load``, ``unload`` or ``switch`` sub-commands. (see 1105 :ref:`v42-by-passing-module-constraints` section in MIGRATING document) 1106* Disallow collection ``save`` or loaded modules ``reload`` if some loaded 1107 modules have some of their dependency constraints unsatisfied. 1108* The *Dependent Reload* action of a ``load``, ``unload`` and ``switch`` 1109 sub-commands excludes modules that have unsatisfied constraints and includes 1110 modules whose constraints are satisfied again (when sub-command process 1111 solves a conflict for instance). 1112* Doc: describe ``--force``, ``--auto`` and ``--no-auto`` command-line 1113 switches and ``MODULES_AUTO_HANDLING`` variable in module.1 man page. 1114* Ignore directories ``.SYNC`` (DesignSync) and ``.sos`` (SOS) when walking 1115 through modulepath directory content. (contribution from Colin Marquardt) 1116* Install: look for ``make`` rather ``gmake`` on MSYS2. 1117* Fix ``exec()`` usage in Python module function definition to retrieve the 1118 correct return status on Python3. 1119* Cookbook: add the *top-priority-values* and *unload-firstly-loaded* recipes. 1120* Install: add ``gcc`` to the build requirements in RPM specfile. 1121* Silent any prereq violation warning message when processing *Dependent 1122 Reload* mechanism or ``purge`` sub-command. 1123* Doc: mention ``createmodule.sh`` and ``createmodule.py`` scripts in FAQ. 1124 (fix issue#189) 1125* Register all alternative names of loaded modules in environment with 1126 ``MODULES_LMALTNAME`` variable. These names correspond to the symbolic 1127 versions and aliases resolving to the loaded modules. Helps to consistenly 1128 solve ``conflict`` or ``prereq`` constraints set over these alternative 1129 names. (fix issue#143 / see 1130 :ref:`v42-consistency-module-load-unload-commands` section in MIGRATING 1131 document) 1132* Doc: describe ``MODULES_LMALTNAME`` in module.1 man page. 1133* Install: add ``--with-bin-search-path`` configure option to get in control 1134 of the path list used to search the tools required to build and configure 1135 Modules. (fix issue#164) 1136* Install: add ``--enable-silent-shell-debug-support`` configure option to add 1137 the ability to control whether or not code to support silent shell debug 1138 should be added to the module function and sh-kind initialization scripts. 1139 (fix issue#166) 1140* Install: add ``--enable-quarantine-support`` configure option to add the 1141 ability to control whether or not code to support quarantine mechanism 1142 should be added to the module function and initialization scripts. 1143 (fix issue#167) 1144* Check version set in modulefile magic cookie. If modulefile sets a version 1145 number greater than ``modulecmd.tcl`` script version, this modulefile is not 1146 evaluated like when no magic cookie is set at all. (fix issue#171 / see 1147 :ref:`v42-versioned-magic-cookie` section in MIGRATING document) 1148* Fix uninitialized variable in procedure producing list of element output. 1149 (fix issue#195) 1150* Ensure the consistency of ``module load`` modulefile command once the 1151 modulefile defining it has been loaded by assimilating this command to a 1152 ``prereq`` command. Thus the defined constraint is recorded in the 1153 ``MODULES_LMPREREQ`` environment variable. Same approach is used for 1154 ``module unload`` modulefile command which is assimilated to a ``conflict`` 1155 command. Thus the defined constraint is recorded in the 1156 ``MODULES_LMCONFLICT`` environment variable. (see 1157 :ref:`v42-alias-symbolic-name-consistency` section in MIGRATING document) 1158* Only look at loaded modules when unloading so unloading an nonexistent 1159 modulefile does not produce an error anymore. (fix issue#199) 1160* Report error raised from modulefile evaluation as ``ERROR`` rather 1161 ``WARNING``, like when a conflict constraint is hit. Moreover this kind of 1162 evaluation error is now silenced on global evaluation like when proceding 1163 ``avail`` or ``search`` sub-commands. 1164* Record messages to report them by block on when processing a ``load`` or an 1165 ``unload`` modulefile evaluation to improve readability on these evaluating 1166 modes that may cascade additional actions. (see 1167 :ref:`v42-module-message-report` section in MIGRATING document) 1168* Foreground ``load``, ``unload``, ``switch`` and ``restore`` actions (ie. 1169 asked on the command-line) now report a summary of the additional load and 1170 unload evaluations that were eventually triggered in the process. 1171* Support ``del`` and ``remove`` aliases for ``unload`` sub-command like on 1172 compatibility version. (fix issue#200 with contribution from Wenzler) 1173* Correctly transmit the arguments along with the command to execute on 1174 ``system`` modulefile command. (fix issue#201) 1175* Contrib: add ``mt`` utility script which helps to run just specific part of 1176 the test suite. 1177* Introduce ``set-function`` and ``unset-function`` modulefile commands to 1178 define shell function on sh-kind and fish shells. (fix issue#193 with 1179 contribution from Ben Bowers) 1180 1181 1182Modules 4.1.4 (2018-08-20) 1183-------------------------- 1184 1185* Doc: fix typo on ``getenv`` command description in modulefile(4) man page 1186 and clarify this command should be preferred over ``::env`` variable to 1187 query environment variable value in modulefile. 1188* Init: fix ``bash`` and ``zsh`` completion scripts to enable Extended Regular 1189 Expression (ERE) on ``sed`` command with ``-E`` argument (rather ``-r``) for 1190 compatibility with OS X's and BSDs' sed. (fix issue#178) 1191* Handle default version sets on an hidden modulefile (were not found 1192 previously). (fix issue#177) 1193* Init: fix ``ksh`` initialization script for ksh88 compatibility. (fix 1194 issue#159) 1195* Install: use ``sed`` command rather ``grep`` and ``cut`` in ``configure`` 1196 and ``Makefile`` scripts. (fix issue#175 with contribution from Michael 1197 Sternberg) 1198* Fix typo, tab indentation and pipe opening mode on ``createmodule.py`` 1199 utility script. (contribution from Jan Synacek) 1200* Check ``ModulesVersion`` value set from ``.version`` rc file to ensure this 1201 value refers to a version name in current directory. Report error if a 1202 nested value is detected and ignore this value. (fix issue#176) 1203 1204 1205Modules 4.1.3 (2018-06-18) 1206-------------------------- 1207 1208* Make ``setenv`` command alter ``env`` Tcl global array during ``help``, 1209 ``test`` or ``whatis`` evaluation modes. (fix issue#160) 1210* Doc: describe MANPATH variable special treatment on compatibility version 1211 in diff_v3_v4 document. 1212* Initialize and export _moduleraw SH shell function if ``stderr`` is attached 1213 to a terminal. Was previously checking ``stdout``. (fix issue#169) 1214* For ``csh`` shells, quote code generated by modulecmd.tcl to pass it to the 1215 ``eval`` shell command. 1216* Escape special characters when producing code to define shell aliases (fix 1217 issue#165) 1218* Correct modulefile lookup when a modulefile directory is overwritten by a 1219 module alias definition but it contains an empty sub-directory. (fix 1220 issue#170) 1221* Doc: describe ``getenv`` command in modulefile(4) man page. 1222* Improve SH shell detection in profile.sh initialization script to use shell 1223 variable on ``bash`` or ``zsh`` to determine current shell name. (fix 1224 issue#173) 1225 1226 1227Modules 4.1.2 (2018-03-31) 1228-------------------------- 1229 1230* Add an example global rc file in ``contrib/etc`` directory that ensures 1231 ``MODULEPATH`` is always defined. 1232* Check ``HOME`` environment variable is defined on ``savelist`` and 1233 ``is-saved`` commands or raise error if not. 1234* Fix saving of deep module default version in collection when version pinning 1235 is disabled: if ``foo/bar/version`` is default version for ``foo``, 1236 collection will retain just ``foo`` (was retaining ``foo/bar``). 1237* Enable to save and restore collections containing full path modulefiles 1238 eventually with no modulepath defined. 1239* Run ``puts`` command not related to ``stderr`` or ``stdout`` channels in 1240 calling modulefile context to correctly get access to the targeted file 1241 channel. (fix issue#157) 1242* Quote ``autoinit`` result for eval interpretation on SH-kind shells to avoid 1243 parameter expansion to randomly occur on generated code depending on file 1244 or directory names of current working directory. (fix RH bug#1549664) 1245* Ignore empty elements found in ``MODULEPATH``, ``LOADEDMODULES`` or 1246 ``_LMFILES_`` to ensure all elements in these variables are non-empty 1247 strings. 1248* Raise error if loaded environment is in an inconsistent state when calling 1249 commands requiring correlation of information from the ``LOADEDMODULES`` and 1250 the ``_LMFILES_`` environment variables. Error raised on ``load``, 1251 ``unload``, ``switch``, ``reload``, ``purge``, ``list``, ``save`` and 1252 ``restore`` commands. May affect ``info-loaded`` or ``is-loaded`` commands 1253 if module passed as argument to these command is specified as a full path 1254 modulefile. 1255* Fix ``list`` command to process loaded modules information before performing 1256 any content output. 1257* Install: adapt ``configure`` script and Makefiles to support installation on 1258 Cygwin system. 1259* Detect terminal width on Windows ``cmd`` terminal with ``mode`` command. 1260* Improve Windows ``cmd`` shell support: error code returned, echoing text, 1261 shell alias creation and removal, working directory change. 1262* Raise error when an empty module name is passed to module sub-commands like 1263 ``load``, ``display`` or ``unload``. 1264* Raise error when an empty collection name is passed to module sub-commands 1265 like ``save``, ``saveshow`` or ``restore``. 1266* Raise error when an empty path is passed to module ``unuse`` sub-command, 1267 like already done on ``use`` sub-command. 1268* Clear argument list if an empty module command name is passed. 1269* Fix ``module`` function definition for all shells in ``autoinit`` command to 1270 correctly handle empty-string parameters or parameters containing 1271 white-spaces, quotes, escape characters. 1272* Fix ``module`` function definition for Python to accept being called with no 1273 argument. 1274* Fix parameter expansion on ``module`` function for all SH-kind shells when 1275 quarantine mode is activated. 1276* Escape ``\`` character when producing R shell code. 1277 1278 1279Modules 4.1.1 (2018-02-17) 1280-------------------------- 1281 1282* Make separator lines, used on ``display`` command result for instance, fit 1283 small screen width. 1284* Install: give ability to build and install Modules from git repository 1285 without documentation if ``sphinx-build`` cannot be found. 1286* Install: adapt ``configure`` script and Makefiles to support installation on 1287 FreeBSD, Solaris and OS X systems. (fix issue#147) 1288* Rework code generated by ``autoinit`` for sh-kind shells to avoid use of 1289 local variables as those are defined differently through the sh variants. 1290 (also fix issue#147) 1291* Init: use a default value on undefined variables in sh-kind scripts to avoid 1292 unbound variables in bash ``-eu`` mode. (fix issue#151) 1293* Correctly detect terminal column number on Solaris. 1294* Init: fix csh init script to get compatibility with pure csh shell 1295* Sanitize content of ``MODULEPATH`` before using it at run-time, to make 1296 potential relative paths absolute, remove trailing slashes, etc. (fix 1297 issue#152) 1298* Check loaded modulefiles still exists before displaying statistics on them 1299 during a ``list`` action. 1300* Use a specific reference counter variable name (``MODULES_MODSHARE_<VAR>`` 1301 instead of ``<VAR>_modshare``) for DYLD-specific variables. (fix issue#153) 1302* No error raise when updating a DYLD or LD path-like variable on OS X when 1303 System Integrity Protection (SIP) is enabled. In this situation, these 1304 variables are not exported in subshell context, so they appear undefined. 1305* Init: protect arguments passed to the ``_moduleraw`` sh function from 1306 interfering content of current working directory. (fix issue#154) 1307* Install: move ``hostname`` RPM requirement to the compat sub-package. 1308* Start pager process only if some text has to be printed. (partially fix 1309 issue#146) 1310* Ignore ``PAGER`` environment variable to configure Modules pager to avoid 1311 side effects coming from a general pager configuration not compatible with 1312 Modules pager handling. (fix issue#146) 1313* Do not blank anymore default Modules pager options if default pager is 1314 ``less`` when the ``LESS`` environment variable is defined. (fix issue#146) 1315 1316.. warning:: With this bugfix release, changes have been made on the pager 1317 setup to avoid side effects coming from the system general pager 1318 configuration. As a result ``PAGER`` environment variable is now ignored 1319 and ``MODULES_PAGER`` should be used instead to adapt Modules pager 1320 configuration at run-time. 1321 1322 1323Modules 4.1.0 (2018-01-15) 1324-------------------------- 1325 1326* Extend stderr output redirection on sh-kind shells to all terminal-attached 1327 shell session, not only interactive shell session. 1328* Extend shell code produced by the ``autoinit`` command to perform the same 1329 environment initialization as done in ``init`` shell scripts (default value 1330 set for module-specific environment variables, parse or source of 1331 configuration files). 1332* Make init shell scripts rely on ``autoinit`` command to define the 1333 ``module`` command and setup its default environment. 1334* Fix error rendering code for Tcl shell by producing a call to the ``error`` 1335 procedure. 1336* Introduce pager support to handle informational messages, using ``less`` 1337 command with ``-eFKRX`` options by default. Environment variable 1338 ``MODULES_PAGER`` or ``PAGER`` may be used to supersede default pager 1339 command and options. ``--paginate`` and ``--no-pager`` switches enable or 1340 disable pager from the command line. 1341* Install: add ``--with-pager`` and ``--with-pager-opts`` configure options to 1342 define default pager command and its relative command-line options. 1343* Introduce quarantine mechanism to protect module execution against side 1344 effect coming from the current environment definition. Variables whose name 1345 has been put in ``MODULES_RUN_QUARANTINE`` will be emptied or set to the 1346 value hold by ``MODULES_RUNENV_<VAR>`` in the modulecmd.tcl run-time 1347 environment. Quarantine variable original value is then restored within 1348 modulecmd.tcl execution context once it has started. 1349* Install: add ``--with-quarantine-vars`` configure option to define at build 1350 time the ``MODULES_RUN_QUARANTINE`` and ``MODULES_RUNENV_<VAR>`` environment 1351 variables set in initialization scripts. 1352* Add ``MODULES_SILENT_SHELL_DEBUG`` environment variable to disable on sh 1353 shell and derivatives any ``xtrace`` or ``verbose`` debugging property for 1354 the duration of either the module command or the module shell initialization 1355 script. (fix issue#121) 1356* Change error code produced by modulecmd.tcl for the Tcl, Perl, Python, Ruby, 1357 CMake and R scripting languages to return a 'false' boolean value in case of 1358 error rather raising a fatal exception. 1359* Adapt module function definition for Tcl, Perl, Python, Ruby, CMake and R 1360 scripting languages to always return a value, result of the modulecmd.tcl 1361 run. When modulecmd.tcl run does not produce a specific status, a 'true' 1362 boolean value is returned. On CMake, resulting value is returned though a 1363 ``module_result`` global variable. 1364* Spool content sent to the stdout channel with ``puts`` command during a 1365 modulefile interpretation, to effectively transmit this content to stdout 1366 after rendering the environment changes made by this modulefile. (fix 1367 issue#113) 1368* Introduce ``append-path``, ``prepend-path``, ``remove-path`` and 1369 ``is-loaded`` module sub-commands, based on existing modulefile-specific 1370 Tcl commands. (fix issue#116) 1371* Introduce ``is-saved``, ``is-used`` and ``is-avail`` modulefile Tcl commands 1372 and module sub-commands to test availability of collection, modulepath or 1373 modulefile. 1374* Raise error when a call to ``path`` or ``paths`` module sub-commands is 1375 attempted during a modulefile interpretation. Both commands now return text 1376 rather print text on scripting languages. An empty string is returned in 1377 no match case instead of a false boolean value. 1378* Introduce ``module-info loaded`` modulefile command and its module 1379 sub-command counterpart ``info-loaded``. This new command returns name of 1380 the modules currently loaded corresponding to the name passed as argument. 1381 (fix issue#3) 1382* Fix ``is-loaded`` command to correctly handle multiple module names passed 1383 as argument (fix issue#138) 1384* Support no argument on ``is-loaded``, ``is-saved`` and ``is-used`` commands 1385 to return if anything is respectively loaded, saved or used. 1386* Interpret ``module source`` command set in modulefile in ``unload`` mode 1387 when the modulefile itself is interpreted in this mode. 1388* Consider a modulefile passed with name starting by ``./`` or ``../`` a full 1389 path name modulefile, like those starting by ``/``. These kind of names are 1390 converted to absolute path names, for instance to register them in loaded 1391 modulefile list during a ``load`` command. 1392* Correlate modulefile passed as full path name (starting by either ``./``, 1393 ``../`` or ``/``) to already loaded modulefile registered with regular 1394 module name (file name without its modulepath prefix) to prevent for 1395 instance from loading twice same modulefile. Correlate in the same way 1396 regular module name to already loaded full path name modulefile. 1397* Introduce ``MODULES_COLLECTION_PIN_VERSION`` environment variable to record 1398 modulefile version number when saving collections even if version 1399 corresponds to the default one. (fix issue#89) 1400* Fix location of ``etc/rc`` global RC file to ``@prefix@/etc/rc`` instead of 1401 ``$MODULESHOME/etc/rc`` not to depend on ``MODULESHOME`` environment 1402 variable value. 1403* Strengthen argument check for ``append-path``, ``prepend-path`` and 1404 ``remove-path`` modulefile Tcl commands and module sub-commands. Raise error 1405 if argument list is not correct. 1406* Fix support for the ``--delim=C`` argument form on ``append-path``, 1407 ``prepend-path`` and ``remove-path`` commands. 1408* Fix path reference counter handling in case path element is an empty string. 1409 Distinguish an empty path element from a variable set empty to clear it. 1410* Pass multiple path elements separated by delimiter character as one string 1411 on ``append-path``, ``prepend-path`` and ``remove-path`` commands. 1412* Accept multiple path element arguments on ``append-path``, ``prepend-path`` 1413 and ``remove-path`` commands. 1414* Introduce the ``--duplicates`` argument option to ``append-path`` and 1415 ``prepend-path`` commands to add a path element already registered in 1416 variable. 1417* Introduce the ``--index`` argument option to ``remove-path`` command to 1418 delete a path entry by passing its position index in variable. 1419* Provide the ability to setup a site-specific configuration sourced at the 1420 start of ``modulecmd.tcl`` main procedure. This configuration is a Tcl 1421 script named ``siteconfig.tcl`` which enables to supersede any Tcl 1422 definition made in ``modulecmd.tcl``. Location of this file is controlled 1423 at configure time with the ``--etcdir`` option. 1424* Add the ability to handle paths containing reference to environment variable 1425 in ``MODULEPATH``. When these kind of paths are used by ``module`` command, 1426 the variable references are converted to their corresponding value or to an 1427 empty string if they are not defined. 1428* Enclose value set to environment variable on Tcl within curly braces rather 1429 double quotes to protect special characters in it from interpretation. 1430* Correctly parse ``.modulespath`` initialization file to handle lines without 1431 any ``#`` character or to handle files with no content to extract. 1432* Re-introduce the ``--enable-versioning`` configure option, which appends 1433 Modules version to installation prefix and deploy a ``versions`` modulepath 1434 shared between all versioning enabled Modules installation. A modulefile 1435 corresponding to Modules version is added to the shared modulepath and 1436 enables to switch from one Modules version to another. 1437* Fix removal of CMake generated temporary script file by stripping newline 1438 character from script file name. 1439* Add ``MODULES_CMD`` environment variable to expose path to the currently 1440 active module command script. This variable is set at initialization time. 1441* Introduce ``modulecmd`` wrapper script, installed in binary directory, which 1442 executes the active module command. 1443* Fix modulefile Tcl interpreter reset when handling list variables. (fix 1444 issue#145) 1445* Introduce 'module-virtual' modulefile Tcl command to associate a virtual 1446 module name to a modulefile. This module can be located with its virtual 1447 name and the associated modulefile is the script interpreted when loading, 1448 unloading, etc. 1449* Resolution of relative paths occurring during a modulefile interpretation to 1450 target a modulefile or a modulepath now takes the directory of the currently 1451 interpreted modulefile as the current working directory to solve the 1452 relative paths. 1453 1454 1455Modules 4.0.0 (2017-10-16) 1456-------------------------- 1457 1458Starting with this release, modules-tcl has become Modules. The following 1459changes describe the differences with last modules-tcl release (1.923). To 1460learn about the changes between this release and last Modules 3.2 release, 1461please see the :ref:`MIGRATING` document. 1462 1463* Relax constraint on command-line argument position so options and 1464 switches can be passed either before or after command name. 1465* Report ``unsupported option`` warning rather stop on error when 1466 compatibility-version specific command-line switches are passed ( 1467 ``--force``, ``--human``, ``--verbose``, ``--silent``, ``--create``, 1468 ``--icase``, ``--userlvl``). 1469* Keep empty ``module load`` line in shell configuration files after running 1470 the ``initrm`` or ``initclear`` commands. 1471* Always return the value of ``tcl_platform(osVersion)`` for ``uname release`` 1472* Optimize code output, for Perl to only return ``1;`` once for a no-operation 1473 situation and for Python to not ``import os`` when there is only an error 1474 to render. 1475* Use value of system command ``uname -n`` for ``uname nodename``. 1476* Add support for CMake *shell* 1477* Ignore ``/`` character used as suffix in modulefile name passed on command 1478 line. 1479* Rename Perl initialization script in ``perl.pm`` and Python in 1480 ``python.py``. 1481* Add support for Ruby *shell* (with contribution from Tammo Tjarks) 1482* Add support for R *shell* (with contribution from Roy Storey) 1483* When a *default* is set for a given module name, target modulefile can 1484 be referred on as *modulename/default* in addition to just *modulename*. 1485* Locate symbolic versions on ``avail`` command even these symbols are set 1486 over a module alias or another symbolic version. In this situation the 1487 symbol spread along the resolution path until reaching a modulefile. 1488* Define a more standard shebang on modulecmd.tcl script. 1489* Determine modulefile corresponding to given module name using the loaded 1490 context only on ``unload`` situation. 1491* Enable to unload *mod/dir/subdir/vers* when unload of *mod* or *mod/dir* 1492 asked. Was previously working only if deep module to unload was also the 1493 default version for these root names. 1494* Make -l/-t switches mutually exclusive. Last switch mentioned on the 1495 command-line is honored. 1496* Output parsable modulepath header when -l/-t switches are enabled. 1497* When searching for a module in a given modulepath directory, if a module 1498 alias or a symbolic version matches searched module but the target of 1499 this alias or symbol is not found in current modulepath directory, 1500 search for this target restarting search from the first modulepath in 1501 list to ensure modulepath priority. 1502* Solve aliases or symbolic versions looking for all modulepaths on ``search`` 1503 and ``paths`` commands. Was previously solved if their target was found in 1504 same modulepath directory. 1505* Add support for hidden *dot* modulefiles. A hidden modulefile does not 1506 appear in case of wild search, it is only returned when search is about 1507 its exact name. 1508* No table header print in --long mode on an ``avail`` command if no result 1509 are returned. 1510* Add blank line between displayed list of elements, for instance between 1511 modulepath content on ``avail`` command. 1512* Improve readability of error messages encountered during modulefile 1513 execution by putting Tcl error message first after the ``Module ERROR`` 1514 prefix. 1515* Do not exit immediately when an internal error occurs in currently 1516 interpreted modulefile. Consider this interpretation as failed and 1517 continue to proceed the other modulefile arguments. 1518* When multiple modulefiles are passed on ``display``, ``help`` and ``test`` 1519 commands only output one separator line between 2 interpreted modulefiles. 1520* Fix environment settings stack handling issue when restoring stack after 1521 a failed attempt to load a modulefile in a modulefile. 1522* Failed attempt to load or unload a modulefile within a modulefile now 1523 leads to this upper modulefile load or unload failure. Previously upper 1524 modulefile were loaded respectively unloaded even if its dependent 1525 sub-modulefile failed to load or unload. 1526* During a ``switch`` command, if the unloading part fails the loading part 1527 will not be tried. Unloading part fails if module to unload does not 1528 exist or its unload interpretation raise error. 1529* Init: use ``module source`` rather shell command ``source`` to load modulerc 1530 system configuration in sh-kind, csh-kind and fish shell init scripts. 1531* Install: transform configuration options to bind to an existing 1532 compatibility Modules version into option (--enable-compat-version) to 1533 build and install this compatibility version along with main version. 1534* Init: adapt initialization scripts to handle both main and compatibility 1535 version. By default a shell script enables main version and if the 1536 environment variable MODULES_USE_COMPAT_VERSION is set to 1, the 1537 compatibility version is enabled instead of main version. 1538* Install: import from compatibility version and install ``add.modules`` 1539 and ``mkroot`` utility scripts (scripts developed by R.K. Owen). 1540* Install: update RPM spec file to handle compatibility version as a 1541 ``compat`` sub-package. 1542* Add completion script for Fish shell (contribution from BEFH). 1543* Doc: extend content of diff_v3_v4 to details all noticeable changes 1544 between v3.2 and v4.0. 1545* Doc: introduce MIGRATING guide to learn the major changes when moving 1546 from v3.2 to v4.0. 1547* Fix ``list`` command when full pathname modulefile is loaded (fix bug#132) 1548* Install: handle version number though git tags in scripts, documentation 1549 and RPM spec file. 1550* Doc: migrate documents from POD format to reStructuredText to benefit from 1551 Sphinx documentation framework and Read The Docs publishing capabilities. 1552 1553Above changes describe the differences with modules-tcl release 1.923. To 1554learn about the changes between Modules 4.0 and last Modules 3.2 release, 1555please see the :ref:`MIGRATING` document. 1556 1557 1558modules-tcl-1.923 (2017-07-20) 1559------------------------------ 1560 1561* Fix ``aliases`` command when a global or user RC file is set. 1562* Find and solve global or user RC aliases and symbolic versions on 1563 ``search``, ``whatis`` and ``paths`` commands. 1564* Do not look at currently loaded modules to resolve the target of a module 1565 alias. 1566* Rework default and latest versions search on ``avail`` command. Correct 1567 display when at a given level a sub-directory element is last element in 1568 directory among modulefiles. Previously sub-directory was printed but 1569 last file among modulefiles was also printed (2 latest versions at the 1570 same level). A directory tagged "default" does not appear anymore in 1571 default listing result as its content (the default version found in that 1572 directory) will be displayed. 1573* When an alias is set and overrides name of an existing directory, take 1574 this alias into account for default and latest choice and ignore 1575 directory content. 1576* Bad default set will lead to no result displayed for the corresponding 1577 module in case of default ``avail`` display. 1578* Correct inclusion of aliases in output result when these aliases are not 1579 part of the exact same module path than module path of the search. 1580* Rewrite existing shell initialization file with initadd, initprepend, 1581 initswitch, initrm and initclear commands rather than writing a new 1582 file then copying this new file to replace the existing initialization 1583 file. In addition only re-writes shell initialization file if its content 1584 need to be altered. 1585* Raise an error on initadd, initprepend, initswitch, initrm and initclear 1586 commands when no ``module load`` line are found in shell initialization 1587 file. 1588* Normalize error messages for the various collection-related commands 1589 when collection cannot be accessed. 1590* Cleanup existing reference counters of a path list variable when this 1591 variable is altered by a ``setenv`` or an ``unsetenv`` command. 1592* Init: do not pollute tab-completion with moduleraw command. (Bert Wesarg) 1593* Make use of the same Tcl interp for each modulefile interpretation and 1594 use another one for each modulerc (but the same for each modulerc). By 1595 doing so we proceed like on C-version where same interpreter is used 1596 across modulefile or modulerc interpretation. Huge performance 1597 improvement is achieved with this change on commands making intensive 1598 use of interp like ``avail``. Interpreter state is reset from one 1599 interpretation to another: the initial variable and procedure state is 1600 restored before each new interpretation to avoid spread of definitions 1601 from one interpretation to another. Also in case of nested interpretation 1602 each interpretation level has its own interpreter so a module loaded by 1603 another does not influence the interpretation of the module loading it. 1604* Improve performance of aliases and symbolic versions resolution by 1605 computing these resolution at definition time. As a consequence 1606 resolution loop are not registered anymore and produce an error message 1607 when spotted not at display time. 1608* Reduce number of ``access`` system call by trying access to modulefile 1609 when reading the content of a modulefile directory rather testing access 1610 before trying it. 1611* No error raise on empty argument list for load. To cope with initadd 1612 behavior that requires at least an empty ``module load`` line in startup 1613 files. (fix SF bug#88) 1614* Fix initadd to handle load line without trailing space. Was previously 1615 expecting load directive to be written "module load " to get a match. 1616 With fix, ``module load`` line will also be matched. 1617* Like C-version catch raised error when break or continue are called from 1618 outside of a loop to handle them as when they are called from modulefile 1619 main body. (fix SF bug#87) 1620* Return error on ``module use`` command when an empty path string is 1621 provided rather ignoring it. 1622* Workaround ``min`` and ``max`` functions and ``lreverse`` procedure for 1623 correct operations under Tcl version 8.4. 1624* Install: add --with-tclsh configure option to give the ability to choose 1625 the Tcl interpreter shell to setup in initialization scripts. 1626* Handle error raised from the ModulesDisplay, ModulesHelp and ModulesTest 1627 procedures in the same way than for the evaluation of the modulefile 1628 content. An error occurring during the evaluation of the modulefile 1629 content will lead to no evaluation of the ``display``, ``help`` and 1630 ``test`` command specific functions. 1631* Remove ``debug`` module command 1632* Doc: describe ``path``, ``paths`` and ``autoinit`` module command. 1633* Correct use of xrdb tool when not installed in default path. 1634* Fix ``init*`` module commands to behave more like C-version and document 1635 remaining differences in diff_with_c-version. 1636* Init: make ``sh`` init script closer to POSIX specification to support sh 1637 flavors different than Bash or Zsh like Dash. 1638* Fix column-mode display for very short width terminal. 1639* Install: introduce an ``install`` non-regression testsuite which is 1640 triggered by the ``make testinstall`` command and checks modules-tcl 1641 installation is operational. 1642* Init: fix modulerc load test on ``fish`` init script. 1643* Init: fix interactive shell test on ``sh`` init script. 1644* Install: add --enable-example-modulefiles configure option that install 1645 by default some modulefiles provided as example in the system modulefiles 1646 directory. 1647* Install: when uninstalling, do not remove modulefiles directory if it is 1648 not empty. 1649* Add completion script for Zsh shell. 1650* Add ``module test`` command to trigger when called execution of a 1651 ModulesTest procedure in target modulefile following same kind of 1652 mechanism than ``module help``. 1653 1654 1655modules-tcl-1.832 (2017-04-29) 1656------------------------------ 1657 1658* Fix ``getenv`` sub-command to correctly return environment variable value. 1659* Clarify in man-pages display of module alias and symbolic version-name on 1660 ``avail`` command and management of file access issue when locating 1661 modulefiles. 1662* Distinguish access issue (permission denied) from find issue (cannot 1663 locate) when trying to access directly a directory or a modulefile as 1664 done on ``load``, ``display`` or ``whatis`` commands. In addition on this 1665 kind of access, not readable .modulerc files are ignored rather producing a 1666 missing magic cookie error. 1667* When mode is set to unload, ``module load`` commands in modulefile are 1668 interpreted as ``module unload`` commands. To guaranty correct behavior 1669 regarding requirements, the module list passed to the load command is 1670 reversed to unload the modulefiles in the reverse order than they have 1671 been loaded. 1672* Correct ``display`` command to only report module commands set in 1673 modulefile and not those set in the various .modulerc on the path toward 1674 this modulefile. 1675* Fix bash and tcsh completion scripts to eliminate symbolic version names 1676 from ``avail`` command result. 1677* Improve ``avail`` command when a symbolic version-name is passed as 1678 argument to return the modulefile target of this symbolic version-name. 1679* When looking for an implicit default in a directory, now a module alias is 1680 taken into account so it can be returned as the last element in it 1681 (highest numerically sorted version). 1682* Fix ``list`` command to correctly display the ``default`` tag along loaded 1683 modules when set via a .version file. 1684* Fix long output of ``list`` command to display the symbolic version-names 1685 associated to each loaded module if any. 1686* Improve ``avail`` command to return alias module when an alias name is 1687 passed as argument. 1688* On a ``--default`` listing, a modulefile does not appear anymore if a 1689 directory is set default at the same level. On a ``--latest`` listing, a 1690 directory does not appear anymore if set default but not the latest. 1691* Read modulerc and validate its header in a single open/read/close sequence 1692 instead of two in order to reduce to number of IO operations during an 1693 ``avail`` command. 1694* Drastically reduce grid size computation time which removes overhead when 1695 displaying module avail results in column-mode. 1696* Translate module name to currently interpreted module name when name 1697 correspond to the last part this interpreted module only in case of 1698 symbolic version-name or alias resolution. 1699* Avoid resetting regular path (/usr/bin) or manpath (/usr/share/man) when 1700 switching from Tcl to C version in switchml utility. 1701* Raise error on x-resource if DISPLAY environment variable is not set. 1702* Fix lisp init script which was broken for environment change actions. 1703 1704 1705modules-tcl-1.775 (2017-03-07) 1706------------------------------ 1707 1708* Improve README with examples, requirements, links, etc. Also update 1709 INSTALL documentation with details on the new configure/make/make install 1710 process. 1711* Add display of a release date next to the version number when calling for 1712 ``--help`` or ``--version``. 1713* Update diff_with_c-version document to describe the features of the 1714 Tcl-version that are not supported on the C-version. Also state that the 1715 diff takes C version 3.2.10 against Tcl version 1.729 as a basis. 1716* Introduce ``switchml`` tool, a shell function (or alias for csh or tcsh 1717 shells) that swap currently enabled Modules version (C or Tcl) by the 1718 other version (C or Tcl). Configure option ``--with-cver-initdir`` must be 1719 defined to enable ``switchml`` in initialization script. 1720* Define a PATH and MANPATH in shell initialization scripts that point to 1721 the defined modules-tcl installation directories. 1722* Give ability to generate distribution tarball from the git repository with 1723 Makefile ``dist`` target. 1724* Introduce an installation process for this software following the 1725 configure/make/make install fashion. Configure step enables to choose 1726 installation paths and init scripts features to activate. Make step mainly 1727 translates init scripts with the configuration set. Make install creates 1728 target directories and copy files into them. 1729* Fix MODULESHOME setup in autoinit command to define it as an absolute path 1730 and set it to the upper directory when modulecmd.tcl is located in a ``bin`` 1731 or a ``libexec`` directory. 1732* Correct alias and version resolution on avail command which was erroneous 1733 in case of a modulefile holding symbols (like ``default``) and targeted by 1734 aliases. Avail output was showing the aliases holding the symbols instead 1735 of the modulefile. 1736 1737 1738modules-tcl-1.729 (2017-02-01) 1739------------------------------ 1740 1741* Add documentation in module(1) man page on the modulefile collection 1742 concept and the relative ``save``, ``restore``, ``saverm``, ``saveshow`` 1743 and ``savelist`` commands. 1744* Add document to list the differences of the functionalities that can be 1745 found on the C-version of the Modules package compared to the 1746 Tcl-version. 1747* Improve modulecmd.tcl shebang to only search ``tclsh`` once if found in 1748 PATH. 1749* Add ``module-info mode`` check against ``remove`` and ``switch`` values. 1750* Introduce ``module-info command`` Modules-specific Tcl command to 1751 distinguish complex ``load`` or ``unload`` commands that cannot be 1752 determined with ``module-info mode`` alone. For instance a modulefile can 1753 now be aware that a ``switch``, a ``restore`` or a ``purge`` command is 1754 currently being run. 1755* Enable usage of ``module-info`` Modules-specific Tcl command from a 1756 modulerc file. 1757* Fix ``module-info specified`` Modules-specific Tcl command. 1758* No exit raise on modulefile or modulerc error during ``avail``, ``aliases``, 1759 ``whatis`` and ``search`` commands to avoid harming results from these 1760 global commands if error exists in a few modulefiles. 1761* Exit with error code when a critical error is encountered when 1762 interpreting a modulefile or a modulerc. 1763* Inhibit non-critical error report raised from modulefiles during ``avail``, 1764 ``aliases``, ``whatis`` and ``search`` commands to avoid error flood when 1765 parsing all modulefiles or modulercs. 1766* Handle multiple lines of ``module-whatis`` Modules-specific Tcl commands 1767 defined for the same modulefile. 1768* Handle multiple arguments passed to the ``module-whatis`` Modules-specific 1769 Tcl commands. They are joined to get a single line of text. 1770* Return error on ``whatis`` command if searched modulefile is not found. 1771 1772 1773modules-tcl-1.704 (2017-01-20) 1774------------------------------ 1775 1776* Set path variable counter to 1 for paths without a known reference count 1777 (was previously set to 999999999). 1778* Introduce ``envml`` utility which acts as an application launcher where 1779 module commands are instantiated to setup environment before launching 1780 the given application. 1781* Always register paths provided to be part of MODULEPATH environment 1782 variable as absolute paths to get independent from the current working 1783 directory. 1784* Inhibit next modulefiles interpretation with ``exit`` Modules-specific Tcl 1785 command only if current mode is ``load``. 1786* Add argument to ``module-info shell`` and ``module-info shelltype`` to test 1787 current shell or shelltype value. 1788* Fix use of ``default`` version-name to not consider it as a module symbol 1789 if a modulefile is named ``default``. 1790* Fix path variable counters when ``:`` character is used in elements of a 1791 path-like variable. 1792* Update module(1) and modulefile(4) man pages to clear content specific to 1793 the C version of Modules and add content specific to or adapt content that 1794 behave differently on this Tcl version. 1795* Fix TCLSH variable issue in Python init script. 1796 1797 1798modules-tcl-1.677 (2017-01-04) 1799------------------------------ 1800 1801* Make ``switch`` command handle a single argument. The modulefile to switch 1802 to is the one passed on the command-line and the modulefile to unload is 1803 assumed to be the currently loaded module with the same root name as 1804 this modulefile specified on the command-line. 1805* Make ``switch`` command idempotent by always ending up with ``old`` unloaded 1806 and ``new`` loaded, whatever the starting situation is. 1807* Fix ``exit`` Modules-specific Tcl command. 1808* Add ``refresh`` command as alias on ``reload`` command. 1809* Add dummy ``module-log``, ``module-trace``, ``module-user`` and 1810 ``module-verbosity`` Modules-specific Tcl commands to enable support for 1811 modulefiles using them. 1812* Fix ``system`` Modules-specific Tcl command to behave like described on 1813 the man page. 1814* Fix ``module list`` when module loaded with full path 1815* Disable ``g_force`` property by default to avoid loading a modulefile 1816 already loaded. It also avoids path element reference counting to get 1817 increased when the same module is asked twice for load. 1818* Clarify module-info ``mode`` option and set ``help`` mode on ``module help`` 1819 command. 1820* Clarify module-info ``flags`` and ``user`` options. 1821* Handle empty or separator path on ``add-path`` ad ``unload-path`` commands. 1822* Delete environment variable targeted by an ``unsetenv`` command on 1823 ``unload`` mode if no value has been provided along. On display mode, print 1824 environment variable value if any has been passed to ``unsetenv`` command. 1825* When setting Tcl variable, enclose value within double quotes. 1826* Fix perl quoting style for variable set, escape single quotes rather 1827 double quotes. 1828* Call ``unuse`` command instead of ``use`` command on a ``module unload``. 1829* Fix ``continue`` Modules-specific Tcl command. 1830* Add ``chdir`` Modules-specific Tcl command. 1831* Fix ``break`` Modules-specific Tcl command. 1832 1833 1834modules-tcl-1.655 (2016-11-23) 1835------------------------------ 1836 1837* No display of modulepath header if no module found in it. 1838* Remove call to ``module aliases`` on ``module avail`` command, as aliases 1839 are now directly included in the ``avail`` results. 1840* Include module aliases in the displayed result of an ``avail`` command. 1841 Also display aliases defined in a global or user modulerc file. 1842* Exit with error code if error occurred on display or help commands. 1843* Fix module-info symbols resolution. 1844* Better handling of .modulerc and .version files when searching for a 1845 modulefile. 1846* Fix module-info version resolution. 1847* Fix module-info alias resolution. 1848* Register alias and version by the short module name and improve their 1849 resolution to avoid loop. 1850* Source $MODULERCFILE/modulerc when $MODULERCFILE is dir. 1851* Make it so you can do ``module avail un``, wildcard ``*`` character 1852 implied. 1853 1854 1855modules-tcl-1.632 (2016-09-06) 1856------------------------------ 1857 1858* Raise error if command does not receive the excepted number of arguments. 1859* Improve column-mode display to get a denser output on ``avail`` command. 1860* Standardize the output of Warning, Error, InternalBug and ErrorAndExit 1861 messages. 1862* Add short option -d for --delim on prepend-path. 1863* Introduce collection target concept to distinguish between machines, 1864 environments or domains that are incompatible with each other. 1865* Introduce ``saveshow`` command, to display content of saved collections. 1866* Improve ``save`` and ``restore`` commands to handle collection specified as 1867 absolute or relative file path. 1868* Introduce ``saverm`` command, to delete saved collections. 1869* Enable to ``restore`` collection with multiple modulefiles specified on the 1870 same line. 1871* Fix ``restore`` command when there is no module to load in collection. 1872* Fix ``restore`` command when collection fully rewind module paths. 1873* Fix ``restore`` command to preserve module path order set in collection. 1874* Raise error if try to save an empty environment in a collection. 1875 1876 1877modules-tcl-1.602 (2016-08-13) 1878------------------------------ 1879 1880* Add support for Fish shell. 1881* Import recent tests added to C-version on 10-use and 50-cmds testsuites. 1882* Add short option -d for --delim on append-path and remove-path. 1883* Fix load and implement unload x-resource. 1884* Fix Python code that was broken or not Python3-compliant. Fixed code is 1885 used to define the module command, to render error and to process 1886 x-resource. 1887* Always dictionary-sort (also called numerical-sort) list of modulefiles 1888 or list of collections. 1889* Fix bash completion script to be compliant with bash posix mode. 1890 1891 1892modules-tcl-1.578 (2014-12-24) 1893------------------------------ 1894 1895* First release to be described in this NEWS file but it does not mean this 1896 is the first version of modules-tcl as this Modules flavor is born in 1897 2002. 1898* At this stage, modules-tcl handles a majority of the module commands and 1899 modulefile Tcl commands available on C version. 1900