CaaS Monthly Meeting – 09 June 2022 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
The artistic live coding community has been growing steadily since around the year 2000. The Temporary Organisation for the Permanence of Live Art Programming (TOPLAP) has been around since 2004, Algorave (algorithmic rave parties) recently celebrated its tenth birthday, and six editions of the International Conference on Live Coding (ICLC) have been held. A great many live coding systems have been developed during this time, many of them exhibiting exotic and culturally specific features that professional software developers are mostly unaware of. This talk will introduce the artistic live coding context and community, and then describe attempts by this community to appropriate the Cling C++ interpreter for artistic practice. In one such example, Cling has been used as the basis for a C++ based live coding synthesiser [1]. In another example, Cling has been installed on a BeagleBoard to bring live coding to the Bela interactive audio platform [2]. Following these examples, I will offer some reflections on the potential mutual benefits for increased engagement between the Cling community and the artistic live coding community.
[1] tiny spectral synthesizer with livecoding support
[2] Using the Cling C++ Interpreter on the Bela Platform
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 05 May 2022 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Weekly Meeting – Wednesdays at 14:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
[Slides](/assets/presentations/CaaS_Weekly_25_05_2022_Tapasweni-Improving-performance-of-c++-modules-in-clang-project.pdf
CaaS Monthly Meeting – 07 April 2022 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 10 March 2022 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
In 2021 a new remote-JIT layer “RemoteEPC” landed in LLVM’s OrcJIT library [0]. It separates serialization from transport, streamlines error behavior and integrates well with ExecutorProcessControl. Combined with the clean design and extensibility of ORCv2 and JITLink, it lowers the bar for building exotic out-of-process LLVM bitcode JITs.
The ez-clang project [1] makes use of all these to build a pure out-of-process REPL specifically designed for very low-resource embedded devices. The executor endpoint on the device is very simple and fits into a few Kilobytes of memory. All heavy lifting happens in the JIT process on the host.
I want to present my proof-of-concept implementation, which is based on
a hacked-up version of cling [2] (bringing in Clang-integration, a
command line and the concept of transaction-based incremental
compilation). Right now, it supports a small selection of Cortex-M
development boards. The smallest is the TeensyLC [3] with an ARMv6-M
instruction set, 62kb Flash memory and 8kb RAM.
[0] https://github.com/llvm/llvm-project/commit/bb27e4564355
[1] https://echtzeit.dev/ez-clang
[2] https://github.com/root-project/cling
[3] https://www.pjrc.com/teensy/teensyLC.html
CaaS Monthly Meeting – 03 February 2022 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 13 January 2022 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 09 December 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 11 November 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 07 October 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
The C++ programming language is used for many numerically intensive scientific applications. A combination of performance and solid backward compatibility has led to its use for many research software codes over the past 20 years. Despite its power, C++ is often seen as difficult to learn and inconsistent with rapid application development. Exploration and prototyping is slowed down by the long edit-compile-run cycles during development. Exploratory programming is an effective way to gain a deeper understanding of a project’s requirements; reduce the complexity of a problem; and provide an early validation of the system’s design and implementation. This is amongst the strengths of Python and a major design goal of new languages such as Julia, D and Swift.
Two of the most widely used languages by researchers are C++ and Python. Python has grown steadily as a language of choice for data science and application control. The interactive nature of Python and its many available libraries make it an excellent choice for scripting tasks and code prototyping. However, native computational performance of Python is mediocre. Python includes functionality for replacing the most critical components of a processing kernel with implementations in C. This functionality is insufficient to fully cover many scientific use cases because crossing the language boundary is expensive due to limitations in current tools.
This talk describes key aspects of language interoperability for C++ using an automated binding approach. The primary initial focus is to support automatic binding to and from Python. Furthermore, the approach is generic enough to fit other languages such as D and Julia.
Slides
CaaS Monthly Meeting – 02 September 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
cppyy provides automatic Python bindings to C++ code, at runtime, through Cling, the C++ interpreter. Python is itself a dynamic language executed by an interpreter, thus the interaction with C++ code becomes more natural when intermediated by Cling. Examples include runtime template instantiations, callbacks, cross-language inheritance, automatic downcasting, and exception mapping. Many advanced C++ features such as placement new, multiple virtual inheritance, variadic templates, etc., are also naturally handled.
cppyy achieves high performance through an all-lazy approach and specialization of common cases through runtime reflection. As such, it has a much lower call overhead than other binders, notably in its implementation for PyPy, a fully compatible Python interpreter sporting a tracing JIT. Furthermore, cppyy makes maintaining a large software stack simpler: except for cppyy’s own python-interpreter binding, it does not have any compiled code that is Python-dependent. I.e., cppyy-based extension modules require no recompilation when switching Python interpreters.
In this presentation I’ll show the benefits of runtime Python-C++ bindings and give a bird’s eye overview of the implementation underpinning cppyy.
Slides
CaaS Monthly Meeting – 05 August 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
Cxx.jl is one of the oldest Julia packages and provides extremely tight integration between Julia and C++. With advanced features including a C++, REPL environment, the ability to perform cross-language template instantiation as well as cross-language object implementation, it is a powerful tool for developers seeking to integrate the two languages. However, despite these capabilities, the package never fully became mainstream due to a number of technical limitations. In this talk, I will explore the design and featureset of Cxx.jl, and what limitations in Clang and Julia prevented its full adoption in the Julia world.
SlidesJulia can directly call C++ via the Cxx.jl package. This enables is to use basically all of ROOT’s capabilities directly from Julia, including reading/writing TFiles and user ROOT’s GUI features. I’ll present some past experiences and practical examples of Julia/ROOT interaction.
Slides
CaaS Monthly Meeting – 01 July 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
LLVM’s On Request Compilation (ORC) APIs provide a foundation for building in-memory and just-in-time compilers by re-using existing static compilers. This re-use is enabled by appending a new linking step to the standard compiler pipeline to patch the compiler output into the executing process. The ORC APIs support concurrent compilation, lazy compilation, and linking of code across process boundaries and even across architectures. The ORC APIs are already used in several open source projects including PostgreSQL, Cling, Julia, and the Swift interpreter; and they remain under active development with new features added frequently. This talk will provide an overview of the ORC APIs and recent developments, as well as demos and pointers to example code.
Slides
CaaS Monthly Meeting – 03 June 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 06 May 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
CaaS Monthly Meeting – 25 March 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
Sylvain Corlay from QuantStack talks about C++ in Jupyter Notebooks using the Xeus-Cling. Xeus-Cling is a Cling-based notebook kernel which delivers interactive C++. Sylvain makes a deep dive in topic outlining some of the specific challenges and requirements.
Slides Video
CaaS Monthly Meeting – 04 March 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
Simeon Ehrig from Helmholtz-Zentrum Dresden-Rossendorf (HZDR) shared his work with us recently. In his talk he gives insights about interactive CUDA using the C++ interpreter Cling. He shows several exciting examples in the area of dynamic execution without loss of state where we can “checkpoint” the execution state, add specific data analysis and reuse the previous computations.
Slides Video
CaaS Monthly Meeting – 04 February 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
Alexandru Militaru shared his work with us recently. In his talk he gives insights about C++/D interoperability on the fly using the interactive C++ interpreter Cling and cppyy.
Slides Video
CaaS Monthly Meeting – 14 January 2021 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 03 December 2020 at 17:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 22 October 2020 at 18:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda:
CaaS Monthly Meeting – 17 September 2020 at 18:00 Geneva (CH) Time
Connection information: Link to zoom
Agenda: