Skip to content

Commit d860aa9

Browse files
committed
Merge branch 'frontPageLayoutFour' of https://github.com/QuillPusher/compiler-research.github.io into frontPageLayoutFour
2 parents 10884a8 + c96ab18 commit d860aa9

File tree

6 files changed

+265
-9
lines changed

6 files changed

+265
-9
lines changed

README.md

+26
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,32 @@ docker run --rm -v "$PWD:/srv/jekyll" \
133133
jekyll serve --livereload
134134
```
135135

136+
## Guide to Making Changes to the Website
137+
138+
### Adding a Project to /projects/ directory on the Website
139+
140+
It is possible to
141+
142+
- add a new page with a lot of project details (e.g.,
143+
`\_pages\testproject.md`) and then add the project excerpt to the projects
144+
directory `_data\projects.yml`, or
145+
146+
- you can simply add the project excerpt to the projects directory
147+
`_data\projects.yml` if there aren't enough details available for the project.
148+
149+
Next, use the `link` attribute in the `projects.yml` file to define the link
150+
to the detailed project page (if you created this in the previous step).
151+
152+
The project excerpt should now automatically show up on the '/Projects/' page
153+
along with the link to the detailed project page.
154+
155+
To change the layout of the Projects page itself, you can browse to
156+
`_pages\projects.md` and edit the Liquid code as needed.
157+
158+
> Please note that the Projects page exists in parallel to the Open Projects
159+
> page (`_pages\open_projects.md`), and you should add your project details
160+
> where it makes more sense.
161+
136162

137163
[installation]: https://jekyllrb.com/docs/installation/windows/
138164
[RubyInstaller Downloads]: https://rubyinstaller.org/downloads/

_data/contributors.yml

+11-7
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,6 @@
1515
linkedin: ""
1616
active: 1
1717

18-
- name: Ioana Ifrim
19-
info: Research Staff
20-
photo: Ifrim.jpg
21-
22-
education: MPhil Advanced Computer Science, University of Cambridge (2018)
23-
active: 1
24-
2518
- name: Alexander Penev
2619
info: Assoc. Prof.
2720
photo: Penev.png
@@ -211,6 +204,17 @@
211204
212205
active: 1
213206

207+
################################################################################
208+
# 2024 #
209+
################################################################################
210+
211+
- name: Ioana Ifrim
212+
info: Research Staff
213+
photo: Ifrim.jpg
214+
215+
education: MPhil Advanced Computer Science, University of Cambridge (2018)
216+
217+
214218
################################################################################
215219
# 2023 #
216220
################################################################################

_data/projects.yml

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
- name: "Xeus-CPP - a Jupyter Kernel for C++"
2+
description: |
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).
8+
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.
12+
link: |
13+
https://github.com/compiler-research/xeus-cpp
14+
15+
- name: "Clang-REPL - an Interactive C++ Interpreter"
16+
description: |
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.
20+
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
29+
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.
43+
link: |
44+
https://github.com/compiler-research/CppInterOp
45+
46+
- name: "Cling - an Interactive C++ Interpreter"
47+
description: |
48+
Cling is an interactive C++ interpreter that operates on top of the Clang and
49+
LLVM libraries, utilizing LLVM's Just-In-Time (JIT) compiler for fast and
50+
optimized compilation processes.
51+
52+
By adopting a read-eval-print-loop (REPL) approach, Cling is helping C++
53+
development evolve by enabling rapid application development without the need
54+
for the traditional edit-compile-run-debug cycle, thus facilitating quick
55+
prototyping and exploration in C++.
56+
57+
By providing support for advanced C++ features like templates, lambdas, and
58+
virtual inheritance, Cling empowers developers in exploratory programming with
59+
interactive, dynamic language interoperability and rapid prototyping.
60+
link: |
61+
https://github.com/root-project/cling
62+
63+
- name: "Clad - an Automatic Differentiation Tool"
64+
description: |
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.
69+
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.
77+
link: |
78+
https://github.com/vgvassilev/clad
79+
80+
81+
82+
83+
84+

_includes/header.html

+8-2
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,26 @@
1212
</a>
1313
</div>
1414
<ul id="navbar-collapse-1" class="nav navbar-nav ml-auto navbar-collapse collapse">
15-
<li class="nav-item dropdown">
15+
<!-- <li class="nav-item dropdown">
1616
<a href="#" class="nav-link dropdown-toggle" id="dropdown02" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Research</a>
1717
<ul class="dropdown-menu" aria-labelledby="dropdown02">
1818
<li class="dropdown-item"> <a class="nav-link" href="/caas">Compiler-As-A-Service</a></li>
1919
<li class="dropdown-item"> <a class="nav-link" href="/interactive_cpp">Incremental C++</a></li>
2020
<li class="dropdown-item"> <a class="nav-link" href="/libinterop">Language Interoperability</a></li>
2121
</ul>
22-
</li>
22+
</li>
2323
<li class="nav-item dropdown">
2424
<a href="#" class="nav-link dropdown-toggle" id="dropdown02" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects</a>
2525
<ul class="dropdown-menu" aria-labelledby="dropdown02">
2626
<li class="dropdown-item"> <a class="nav-link" href="https://rawgit.com/root-project/cling/master/www/index.html">Cling</a></li>
2727
<li class="dropdown-item"> <a class="nav-link" href="/clad">Clad</a></li>
2828
</ul>
29+
</li>-->
30+
<li class="nav-item">
31+
<a class="nav-link" href="/research">Research</a>
32+
</li>
33+
<li class="nav-item">
34+
<a class="nav-link" href="/projects">Projects</a>
2935
</li>
3036
<li class="nav-item dropdown">
3137
<a href="#" class="nav-link dropdown-toggle" id="dropdown01" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Results</a>

_pages/projects.md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: "Compiler Research Projects"
3+
layout: gridlay
4+
excerpt: "Notable Projects by Compiler Research Group"
5+
sitemap: false
6+
permalink: /projects/
7+
---
8+
9+
Following are some notable projects.
10+
11+
12+
{% for project in site.data.projects %}
13+
14+
<div class="well" style="padding-left: 20px; padding-right: 20px">
15+
16+
**{{ project.name }}**
17+
18+
{{ project.description | markdownify }}
19+
20+
For more details, please browse to this <a href="{{ project.link }}">link to the project</a>
21+
22+
</div>
23+
24+
{% endfor %}
25+

_pages/research.md

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
---
2+
title: "Compiler Research Research Areas"
3+
layout: gridlay
4+
excerpt: "Research"
5+
sitemap: false
6+
permalink: /research/
7+
---
8+
9+
Following are the areas of research that Compiler Research Group is focused on:
10+
11+
#### [Automatic Differentiation ↗]
12+
13+
Automatic Differentiation (AD) is a useful technique in scientific research
14+
fields like machine learning and computational physics. AD enables the
15+
automatic computation of derivatives of functions with high precision and
16+
efficiency. A notable implementation of AD is the [Clad plugin for the Clang]
17+
compiler. This integration not only simplifies the process of differentiation
18+
but also enhances the performance and accuracy of numerical computations in
19+
scientific applications.
20+
21+
In scientific research, where intricate mathematical models are prevalent, the
22+
utilization of AD through tools like the Clad brings a new level of
23+
sophistication and speed to derivative calculations. By leveraging AD within
24+
C++ compilers, researchers can focus more on the scientific aspects of their
25+
work rather than getting bogged down in manual differentiation tasks. This
26+
automation not only accelerates the development process but also ensures that
27+
computations are error-free and consistent.
28+
29+
#### [Compiler-As-A-Service ↗]
30+
31+
Compiler as a Service (CaaS) is an evolving technology that redefines the
32+
traditional approach to compilers by providing a service-oriented
33+
architecture. Instead of treating the compiler as a black box, the CaaS
34+
approach helps open up the functionality to make it available as APIs. This
35+
gives developers unprecedented control and insights into the compilation
36+
process, while being able to use lightweight APIs for simpler workflows and
37+
diagnostics, helping create sophisticated applications more efficiently.
38+
39+
Practical applications of CaaS include deeper and interactive program analysis
40+
and conversion from one programming language to another (e.g., C++ and
41+
Python).
42+
43+
44+
#### [Incremental C++ ↗]
45+
46+
Despite its high performance capabilities, C++ is not the first programming
47+
language that comes to mind for rapidly developing robust applications, mainly
48+
due to the long edit-compile-run cycles.
49+
50+
Ongoing research in projects such as [Cling], [Clang-REPL], etc. aims to
51+
provide practically usable interactive capabilities to the C++ programming
52+
language. The goal is to enable dynamic interoperability, rapid prototyping,
53+
and exploratory programming, which are essential for data science and other
54+
scientific applications.
55+
56+
Following are some practical applications of a "C++ Interpreter," so to speak:
57+
58+
- In Data Science: Interactive probing of data and interfaces, making complex
59+
libraries and data more accessible to users.
60+
61+
- In CUDA: The Cling CUDA extension brings the workflows of [Interactive C++] to
62+
GPUs without losing performance and compatibility to existing software.
63+
64+
- In Exploratory Programming: rapid reproduction of results, which is crucial
65+
during the exploratory phase of a project.
66+
67+
- In Jupyter Notebooks: Interactive C++ can be [integrated with Jupyter
68+
Notebooks], providing a swift prototyping and learning experience for C++
69+
users.
70+
71+
#### [Language Interoperability ↗]
72+
73+
Language interoperability helps programmers get the best of both worlds, with
74+
the ability to work with a high-performance language (e.g., C++), and at the
75+
same time, take advantage of a more interactive one (e.g., Python), while
76+
helping them identify each other's entities (like variables and classes) for
77+
seamless integration.
78+
79+
This interoperability can be achieved by libraries like [CppInterOp], which
80+
expose APIs from compilers like Clang in a backward-compatible manner. By
81+
enabling interactive C++ usage through the Compiler-As-A-Service, CppInterOp
82+
simplifies complex tasks such as "language interoperability on the fly".
83+
84+
The practical implications of language interoperability include the growing
85+
need for systems in data science to be able to interoperate with C++
86+
codebases. By providing automatic creation of bindings on demand, tools
87+
like CppInterOp enable Python to interoperate with C++ code dynamically,
88+
instantiate templates, and execute them efficiently. This dynamic approach not
89+
only improves performance but also simplifies code development and debugging
90+
processes, offering a more efficient alternative to static binding methods.
91+
92+
93+
[Automatic Differentiation ↗]: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2072r0.pdf
94+
95+
[Interactive C++]: https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/
96+
97+
[integrated with Jupyter Notebooks]: https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92
98+
99+
[CppInterOp]: https://github.com/compiler-research/CppInterOp/blob/main/README.md
100+
101+
[Clad plugin for the Clang]: https://compiler-research.org/clad/
102+
103+
[Language Interoperability ↗]: https://cppinterop.readthedocs.io/en/latest/index.html
104+
105+
[Cling]: https://rawgit.com/root-project/cling/master/www/index.html
106+
107+
[Clang-REPL]: https://clang.llvm.org/docs/ClangRepl.html
108+
109+
[Compiler-As-A-Service ↗]: https://compiler-research.org/caas/
110+
111+
[Incremental C++ ↗]: https://compiler-research.org/interactive_cpp

0 commit comments

Comments
 (0)