Releases: root-project/cling
Cling version 1.2
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 1.2. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 1.2?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
External Dependencies
- Upgrade to LLVM18.
Major New Features
- Improvements in stability
Misc
- Better handling of llvm::Error
- Better integration with Clad
- Modulemap fixes
Experimental Features
- An experimental feature
Jupyter
- A Jupyter feature
Fixed Bugs
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Devajith Valaparambil Sreeramaswamy (22)
Jonas Hahnfeld (18)
Jonas Rembser (2)
Bertrand Bellenot (2)
ferdymercury (1)
dbonner (1)
Vipul Cariappa (1)
Vassil Vassilev (1)
Fredrik (1)
Danilo Piparo (1)
Aaron Jomy (1)
Cling version 1.1
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 1.1. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 1.1?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
External Dependencies
- Upgrade to LLVM LLVM16 and further reduce our technical debt
- Require C++17
Major New Features
- Support ppc64 in jitlink
- Support LLVM plugins
- Improve the modulemap handling on Darwin
Fixed Bugs
442 14593 16219 11190 14964 16121
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Jonas Hahnfeld (53)
Devajith Valaparambil Sreeramaswamy (18)
Vassil Vassilev (10)
Bertrand Bellenot (6)
ferdymercury (4)
Devajth Valaparambil Sreeramaswamy (3)
Yong Gyu Lee (2)
Jonas Rembser (2)
Vincenzo Eduardo Padulano (1)
saisoma123 (1)
Olivier Couet (1)
Maxim Cournoyer (1)
LiAuTraver (1)
Kai Luo (1)
Devajith (1)
Danilo Piparo (1)
Axel Naumann (1)
Full Changelog: vgvassilev/cling@v1.0...v1.1
Cling version 1.0
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 1.0. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 1.0?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
External Dependencies
- Upgrade to LLVM 13 and reduce the accumulated technical debt in our local fork
- Require C++14
Major New Features
- Improve C++ modules support for C++20 and Windows
- Improve performance by allowing most of cling::Value to inline
- Support profiling/debugging interpreted/JITted via
CLING_DEBUG
andCLING_PROFILE
- Partially support Apple M1
- Improve transaction unloader for templates
- Always emit weak symbols on Windows
- Support RPATH in dyld
Misc
- Improve user experience on terminal:
- Move between words with Ctrl+{Left,Right}
- Clear the terminal screen on Ctrl+L
- Bind Ctrl+Del to kill next word
- Do not assign ESC a special meaning on history search mode
- Implement
.help edit
to show line editor keybindings - .x does not crash if no argument is given
- Support setting cmd history file by
${CLING_HISTFILE}
and its size with${CLING_HISTSIZE}
- Improve
.help
and.class
commands - Improve CUDA support on Visual Studio
- Improve symbol location diagnostics using the dyld infrastructure
- Better support of ppc
Fixed Bugs
ROOT-10962 ROOT-10484 ROOT-9687 ROOT-9202 ROOT-7775 ROOT-7016 ROOT-6095 ROOT-5971 ROOT-5219
GH-13815 GH-12779 GH-12457 GH-12455 GH-13429 GH-12409 GH-12294 GH-12151 GH-11937 GH-11933 GH-11329 GH-11927 GH-10209 GH-10182 GH-10180 GH-10137 GH-10136 GH-10135 GH-10133 GH-10057 GH-9850 GH-9697 GH-9664 GH-9449 GH-8499 GH-8389 GH-8304 GH-8292 GH-8157 GH-8141 GH-7541 GH-7483 GH-7366
Special Kudos
This release wouldn't have happened without the efforts of our contributors, listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Vassil Vassilev (131)
Jonas Hahnfeld (71)
Axel Naumann (66)
Javier Lopez-Gomez (48)
saisoma123 (29)
ferdymercury (12)
Jiang Yi (11)
Bertrand Bellenot (10)
Sergey Linev (9)
Stephan Lachnit (4)
Guilherme Amadio (4)
Surya Somayyajula (3)
Simeon Ehrig (3)
Stefan Gränitz (2)
Maksymilian Graczyk (2)
Garima Singh (2)
Duncan Ogilvie (2)
Baidyanath Kundu (2)
Sara Bellei (1)
Oksana Shadura (1)
Mikolaj Krzewicki (1)
Mattias Ellert (1)
Karel Balej (1)
Jonas Rembser (1)
Enrico Guiraud (1)
Danilo Piparo (1)
Cling version 0.9
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 0.9. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 0.9?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
External Dependencies
- Upgrade to LLVM 9. LLVM 9 brings to cling better stability, full C++17 support and CUDA 10 support.
Misc
- Improve CUDA device compiler such as enabling sm level configuration and and add
--cuda-path
option. - Improve the DefinitionShadower with respect to C++ Modules
- Embed Vc modulemap file
- Build the available cling plugins by default.
- Reduce dependence on custom clang patches.
Fixed Bugs
ROOT-10962
ROOT-7775
ROOT-10703
ROOT-10962
ROOT-GH-7021
ROOT-GH-7090
ROOT-GH-7657
CLING-GH-399
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Vassil Vassilev (80)
Axel Naumann (29)
Simeon Ehrig (9)
Pratyush Das (7)
Jonas Hahnfeld (7)
Javier Lopez-Gomez (1)
Enrico Guiraud (1)
David (1)
Bertrand Bellenot (1)
Cling version 0.8
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 0.8. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 0.8?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
External Dependencies
- Upgrade to LLVM-5.
Major New Features
Misc
- Improve in the C++ modules support
- Fix issues in the definition shadowing
- Improve the integration with clad
Fixed Bugs
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Vassil Vassilev (7)
Pratyush Das (4)
Javier Lopez-Gomez (4)
Axel Naumann (4)
Philippe Canal (2)
Vaibhav Garg (1)
Sylvain Corlay (1)
Henry Schreiner (1)
Cling version 0.7
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 0.7. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 0.7?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
Major New Features
- Implement a mechanism allowing to redefine entities with the same name -- the
DefinitionShadower is not default and can be turned on by:[cling] #include "cling/Interpreter/Interpreter.h" [cling] gCling->allowRedefinition()
- Improve CUDA support:
- Replace the PTX compiler with the internal one.
- Add in-memory fatbin generation.
- Initial Apple Silicon Support
- Tighter Clang C++ Modules integration:
- Implement global module indexing to improve module loading.
- Automatic virtual overlay files for libc, std, tinyxml, boost and cuda.
- Implement dynamic library symbol resolver based on the binary object formats.
Misc
- Improvements in the cpt packaging system and travis continuous integration.
- Windows improvements of jitted variables
Fixed Bugs
ROOT-10193 ROOT-10224 ROOT-10285 ROOT-10333 ROOT-10354 ROOT-10426 ROOT-10499 ROOT-10511 ROOT-10677 ROOT-10689 ROOT-10751 ROOT-10777 ROOT-10791 ROOT-10798 ROOT-10803 ROOT-10812 ROOT-10917
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Vassil Vassilev (57)
Pratyush Das (35)
Axel Naumann (28)
Simeon Ehrig (13)
Javier Lopez-Gomez (13)
Vaibhav Garg (8)
Philippe Canal (7)
Bertrand Bellenot (7)
Frederich Munch (3)
Chris Burr (2)
pankaj kumar (1)
Stephan Hageboeck (1)
Sergey Linev (1)
Oksana Shadura (1)
Martin Ritter (1)
Jonas Hahnfeld (1)
Enrico Guiraud (1)
Alexander Penev (1)
Cling version 0.6
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 0.6. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 0.6?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
External Dependencies
- Upgrade to LLVM r302975.
Major New Features
- Integrate the automatic differentiation library clad as a cling plugin.
- Implement basic plugin support -- cling can load shared libraries which can specialize its behavior. It relies on the clang plugin infrastructure.
- Emulate thread local storage (TLS) on the platforms where the JIT does not support natively.
- Clang and LLVM optimizations of interpreted code, defaults again to
-O0
Misc
- Optimize cling pointer validity checks.
- Speed up the LookupHelper facilities by introducing a parsing cache.
- Implement Control+C and Control+D support.
- Support printing lambda-dependent types.
- Various minor improvements for C++ modules support:
- Adjust module cache path;
- Build the cling runtime into a separate module;
- Support virtual filesystem overlay files;
- Use COFF object file format on Windows -- fixes symbol lookups.
Experimental Features
- Start working on CUDA support
Jupyter
- Provide better diagnostics if cling was not found;
- Find back the kernel if brew install was used;
Fixed Bugs
ROOT-6967 ROOT-7749 ROOT-8863 ROOT-8897 ROOT-8991 ROOT-9114 ROOT-9377 ROOT-9672 ROOT-9738 ROOT-9789 ROOT-9924 ROOT-10097 ROOT-10221
Special Kudos
This release wouldn't have happened without the efforts of our contributors, listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Vassil Vassilev (94)
Axel Naumann (87)
Simeon Ehrig (25)
Bertrand Bellenot (23)
Yuka Takahashi (17)
Danilo Piparo (13)
Raphael Isemann (5)
Guilherme Amadio (5)
Philippe Canal (4)
Oksana Shadura (4)
Vaibhav Garg (2)
Sylvain Corlay (2)
Saagar Jha (2)
Nikita Ermakov (2)
Dheepak Krishnamurthy (2)
xloem (1)
vagrant (1)
straydragon (1)
simeon (1)
lizhangwen (1)
Wolf Behrenhoff (1)
Nathan Daly (1)
Jason Detwiler (1)
Houkime (1)
Damien L-G (1)
Aleksander Gajewski (1)
Cling version 0.5
Introduction
This document contains the release notes for the interactive C++ interpreter Cling, release 0.5. Cling is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of Cling in some detail, including major improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main Cling web page, this document applies to the next release, not the current one.
What's New in Cling 0.5?
Some of the major new features and improvements to Cling are listed here. Generic improvements to Cling as a whole or to its underlying infrastructure are described first.
External Dependencies
- Upgrade to LLVM r302975.
Misc
- Improve the diagnostics for lambdas copy captures on global scope.
- Various optimizations in cling runtime such as outlining of
Evaluate
functions.
Experimental Features
- Advance the C++ modules support in cling
Fixed Bugs
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Axel Naumann (68)
Frederich Munch (62)
Vassil Vassilev (28)
Raphael Isemann (21)
Bertrand Bellenot (10)
Roman Zulak (9)
Philippe Canal (4)
Danilo Piparo (3)
gouarin (1)
Yuki Yamaura (1)
Cling version 0.4
Introduction
This document contains the release notes for the interactive C++ interpreter
Cling, release 0.4. Cling is built on top of Clang and
LLVM compiler infrastructure. Here we
describe the status of Cling in some detail, including major
improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the main
Cling web page,
this document applies to the next release, not the current one.
What's New in Cling 0.4?
Some of the major new features and improvements to Cling are listed
here. Generic improvements to Cling as a whole or to its underlying
infrastructure are described first.
Major New Features
- Clang and LLVM optimizations of interpreted code, defaults to -O2 (tweak with
.O <N>
) - Support unicode
- Enable C++ modules builds for cling when built with clang
- Functions can be declared at cling's prompt without
.rawInput
Cling as a Library
- Add a simple demo introducing cling as
an interpreter library
Misc
- Enable colors at the prompt
- Increase support in printing out objects such as printing of structs and
collections - Improve performance in code transformations for interactive use
- Improve matching of runtime and build time environments
- Improve stability of the
cpt.py
build tool
Experimental Features
- Progress with support on Windows
- Progress with PowerPC 64
- Preprocessed Output: cling now has the ability to generate preprocessed output
cling -E -dM will show all preprocessor definitions at startup
Jupyter
- Support of current Jupyter versions fixing ZMQ communication issues
- Support for c++11, c++14 and c++1z kernels
Fixed Bugs
ROOT-7016
ROOT-8739
ROOT-8696
ROOT-8523
ROOT-8399
ROOT-7354
ROOT-8529
ROOT-8467
ROOT-6539
ROOT-8443
ROOT-7037
ROOT-8443
ROOT-8379
ROOT-8375
ROOT-8392
ROOT-7610
ROOT-5248
ROOT-7857
ROOT-8300
ROOT-8325
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
Frederich Munch (235)
Axel Naumann (191)
Roman Zulak (66)
Vassil Vassilev (63)
Bertrand Bellenot (45)
Philippe Canal (29)
erlanger (7)
Danilo Piparo (4)
Raphael Isemann (3)
Pere Mato (3)
David Abdurachmanov (2)
Sylvain Corlay (1)
Spencer Lyon (1)
Sebastian Uhl (1)
Santiago Castro (1)
PrometheusPi (1)
Pedro Henriques dos Santos Teixeira (1)
Maarten Scholl (1)
Diego Torres Quintanilla (1)
CristinaCristescu (1)
Brian Bockelman (1)
Boris Perovic (1)
Ajith Pandel (1)
Cling version 0.3
Introduction
This document contains the release notes for the interactive C++ interpreter
Cling, release 0.3. Cling is built on top of Clang and
LLVM compiler infrastructure. Here we
describe the status of Cling in some detail, including major
improvements from the previous release and new feature work.
Note that if you are reading this file from a git checkout or the
main Cling web page, this document applies to the next release, not
the current one.
What's New in Cling 0.3?
Some of the major new features and improvements to Cling are listed
here. Generic improvements to Cling as a whole or to its underlying
infrastructure are described first.
Major New Features
- Support for GCC5 ABI, enabling e.g. native support for newer Fedora and Ubuntu.
- Code completion from the prompt.
- Rudimentary Windows support, requiring CMake nightly builds later than
01.08.2016 and MSVC 2015. - Enable C++ module builds.
Cling as a Library
- Support for building cling as a shared library.
- Improved CMake dependencies.
External Dependencies
- Upgrade to LLVM r274612.
Misc
- Extend Cling's static web site.
Experimental Features
- Code unloading:
- Dynamic Scopes:
Fixed Bugs
ROOT-8281 ROOT-8270 ROOT-8267 ROOT-8253 ROOT-8233 ROOT-8225 ROOT-8077 ROOT-7947 ROOT-7943 ROOT-7858 ROOT-7834 ROOT-7741 ROOT-4455
Special Kudos
This release wouldn't have happened without the efforts of our contributors,
listed in the form of Firstname Lastname (#contributions):
Vassil Vassilev (77), Axel Naumann (69), CristinaCristescu (16), Anirudha Bose (15), Frederich Munch (11), Bertrand Bellenot (8), Pere Mato (2), Philippe Canal (1).