Skip to content

Commit 14f133a

Browse files
committed
Review changes for Projects and Research
- removed footnotes - linked research page headings (added a link icon to show it is clickable) - heading change: Clad - an Automatic Differentiation Tool - Projects Page: remove Interactive C++ (Cling Use Case) and Incremental Compilation Support in Clang (CaaS) - Added Clang-REPL to Projects YML - Added xeus-cpp to Projects YML - Changed links from "LibInterOP" page to "CppInterOp" Readme link
1 parent c23ed95 commit 14f133a

File tree

3 files changed

+80
-134
lines changed

3 files changed

+80
-134
lines changed

Gemfile.lock

Lines changed: 0 additions & 72 deletions
This file was deleted.

_data/projects.yml

Lines changed: 57 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,49 @@
1-
- name: "C++ Language Interoperability Layer"
1+
- name: "Xeus-CPP - a Jupyter Kernel for C++"
22
description: |
3-
In the CppInterOp (previously LibInterOp) project, we explore the key aspects
4-
of language interoperability with C++ using an automated binding approach,
5-
focusing on automatic binding to and from Python, but also applicable to other
6-
languages like D and Julia.
3+
Xeus-CPP is a product of OAC-1931408 in collaboration with the QuantStack
4+
company. It is a Jupyter kernel for C++ based on the native implementation
5+
of the Jupyter protocol xeus. It is supports the Wasm version of Jupyter
6+
(JupyterLite). It is a generalization of the Xeus-Clang-Repl (a Jupyter
7+
plugin supporting C++ development based on ClangRepl).
78
8-
category: "Language Interoperability"
9+
With Xeus-CPP, you can write and execute C++ code interactively, seeing
10+
the results immediately. This REPL nature allows you to iterate quickly
11+
without the overhead of compiling and running separate C++ programs.
912
link: |
10-
https://compiler-research.org/libinterop/
13+
https://github.com/compiler-research/xeus-cpp
1114
12-
- name: "Clad - Clang Plugin"
15+
- name: "Clang-REPL - an Interactive C++ Interpreter"
1316
description: |
14-
Clad is a plugin for the Clang compiler that enables automatic differentiation
15-
capabilities for C/C++ codebases. It is a valuable tool for developers seeking
16-
to streamline complex mathematical computations and optimize their codebase
17-
efficiently.
17+
Clang-Repl is an interactive C++ interpreter that allows for incremental
18+
compilation. It supports interactive programming for C++ in a
19+
read-evaluate-print-loop (REPL) style.
1820
19-
Clad facilitates the generation of derivatives, gradients, Hessians, and
20-
Jacobians (in forward and/or reverse mode), enhancing the efficiency and
21-
versatility of numerical computations.
21+
Clang-Repl is suitable for exploratory programming and in places where
22+
time to insight is important. Clang-Repl is a project inspired by the work
23+
in Cling, a LLVM-based C/C++ interpreter developed by the field of high
24+
energy physics and used by the scientific data analysis framework ROOT.
25+
Clang-Repl allows to move parts of Cling upstream, making them useful and
26+
available to a broader audience.
27+
link: |
28+
https://clang.llvm.org/docs/ClangRepl.html
2229
23-
Clad not only supports partial and higher-order derivatives but also
24-
integrates seamlessly with frameworks like ROOT, providing a comprehensive
25-
solution for automatic differentiation needs in C++ applications.
26-
category: "Automatic Differentiation"
30+
- name: "CppInterOp - a C++ Language Interoperability Layer"
31+
description: |
32+
CppInterOp (previously LibInterOp) is a product of OAC-1931408 and exposes
33+
APIs from Clang and LLVM in a mostly backward compatibe way. The APIs
34+
support downstream tools that utilize interactive C++ by using the
35+
compiler as a service. That is, embed Clang and LLVM as a libraries in
36+
their codebases.
37+
38+
The APIs are designed to be minimalistic and aid non-trivial tasks such as
39+
language interoperability on the fly. In such scenarios CppInterOp can be
40+
used to provide the necessary introspection information to the other side
41+
helping the language cross talk. The package makes it easy to deploy as it
42+
ships Clang as a service without any dependencies.
2743
link: |
28-
https://compiler-research.org/clad/
44+
https://github.com/compiler-research/CppInterOp
2945
30-
- name: "Cling - C++ Interpreter"
46+
- name: "Cling - an Interactive C++ Interpreter"
3147
description: |
3248
Cling is an interactive C++ interpreter that operates on top of the Clang and
3349
LLVM libraries, utilizing LLVM's Just-In-Time (JIT) compiler for fast and
@@ -41,26 +57,28 @@
4157
By providing support for advanced C++ features like templates, lambdas, and
4258
virtual inheritance, Cling empowers developers in exploratory programming with
4359
interactive, dynamic language interoperability and rapid prototyping.
44-
category: "Interactive C++"
4560
link: |
46-
https://rawgit.com/root-project/cling/master/www/index.html
61+
https://github.com/root-project/cling
4762
48-
- name: "Interactive C++ (Cling Use Case)"
63+
- name: "Clad - an Automatic Differentiation Tool"
4964
description: |
50-
Researchers heavily rely on tools that minimize the "time to insight" to
51-
enhance productivity. However, the escalating data volumes and computational
52-
demands necessitate a constant emphasis on optimizing code performance. This
53-
is where interactive capabilities of tools like Cling are useful, enabling
54-
navigation through a diverse set of programming languages, development tools,
55-
and hardware.
56-
category: "Interactive C++"
57-
link: |
58-
https://compiler-research.org/interactive_cpp
65+
Clad is a plugin for the Clang compiler that enables automatic differentiation
66+
capabilities for C/C++ codebases. It is a valuable tool for developers seeking
67+
to streamline complex mathematical computations and optimize their codebase
68+
efficiently.
5969
60-
- name: "Incremental Compilation Support in Clang (CaaS) Project"
61-
description: |
62-
Incremental compilation aims to support clients that need to keep a single
63-
compiler instance active across multiple compile requests.
64-
category: "Compiler-As-A-Service"
70+
Clad facilitates the generation of derivatives, gradients, Hessians, and
71+
Jacobians (in forward and/or reverse mode), enhancing the efficiency and
72+
versatility of numerical computations.
73+
74+
Clad not only supports partial and higher-order derivatives but also
75+
integrates seamlessly with frameworks like ROOT, providing a comprehensive
76+
solution for automatic differentiation needs in C++ applications.
6577
link: |
66-
https://compiler-research.org/caas/
78+
https://github.com/vgvassilev/clad
79+
80+
81+
82+
83+
84+

