Changelog
Not in any release yet
- Changes to existing behaviour
- Breaking change Regular expression syntax for breakpoints changes from Perl syntax to ECMAScript.
Version 4.0.0
-
New features
- The
clangengine of release 3.0.0 has been renamed totemplight. Note that there is a new engine calledclang(see Changes to existing behaviour). - New engine:
null - New engine:
gcc. Note that only preprocessor shell is supported. (No template metaprogram evaluation or debugging) - New engine:
msvc. Note that only preprocessor shell is supported. (No template metaprogram evaluation or debugging) - New engine:
pure_waveadding Boost.Wave support. Note that by default it has an empty sysinclude path (which means it has no access to standard headers). - New engine:
waveadding Boost.Wave support with the standard headers of the Templight (shipped with Metashell) on the system include path and the macros of Templight defined by default. - pdb, the macro debugger
- Support for using different configs in Metashell.
- Caching of the metaprogram execution can be disabled in mdb and pdb with
-nocache
- The
-
Fixes
- The
templight_metashellexecutable is found even if themetashellexecutable is behind a symlink on macOS and OpenBSD systems. This also broke the Homebrew version of metashell.
- The
-
Changes to existing behaviour
- Breaking change The
point_of_instantiationfields of the objects of the JSON interface have been renamed topoint_of_event. (The purpose is to share the interface between template and macro debugging frames). - The command-line options displaying Markdown documentation
(
--show_pragma_helpand--show_mdb_help) have been removed. They have been moved to another utility, which is used internally and are not part of the interface any longer. - The
clangengine uses the YAML template instantiation dump for template debugging instead of the Templight dump. This makes it possible to work with a Clang binary (patched with Templight) and does not require a Templight binary. Note that profiling is not supported. - The input events are read lazily in the debugger.
- Breaking change The
Version 3.0.0
-
New features
- Add pager for MDB commands which tend to have long output
- Experimental support for profiling metaprograms in MDB
- Experimental support for traversing the whole environment in MDB
- New MDB command:
finish - New MDB command:
break - MDB now shows DeducedTemplateArgumentSubstitution events, which helps you to debug expressions involving SFINAE.
- Support for displaying preprocessed code (
#msh pp) - Support for displaying the preprocessed version of the shell commands
(
#msh preprocessed echo) - Support for hiding C++ errors (
#msh show cpp_errors) - Support for disabling the evaluation of metaprograms
(
#msh metaprogram evaluation) - Add command to set the shell to preprocessor mode
(
#msh preprocessor mode) - Add command to set the shell to metaprogramming mode
(
#msh metaprogram mode) - Add command to display a comment in the shell (
#msh echo) - Add command to display macro definitions (
#msh macros) - Add command to display macro names (
#msh macro names) - Add commands to display include paths
(
#msh sysincludesand#msh quoteincludes) - Add command to search for include files (
#msh which) - Add command to list included headers (
#msh included headers) - Add command to list available headers with given prefixes
(
#msh ls)
-
Changes to existing behaviour
- File sections displayed by MDB now shows the source location of the instantiated template instead of the point of instantiation.
- Breaking change Compiler-dependent command line arguments (eg. -I, -D, etc) are accepted as compiler arguments only (after the --) and are not allowed as "normal" Metashell arguments.
- Breaking change
--clang <clang path>is not supported. To use a custom Clang, one has to use--engine clang -- <clang path> -std=c++0x -ftemplate-depth=256 -Wfatal-errors. On Windows the-fno-ms-compatibility -U_MSC_VERarguments also need to be added. - Breaking change Environment saving is enabled by default and can be
disabled by using
--disable_saving. - Reduced temporary directory creation: one shell creates one temporary directory only and uses that (and its subdirectories)
- New document type in the JSON interface:
filename_list - New document type in the JSON interface:
filename_set - The
-nostdincand-nosdtinc++arguments remove the path of the headers shipped with Metashell from the system include path.
-
Fixes
- The temporary
code_complete.cpphas been removed from the include path. - Leaving MDB does not crash when included file becomes invalid before returning to the normal shell.
- The temporary
-
Documentation updates
- New "How to..." section about debugging SFINAE.
Version 2.1.0
-
New features
- Support different shell modes (plain, readline, JSON)
- Optional logging of what Metashell is doing in the background.
- New MDB command:
step out - New MDB command:
next, alias forstep over - New MDB command:
frame - MDB now can debug metaprograms which fail to compile
- MDB now prints the relevant sections of the source code for movement commands
- Significantly improved MDB performance for large metaprograms
- New command-line arguments:
--consolefor choosing shell mode--logfor enabling logging--nosplashfor disabling the splash at (sub)shell startup
-
Fixes
- Detect environment setup commands that are expanded from a macro call
-
Documentation updates
- New section about
step overin Getting started.
- New section about
Version 2.0.0
-
New features
- mdb, the template metaprogram debugger. (Andras Kucsma's contribution)
- Support for precompiled header usage. It is based on Marshall Clow's advice and is a major speed improvement.
- Pragmas controlling the shell
- More flexible environment management
- Environment stack (with
pushandpopoperations) for trying temporary definitions out - Environment reset to avoid restarting the shell
- Saving the environment in a file for code developed in the shell
- Environment stack (with
- Multi-line input in the shell
- New command-line arguments:
-Dfor defining macros-wfor suppressing warnings--no_precompiled_headersfor disabling precompiled header support--clangfor specifying which clang binary to use-ftemplate-depthfor specifying the maximum template depth--enable_savingfor enabling saving the environment in a file
-
Fixes
- The shell accepts the following on the command prompt:
- macro definitions
- empty command
- type alias definitions when
typedefis not the first token - comment
- constexpr function definition
- Don't store empty lines in history
- Store repeated commands only once in history
- The shell accepts the following on the command prompt:
Version 1.0.0
- First release