From d4c8b5d2e851b0e8a063c6bf8543a4823a26c15a Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Fri, 9 Dec 2011 18:27:22 +0000 Subject: Vendor import of llvm 3.0 final release: http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_30/final@145349 --- docs/ReleaseNotes.html | 426 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 336 insertions(+), 90 deletions(-) (limited to 'docs/ReleaseNotes.html') diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index b0d4f67e9836..56d0eb914839 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -189,13 +189,7 @@ Release Notes.
-

LLDB is a brand new member of the LLVM - umbrella of projects. LLDB is a next generation, high-performance - debugger. It is built as a set of reusable components which highly leverage - existing libraries in the larger LLVM Project, such as the Clang expression - parser, the LLVM disassembler and the LLVM JIT.

- -

LLDB is has advanced by leaps and bounds in the 3.0 timeframe. It is +

LLDB has advanced by leaps and bounds in the 3.0 timeframe. It is dramatically more stable and useful, and includes both a new tutorial and a side-by-side comparison with @@ -210,13 +204,6 @@ Release Notes.

-

libc++ is another new member of the - LLVM family. It is an implementation of the C++ standard library, written - from the ground up to specifically target the forthcoming C++'0X standard and - focus on delivering great performance.

- -

In the LLVM 3.0 timeframe,

-

Like compiler_rt, libc++ is now dual licensed under the MIT and UIUC license, allowing it to be used more permissively.

@@ -290,21 +277,255 @@ be used to verify some algorithms. projects that have already been updated to work with LLVM 3.0.

-

Crack Programming Language

+

AddressSanitizer

+ +
+ +

AddressSanitizer + uses compiler instrumentation and a specialized malloc library to find C/C++ + bugs such as use-after-free and out-of-bound accesses to heap, stack, and + globals. The key feature of the tool is speed: the average slowdown + introduced by AddressSanitizer is less than 2x.

+ +
+ + +

ClamAV

+ +
+ +

Clam AntiVirus is an open source (GPL) + anti-virus toolkit for UNIX, designed especially for e-mail scanning on mail + gateways.

+ +

Since version 0.96 it + has bytecode + signatures that allow writing detections for complex malware.

+ +

It uses LLVM's JIT to speed up the execution of bytecode on X86, X86-64, + PPC32/64, falling back to its own interpreter otherwise. The git version was + updated to work with LLVM 3.0.

+ +
+ + +

clReflect

-

Crack aims to provide - the ease of development of a scripting language with the performance of a - compiled language. The language derives concepts from C++, Java and Python, - incorporating object-oriented programming, operator overloading and strong - typing.

+

clReflect is a C++ + parser that uses clang/LLVM to derive a light-weight reflection database + suitable for use in game development. It comes with a very simple runtime + library for loading and querying the database, requiring no external + dependencies (including CRT), and an additional utility library for object + management and serialisation.

+ + +

Cling C++ Interpreter

+ +
+ +

Cling is an interactive compiler interface + (aka C++ interpreter). It uses LLVM's JIT and clang; it currently supports + C++ and C. It has a prompt interface, runs source files, calls into shared + libraries, prints the value of expressions, even does runtime lookup of + identifiers (dynamic scopes). And it just behaves like one would expect from + an interpreter.

+ +
+ + + + + +

Glasgow Haskell Compiler (GHC)

+
+ +

GHC is an open source, state-of-the-art programming suite for Haskell, a + standard lazy functional programming language. It includes an optimizing + static compiler generating good code for a variety of platforms, together + with an interactive system for convenient, quick development.

+ +

GHC 7.0 and onwards include an LLVM code generator, supporting LLVM 2.8 and + later. Since LLVM 2.9, GHC now includes experimental support for the ARM + platform with LLVM 3.0.

+ +
+ + +

gwXscript

+ +
+ +

gwXscript is an object oriented, + aspect oriented programming language which can create both executables (ELF, + EXE) and shared libraries (DLL, SO, DYNLIB). The compiler is implemented in + its own language and translates scripts into LLVM-IR which can be optimized + and translated into native code by the LLVM framework. Source code in + gwScript contains definitions that expand the namespaces. So you can build + your project and simply 'plug out' features by removing a file. The remaining + project does not leave scars since you directly separate concerns by the + 'template' feature of gwX. It is also possible to add new features to a + project by just adding files and without editing the original project. This + language is used for example to create games or content management systems + that should be extendable.

+ +

gwXscript is strongly typed and offers comfort with its native types string, + hash and array. You can easily write new libraries in gwXscript or native + code. gwXscript is type safe and users should not be able to crash your + program or execute malicious code except code that is eating CPU time.

+ +
+ + +

include-what-you-use

+ +
+ +

include-what-you-use + is a tool to ensure that a file directly #includes + all .h files that provide a symbol that the file uses. It also + removes superfluous #includes from source files.

+ +
+ + +

LanguageKit and Pragmatic Smalltalk

+ +
+ +

LanguageKit is + a framework for implementing dynamic languages sharing an object model with + Objective-C. It provides static and JIT compilation using LLVM along with + its own interpreter. Pragmatic Smalltalk is a dialect of Smalltalk, built on + top of LanguageKit, that interfaces directly with Objective-C, sharing the + same object representation and message sending behaviour. These projects are + developed as part of the Étoié desktop environment.

+ +
+ + +

LuaAV

+ +
+ +

LuaAV is a real-time + audiovisual scripting environment based around the Lua language and a + collection of libraries for sound, graphics, and other media protocols. LuaAV + uses LLVM and Clang to JIT compile efficient user-defined audio synthesis + routines specified in a declarative syntax.

+ +
+ + +

Mono

+ +
+ +

An open source, cross-platform implementation of C# and the CLR that is + binary compatible with Microsoft.NET. Has an optional, dynamically-loaded + LLVM code generation backend in Mini, the JIT compiler.

+ +

Note that we use a Git mirror of LLVM with some patches. See: + https://github.com/mono/llvm

+ +
+ -

TTA-based Codesign Environment (TCE)

+

Portable OpenCL (pocl)

+ +
+ +

Portable OpenCL is an open source implementation of the OpenCL standard which + can be easily adapted for new targets. One of the goals of the project is + improving performance portability of OpenCL programs, avoiding the need for + target-dependent manual optimizations. A "native" target is included, which + allows running OpenCL kernels on the host (CPU).

+ +
+ + +

Pure

+
+

Pure is an + algebraic/functional programming language based on term rewriting. Programs + are collections of equations which are used to evaluate expressions in a + symbolic fashion. The interpreter uses LLVM as a backend to JIT-compile Pure + programs to fast native code. Pure offers dynamic typing, eager and lazy + evaluation, lexical closures, a hygienic macro system (also based on term + rewriting), built-in list and matrix support (including list and matrix + comprehensions) and an easy-to-use interface to C and other programming + languages (including the ability to load LLVM bitcode modules, and inline C, + C++, Fortran and Faust code in Pure programs if the corresponding LLVM-enabled + compilers are installed).

+ +

Pure version 0.48 has been tested and is known to work with LLVM 3.0 + (and continues to work with older LLVM releases >= 2.5).

+ +
+ + +

Renderscript

+ +
+ +

Renderscript + is Android's advanced 3D graphics rendering and compute API. It provides a + portable C99-based language with extensions to facilitate common use cases + for enhancing graphics and thread level parallelism. The Renderscript + compiler frontend is based on Clang/LLVM. It emits a portable bitcode format + for the actual compiled script code, as well as reflects a Java interface for + developers to control the execution of the compiled bitcode. Executable + machine code is then generated from this bitcode by an LLVM backend on the + device. Renderscript is thus able to provide a mechanism by which Android + developers can improve performance of their applications while retaining + portability.

+ +
+ + +

SAFECode

+ +
+ +

SAFECode is a memory safe C/C++ + compiler built using LLVM. It takes standard, unannotated C/C++ code, + analyzes the code to ensure that memory accesses and array indexing + operations are safe, and instruments the code with run-time checks when + safety cannot be proven statically. SAFECode can be used as a debugging aid + (like Valgrind) to find and repair memory safety bugs. It can also be used + to protect code from security attacks at run-time.

+ +
+ + +

The Stupid D Compiler (SDC)

+ +
+ +

The Stupid D Compiler is a + project seeking to write a self-hosting compiler for the D programming + language without using the frontend of the reference compiler (DMD).

+ +
+ + +

TTA-based Co-design Environment (TCE)

+

TCE is a toolset for designing application-specific processors (ASP) based on @@ -322,120 +543,140 @@ be used to verify some algorithms.

-

PinaVM

- +

Tart Programming Language

+
-

PinaVM is an open - source, SystemC front-end. Unlike many - other front-ends, PinaVM actually executes the elaboration of the program - analyzed using LLVM's JIT infrastructure. It later enriches the bitcode with - SystemC-specific information.

+