_pages/research.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ permalink: /research/
88

99
Following are the areas of research that Compiler Research Group is focused on:
1010

11-
### Automatic Differentiation
11+
#### [Automatic Differentiation]
1212

1313
Automatic Differentiation (AD) is a useful technique in scientific research
1414
fields like machine learning and computational physics. AD enables the
@@ -26,9 +26,9 @@ work rather than getting bogged down in manual differentiation tasks. This
2626
automation not only accelerates the development process but also ensures that
2727
computations are error-free and consistent.
2828

29-
### Compiler-As-A-Service
29+
#### [Compiler-As-A-Service]
3030

31-
[Compiler as a Service (CaaS)] is an evolving technology that redefines the
31+
Compiler as a Service (CaaS) is an evolving technology that redefines the
3232
traditional approach to compilers by providing a service-oriented
3333
architecture. Instead of treating the compiler as a black box, the CaaS
3434
approach helps open up the functionality to make it available as APIs. This
@@ -37,13 +37,13 @@ process, while being able to use lightweight APIs for simpler workflows and
3737
diagnostics, helping create sophisticated applications more efficiently.
3838

3939
Practical applications of CaaS include deeper and interactive program analysis
40-
and conversion from one programming language to another (e.g., C++ <->
40+
and conversion from one programming language to another (e.g., C++ and
4141
Python).
4242

4343

44-
### Incremental C++
44+
#### [Incremental C++]
4545

46-
Despite its high performance capabilities, C++ not the first programming
46+
Despite its high performance capabilities, C++ is not the first programming
4747
language that comes to mind for rapidly developing robust applications, mainly
4848
due to the long edit-compile-run cycles.
4949

@@ -53,30 +53,31 @@ language. The goal is to enable dynamic interoperability, rapid prototyping,
5353
and exploratory programming, which are essential for data science and other
5454
scientific applications.
5555

56-
Following are some practical applications of a "[C++ Interpreter]," so to speak:
56+
Following are some practical applications of a "C++ Interpreter," so to speak:
5757

5858
- In Data Science: Interactive probing of data and interfaces, making complex
59-
libraries and data more accessible to users. [^1]
59+
libraries and data more accessible to users.
6060

61-
- In CUDA: The Cling CUDA extension brings the workflows of interactive C++ to
62-
GPUs without losing performance and compatibility to existing software. [^1]
61+
- In CUDA: The Cling CUDA extension brings the workflows of [Interactive C++] to
62+
GPUs without losing performance and compatibility to existing software.
6363

6464
- In Exploratory Programming: rapid reproduction of results, which is crucial
65-
during the exploratory phase of a project. [^2]
65+
during the exploratory phase of a project.
6666

67-
- In Jupyter Notebooks: Interactive C++ can be integrated with Jupyter
68-
Notebooks, providing a swift prototyping and learning experience for C++ users. [^2]
67+
- In Jupyter Notebooks: Interactive C++ can be [integrated with Jupyter
68+
Notebooks], providing a swift prototyping and learning experience for C++
69+
users.
6970

70-
### Language Interoperability
71+
#### [Language Interoperability]
7172

72-
[Language interoperability] helps programmers get the best of both worlds, with
73+
Language interoperability helps programmers get the best of both worlds, with
7374
the ability to work with a high-performance language (e.g., C++), and at the
7475
same time, take advantage of a more interactive one (e.g., Python), while
7576
helping them identify each other's entities (like variables and classes) for
7677
seamless integration.
7778

7879
This interoperability can be achieved by libraries like [CppInterOp], which
79-
expose APIs from compilers like Clang/LLVM in a backward-compatible manner. By
80+
expose APIs from compilers like Clang in a backward-compatible manner. By
8081
enabling interactive C++ usage through the Compiler-As-A-Service, CppInterOp
8182
simplifies complex tasks such as "language interoperability on the fly".
8283

@@ -88,24 +89,23 @@ instantiate templates, and execute them efficiently. This dynamic approach not
8889
only improves performance but also simplifies code development and debugging
8990
processes, offering a more efficient alternative to static binding methods.
9091

91-
---
92-
Footnotes:
9392

94-
[^1]: [Interactive C++ for Data Science](https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/)
93+
[Automatic Differentiation ↗]: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2072r0.pdf
9594

96-
[^2]: [Interactive Workflows for C++ with Jupyter](https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92)
95+
[Interactive C++]: https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/
9796

97+
[integrated with Jupyter Notebooks]: https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92
9898

9999
[CppInterOp]: https://github.com/compiler-research/CppInterOp/blob/main/README.md
100100

101101
[Clad plugin for the Clang]: https://compiler-research.org/clad/
102102

103-
[Language interoperability]: https://compiler-research.org/libinterop/
103+
[Language Interoperability ↗]: https://cppinterop.readthedocs.io/en/latest/index.html
104104

105105
[Cling]: https://rawgit.com/root-project/cling/master/www/index.html
106106

107107
[Clang-REPL]: https://clang.llvm.org/docs/ClangRepl.html
108108

109-
[Compiler as a Service (CaaS)]: https://compiler-research.org/caas/
109+
[Compiler-As-A-Service ]: https://compiler-research.org/caas/
110110

111-
[C++ Interpreter]: https://compiler-research.org/interactive_cpp
111+
[Incremental C++ ]: https://compiler-research.org/interactive_cpp

0 commit comments

Comments
 (0)