Skip to content

Cling version 1.0

Compare
Choose a tag to compare
@vgvassilev vgvassilev released this 09 Dec 16:16
· 108 commits to master since this release

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 and CLING_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-454 GH-444 GH-440 GH-436

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)