-
Notifications
You must be signed in to change notification settings - Fork 52
/
index.html
executable file
·261 lines (222 loc) · 11.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<!--#include virtual="header.incl" -->
<table border="0" cellpadding="0" cellspacing="0" width="95%">
<!-- Start of the left bar... -->
<tr>
<td valign="top" style="width:64%">
<div class="www_sectiontitle">LLVM Overview</div>
<div class="www_text">
<p>The LLVM Project is a collection of modular and reusable compiler and
toolchain technologies. Despite its name, LLVM has little to do with
traditional virtual machines. The name
"LLVM" itself is not an acronym; it is the full name of the project.</p>
<p>LLVM began as a <a href="pubs/2004-01-30-CGO-LLVM.html">research
project</a> at
the <a href="https://cs.illinois.edu/">University of Illinois</a>, with
the goal of providing a modern, SSA-based compilation strategy capable
of supporting both static and dynamic compilation of arbitrary
programming languages. Since then, LLVM has
grown to be an umbrella project consisting of a number of
subprojects, many of which are being used in production by a wide variety of
<a href="Users.html">commercial and open source</a> projects
as well as being widely used in <a href="pubs/">academic research</a>. Code
in the LLVM project is licensed under the
<a href="docs/DeveloperPolicy.html#new-llvm-project-license-framework">
"Apache 2.0 License with LLVM exceptions"</a>
</p>
<p>The primary sub-projects of LLVM are:</p>
<ol>
<li><p>The <b>LLVM Core</b> libraries provide a modern source- and
target-independent <a href="docs/Passes.html">optimizer</a>, along with
<a href="docs/CodeGenerator.html">code generation support</a> for many
popular CPUs (as well as some less common ones!) These libraries are built
around a <a href="docs/LangRef.html">well specified</a> code representation
known as the LLVM intermediate representation ("LLVM IR"). The LLVM Core
libraries are <a href="docs/">well documented</a>, and it is particularly
easy to invent your own language (or port an existing compiler) to use
<a href="docs/tutorial/">LLVM as an optimizer and code generator</a>.</p>
</li>
<li><p><b><a href="https://clang.llvm.org">Clang</a></b> is an "LLVM native"
C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles,
extremely useful <a href="https://clang.llvm.org/diagnostics.html">error
and warning messages</a> and to provide a platform for building great
source level tools.
The <a href="https://clang-analyzer.llvm.org/">Clang Static Analyzer</a> and
<a href="https://clang.llvm.org/extra/clang-tidy/">clang-tidy</a> are
tools that automatically find bugs in your code, and are great examples of the
sort of tools that can be built using the Clang frontend as a library to
parse C/C++ code.</p></li>
<li><p>The <b><a href="https://lldb.llvm.org">LLDB</a></b> project builds on
libraries provided by LLVM and Clang to provide a great native debugger.
It uses the Clang ASTs and expression parser, LLVM JIT, LLVM disassembler,
etc so that it provides an experience that "just works". It is also
blazing fast and much more memory efficient than GDB at loading symbols.
</p></li>
<li><p>The <b><a href="https://libcxx.llvm.org">libc++</a></b> and
<b><a href="https://libcxxabi.llvm.org">libc++ ABI</a></b> projects provide
a standard conformant and high-performance implementation of the C++
Standard Library, including full support for C++11 and C++14.</p></li>
<li><p>The <b><a href="https://libc.llvm.org">libc</a></b> project provides a
high-performance, standards-conformant implementation of the C Standard
Library, fully integrated with LLVM. It delivers optimized performance and
comprehensive support for modern C standards, ensuring a reliable and
efficient foundation for C applications.</p></li>
<li><p>The <b><a href="https://compiler-rt.llvm.org">compiler-rt</a></b> project
provides highly tuned implementations of the low-level code generator
support routines like "<tt>__fixunsdfdi</tt>" and other calls generated when
a target doesn't have a short sequence of native instructions to implement
a core IR operation. It also provides implementations of run-time libraries
for dynamic testing tools such as
<a href="https://clang.llvm.org/docs/AddressSanitizer.html">AddressSanitizer</a>,
<a href="https://clang.llvm.org/docs/ThreadSanitizer.html">ThreadSanitizer</a>,
<a href="https://clang.llvm.org/docs/MemorySanitizer.html">MemorySanitizer</a>,
and
<a href="https://clang.llvm.org/docs/DataFlowSanitizer.html">DataFlowSanitizer</a>.
</p></li>
<li><p>The <b><a href="https://mlir.llvm.org">MLIR</a></b> subproject is a novel
approach to building reusable and extensible compiler infrastructure. MLIR
aims to address software fragmentation, improve compilation for heterogeneous
hardware, significantly reduce the cost of building domain specific compilers,
and aid in connecting existing compilers together.
</p></li>
<li><p>The <b><a href="https://openmp.llvm.org">OpenMP</a></b> subproject
provides an <a href="https://openmp.org">OpenMP</a> runtime for use with the
OpenMP implementation in Clang.</p></li>
<li><p>The <b><a href="https://polly.llvm.org/">polly</a></b> project implements
a suite of cache-locality optimizations as well as auto-parallelism and
vectorization using a polyhedral model.</p></li>
<li><p>The <b><a href="https://libclc.llvm.org/">libclc</a></b> project aims to
implement the OpenCL standard library.</p></li>
<li><p>The <b><a href="https://klee.llvm.org">klee</a></b> project implements a
"symbolic virtual machine" which uses a theorem prover to try to evaluate
all dynamic paths through a program in an effort to find bugs and to prove
properties of functions. A major feature of klee is that it can produce a
testcase in the event that it detects a bug.</p></li>
<li><p>The <b><a href="https://lld.llvm.org/">LLD</a></b> project is a new
linker. That is a drop-in replacement for system linkers
and runs much faster.</p></li>
<li><p>The <b>
<a href="https://github.com/llvm/llvm-project/tree/main/bolt">BOLT</a></b>
project is a post-link optimizer. It achieves the improvements by optimizing
application's code layout based on execution profile gathered by sampling
profiler.</p></li>
</ol>
<p>In addition to official subprojects of LLVM, there are a broad variety of
other projects that <a href="/ProjectsWithLLVM/">use components
of LLVM for various tasks</a>. Through these external projects you can use
LLVM to compile Ruby, Python, Haskell, Rust, D, PHP, Pure, Lua, Julia, and a number of
other languages. A major strength of LLVM is its versatility, flexibility, and
reusability, which is why it is being used for such a wide variety of different
tasks: everything from doing light-weight JIT compiles of embedded languages
like Lua to compiling Fortran code for massive super computers.</p>
<p>As much as everything else, LLVM has a broad and friendly community of people
who are interested in building great low-level tools. If you are interested in
<a href="https://llvm.org/docs/GettingInvolved.html">getting involved</a>, a
good first place is to skim the <a
href="https://blog.llvm.org">LLVM Blog</a> and join <a href="https://discourse.llvm.org">LLVM Discourse</a>. For information on how to send in a patch, get commit access, and
copyright and license topics, please see <a href="docs/DeveloperPolicy.html">the
LLVM Developer Policy</a>.
</p>
</div>
</td>
<!-- Dividing space between columns -->
<td style="width:2%"></td>
<!-- Start of the right bar... 359 -->
<td valign="top" style="width:35%">
<div class="www_sectiontitle">Latest LLVM Release!</div>
<div class="www_text">
<p><b>17 Dec 2024</b>: LLVM 19.1.6 is now <a href="releases/"><b>available
for download</b></a>! LLVM is publicly available under an open source <a
href="releases/19.1.0/LICENSE.TXT">License</a>. Also, you might want to
check out <a href="docs/ReleaseNotes.html#whatsnew"><b>the new
features</b></a> in Git that will appear in the next LLVM release. If
you want them early, <a href="releases/">download LLVM</a> through
anonymous Git.</p>
</div>
<div class="www_sectiontitle">Upcoming Events</div>
<p>
<a href="/devmtg/2024-10/">October 22-24</a> - 2024 LLVM Dev Mtg<br>
</p>
</div>
<div class="www_sectiontitle">ACM Software System Award!</div>
<div class="www_text">
<p>LLVM has been awarded the <b>2012 ACM Software System Award</b>!
This award is given by ACM to <i>one</i> software system worldwide
every year.
<!--
and is "<i>Awarded to an institution or individual(s) recognized for
developing a software system that has had a lasting influence,
reflected in contributions to concepts, in commercial acceptance,
or both</i>".-->
LLVM is <a href="https://awards.acm.org/software-system/award-recipients">
in highly distinguished company</a>!
Click on any of the individual recipients' names on that page for
the detailed citation describing the award.
</p>
</div>
<div class="www_sectiontitle">Upcoming Releases</div>
<div class="www_text">
<p><b>LLVM Release Schedule:</b></p>
<ul>
<li> 19.1.x
<ul>
<li>Jul 23rd: release/19.x branch created</li>
<li>Jul 26th: 19.1.0-rc1 was released</li>
<li>Aug 6th: 19.1.0-rc2 was released</li>
<li>Aug 20th: 19.1.0-rc3 was released</li>
<li>Sep 3rd: 19.1.0-rc4 was released</li>
<li>Sep 17th: 19.1.0 was released</li>
<li>Oct 1st: 19.1.1 was released</li>
<li>Oct 15th: 19.1.2 was released</li>
<li>Oct 30th: 19.1.3 was released</li>
<li>Nov 19th: 19.1.4 was released</li>
<li>Dec 3rd: 19.1.5 was released</li>
<li>Dec 17th: 19.1.6 was released</li>
</ul>
</li>
</ul>
</div>
<div class="www_sectiontitle">Developer Meetings</div>
<div class="www_text">
<p>Upcoming:</p>
<ul>
<li><a href="/devmtg/2024-10/">October 22-24</a> - 2024 LLVM Dev Mtg</li>
</ul>
<p>Proceedings from past meetings:</p>
<ul>
<li><a href="/devmtg/2024-04/">April 10-11, 2024</a></li>
<li><a href="/devmtg/2023-10/">October 9-11, 2023</a></li>
<li><a href="/devmtg/2023-05/">May 10-11, 2023</a></li>
<li><a href="/devmtg/2022-11/">November 8-9, 2022</a></li>
<li><a href="/devmtg/2022-05/">May 10-11, 2022</a></li>
<li><a href="/devmtg/2021-11/">November 16-19, 2021</a></li>
<li><a href="/devmtg/2020-09/">October 6-8, 2020</a></li>
<li><a href="/devmtg/2019-10/">October 22-23, 2019</a></li>
<li><a href="/devmtg/2019-04/">April 8-9, 2019</a></li>
<li><a href="/devmtg/2018-10/">October 17-18, 2018</a></li>
<li><a href="/devmtg/2018-04/">April 16-17, 2018</a></li>
<li><a href="/devmtg/2017-10/">October 18-19, 2017</a></li>
<li><a href="/devmtg/2017-03/">March 27-28, 2017</a></li>
<li><a href="/devmtg/2016-11/">November 3-4, 2016</a></li>
<li><a href="/devmtg/2016-03/">March 17-18, 2016</a></li>
<li><a href="/devmtg/2015-10/">October 29-30, 2015</a></li>
<li><a href="/devmtg/2015-04/">April 13-14, 2015</a></li>
<li><a href="/devmtg/2014-10/">October 28-29, 2014</a></li>
<li><a href="/devmtg/2014-04/">April 7-8, 2014</a></li>
<li><a href="/devmtg/2013-11/">Nov 6-7, 2013</a></li>
<li><a href="/devmtg/2013-04/">April 29-30, 2013</a></li>
<li><a href="/devmtg/2012-11/">November 7-8, 2012</a></li>
<li><a href="/devmtg/2012-04-12/">April 12, 2012</a></li>
<li><a href="/devmtg/2011-11/">November 18, 2011</a></li>
<li><a href="/devmtg/2011-09-16/">September 2011</a></li>
<li><a href="/devmtg/2010-11/">November 2010</a></li>
<li><a href="/devmtg/2009-10/">October 2009</a></li>
<li><a href="/devmtg/2008-08/">August 2008</a></li>
<li><a href="/devmtg/2007-05/">May 2007</a></li>
</ul>
</div>
<br>
<!-- End of the right column -->
</td>
</tr>
</table>
<!--#include virtual="footer.incl" -->