Tart is a general-purpose, + strongly typed programming language designed for application + developers. Strongly inspired by Python and C#, Tart focuses on practical + solutions for the professional software developer, while avoiding the clutter + and boilerplate of legacy languages like Java and C++. Although Tart is still + in development, the current implementation supports many features expected of + a modern programming language, such as garbage collection, powerful + bidirectional type inference, a greatly simplified syntax for template + metaprogramming, closures and function literals, reflection, operator + overloading, explicit mutability and immutability, and much more. Tart is + flexible enough to accommodate a broad range of programming styles and + philosophies, while maintaining a strong commitment to simplicity, minimalism + and elegance in design.

-

Pure

- +

ThreadSanitizer

+
-

Pure is an - algebraic/functional programming language based on term rewriting. Programs - are collections of equations which are used to evaluate expressions in a - symbolic fashion. The interpreter uses LLVM as a backend to JIT-compile Pure - programs to fast native code. Pure offers dynamic typing, eager and lazy - evaluation, lexical closures, a hygienic macro system (also based on term - rewriting), built-in list and matrix support (including list and matrix - comprehensions) and an easy-to-use interface to C and other programming - languages (including the ability to load LLVM bitcode modules, and inline C, - C++, Fortran and Faust code in Pure programs if the corresponding - LLVM-enabled compilers are installed).

- -

Pure version 0.47 has been tested and is known to work with LLVM 3.0 (and - continues to work with older LLVM releases >= 2.5).

+

ThreadSanitizer is a + data race detector for (mostly) C and C++ code, available for Linux, Mac OS + and Windows. On different systems, we use binary instrumentation frameworks + (Valgrind and Pin) as frontends that generate the program events for the race + detection algorithm. On Linux, there's an option of using LLVM-based + compile-time instrumentation.

-

IcedTea Java Virtual Machine Implementation

+

The ZooLib C++ Cross-Platform Application Framework

-

IcedTea provides a - harness to build OpenJDK using only free software build tools and to provide - replacements for the not-yet free parts of OpenJDK. One of the extensions - that IcedTea provides is a new JIT compiler - named Shark - which uses LLVM to provide native code generation without introducing - processor-dependent code.

+

ZooLib is Open Source under the MIT + License. It provides GUI, filesystem access, TCP networking, thread-safe + memory management, threading and locking for Mac OS X, Classic Mac OS, + Microsoft Windows, POSIX operating systems with X11, BeOS, Haiku, Apple's iOS + and Research in Motion's BlackBerry.

-

OpenJDK 7 b112, IcedTea6 1.9 and IcedTea7 1.13 and later have been tested and - are known to work with LLVM 3.0 (and continue to work with older LLVM - releases >= 2.6 as well).

+

My current work is to use CLang's static analyzer to improve ZooLib's code + quality. I also plan to set up LLVM compiles of the demo programs and test + programs using CLang and LLVM on all the platforms that CLang, LLVM and + ZooLib all support.

-

Glasgow Haskell Compiler (GHC)

+ -

GHC is an open source, state-of-the-art programming suite for Haskell, a - standard lazy functional programming language. It includes an optimizing - static compiler generating good code for a variety of platforms, together - with an interactive system for convenient, quick development.

-

In addition to the existing C and native code generators, GHC 7.0 now - supports an LLVM code generator. GHC supports LLVM 2.7 and later.

+ + + + +
@@ -698,6 +939,9 @@ Builder.CreateResume(UnwindData); Other Target Specific Improvements +

PPC32/ELF va_arg was implemented.

+

PPC32 initial support for .o file writing was implemented.

+
    @@ -730,6 +974,9 @@ Builder.CreateResume(UnwindData); "load volatile"/"store volatile". The old syntax ("volatile load"/"volatile store") is still accepted, but is now considered deprecated. +
  • The old atomic intrinscs (llvm.memory.barrier and + llvm.atomic.*) are now gone. Please use the new atomic + instructions, described in the atomics guide.

Windows (32-bit)

@@ -943,8 +1190,7 @@ Builder.CreateResume(UnwindData);
    -
  • The Linux PPC32/ABI support needs testing for the interpreter and static - compilation, and lacks support for debug information.
  • +
  • The PPC32/ELF support lacks PIC support.
@@ -1096,7 +1342,7 @@ Builder.CreateResume(UnwindData); src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"> LLVM Compiler Infrastructure
- Last modified: $Date: 2011-10-17 08:31:58 +0200 (Mon, 17 Oct 2011) $ + Last modified: $Date: 2011-11-01 05:51:35 +0100 (Tue, 01 Nov 2011) $ -- cgit v1.3