comparison CHANGELOG.md @ 21994:7f5cf6b167f1

Changelog: make it Truffle-only and prepare for 0.8
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Thu, 16 Jul 2015 14:07:11 +0200
parents 1e9242c9735e
children 05ea2117f650
comparison
equal deleted inserted replaced
21993:b435dd765ad6 21994:7f5cf6b167f1
1 # GraalVM Changelog 1 # Truffle Changelog
2 2
3 This changelog summarizes major changes between Graal versions relevant to languages implementors building upon the Truffle framework and developers building technology on top of Graal. The main focus is on APIs exported by Graal and Truffle. 3 This changelog summarizes major changes between Truffle versions relevant to languages implementors building upon the Truffle framework. The main focus is on APIs exported by Truffle.
4 4
5 5
6 ## `tip` 6 ## `tip`
7 ### Graal 7 ### Truffle
8 * Add experimental support constructing low-level IR in SSA form.
9 * Add experimental support for SSA linear scan register allocation.
10 ... 8 ...
11 9
10 ## Version 0.8
11 17-Jul-2015, [Repository Revision](http://lafo.ssw.uni-linz.ac.at/hg/truffle/shortlog/graal-0.8)
12 ### Truffle 12 ### Truffle
13 * The Truffle repository no longer contains Graal
14 * Truffle TCK...
15 * Truffle Debug...
13 ... 16 ...
14 17
15 ## Version 0.7 18 ## Version 0.7
16 29-Apr-2015, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.7) 19 29-Apr-2015, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.7)
17 ### Graal
18 * By default the Graal code is now only compiled by C1 which should improve application start-up.
19 * Merged with jdk8u40-b25.
20 * The Graal class loader now loads all lib/graal/graal*.jar jars.
21 * Fast Graal services (see com.oracle.graal.api.runtime.Service) are now looked up using service files in lib/graal/services.
22 * Add utilities ModifiersProvider#isConcrete, ResolvedJavaMethod#hasBytecodes, ResolvedJavaMethod#hasReceiver to Graal API.
23 * Add `GraalDirectives` API, containing methods to influence compiler behavior for unittests and microbenchmarks.
24 * Introduce `LIRSuites`, an extensible configuration for the low-level compiler pipeline.
25
26 ### Truffle 20 ### Truffle
27 * New, faster partial evaluation (no more TruffleCache). 21 * New, faster partial evaluation (no more TruffleCache).
28 * If a method is annotated with @ExplodeLoop and contains a loop that can not be exploded, partial evaluation will fail. 22 * If a method is annotated with @ExplodeLoop and contains a loop that can not be exploded, partial evaluation will fail.
29 * Truffle background compilation is now multi-threaded. 23 * Truffle background compilation is now multi-threaded.
30 * Experimental merge=true flag for @ExplodeLoop allows building bytecode-based interpreters (see BytecodeInterpreterPartialEvaluationTest). 24 * Experimental merge=true flag for @ExplodeLoop allows building bytecode-based interpreters (see BytecodeInterpreterPartialEvaluationTest).
58 * Changed nodes that declare all execute methods with the same number of evaluated arguments as specialization arguments do not require @NodeChild annotations anymore. 52 * Changed nodes that declare all execute methods with the same number of evaluated arguments as specialization arguments do not require @NodeChild annotations anymore.
59 * Changed types used in checks and casts are not mandatory to be declared in the type system. 53 * Changed types used in checks and casts are not mandatory to be declared in the type system.
60 54
61 ## Version 0.6 55 ## Version 0.6
62 19-Dec-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.6) 56 19-Dec-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.6)
63 ### Graal
64 * Merged with jdk8u25-b17.
65 * Added `com.oracle.graal.api.meta.Remote` interface for future support of remote and replay compilation.
66 * Changed name suite specification from `mx/projects.py` to `mx/suite.py`.
67 * Changed semantics (and signature) of `ResolvedJavaType#resolveMethod()` (old behavior available via `resolveConcreteMethod()`).
68 * Moved `ResolvedJavaField#read[Constant]Value` and `getMethodHandleAccess()` to `ConstantReflectionProvider`.
69
70 ### Truffle 57 ### Truffle
71 * Instrumentation: add Instrumentable API for language implementors, with most details automated (see package `com.oracle.truffle.api.instrument`). 58 * Instrumentation: add Instrumentable API for language implementors, with most details automated (see package `com.oracle.truffle.api.instrument`).
72 * The BranchProfile constructor is now private. Use BranchProfile#create() instead. 59 * The BranchProfile constructor is now private. Use BranchProfile#create() instead.
73 * Renamed @CompilerDirectives.SlowPath to @CompilerDirectives.TruffleBoundary 60 * Renamed @CompilerDirectives.SlowPath to @CompilerDirectives.TruffleBoundary
74 * Renamed RootNode#isSplittable to RootNode#isCloningAllowed 61 * Renamed RootNode#isSplittable to RootNode#isCloningAllowed
86 * Added `CompilerOptions` and allowed it to be set for `ExecutionContext` and `RootNode`. 73 * Added `CompilerOptions` and allowed it to be set for `ExecutionContext` and `RootNode`.
87 * Added experimental object API (see new project `com.oracle.truffle.api.object`). 74 * Added experimental object API (see new project `com.oracle.truffle.api.object`).
88 75
89 ## Version 0.5 76 ## Version 0.5
90 23-Sep-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.5) 77 23-Sep-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.5)
91 ### Graal
92 * New register allocator optimization: `-G:+ConstantLoadOptimization`.
93 * SPARC backend is able to run benchmark and passing most of the JTTs.
94 * Fix: Stamp: interface types can not be trusted except after explicit runtime checks.
95 * Changed format of suite specification from a properties file (`mx/projects`) to a Python file (`mx/projects.py`).
96
97
98 ### Truffle 78 ### Truffle
99 * Added `TruffleRuntime#getCallTargets()` to get all call targets that were created and are still referenced. 79 * Added `TruffleRuntime#getCallTargets()` to get all call targets that were created and are still referenced.
100 * Added `NeverValidAssumption` to complement `AlwaysValidAssumption`. 80 * Added `NeverValidAssumption` to complement `AlwaysValidAssumption`.
101 * Fixed a bug in `AssumedValue` that may not invalidate correctly. 81 * Fixed a bug in `AssumedValue` that may not invalidate correctly.
102 * New option, `-G:+/-TruffleCompilationExceptionsAreThrown`, that will throw an `OptimizationFailedException` for compiler errors. 82 * New option, `-G:+/-TruffleCompilationExceptionsAreThrown`, that will throw an `OptimizationFailedException` for compiler errors.
103 83
104 ## Version 0.4 84 ## Version 0.4
105 19-Aug-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.4) 85 19-Aug-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.4)
106 ### Graal
107 * Made initialization of Graal runtime lazy in hosted mode.
108 * Added supported for new `jrelibrary` dependency type in `mx/projects`.
109 * Java projects with compliance level higher than the JDKs specified by `JAVA_HOME` and `EXTRA_JAVA_HOMES` are ignored once `mx/projects` has been processed.
110 * `ResolvedJavaType.resolveMethod` now takes a context type used to perform access checks. It now works correctly regarding default methods.
111 * Removed Java based compilation queue (`CompilationQueue.java`).
112 * Enabled use of separate class loader (via `-XX:+UseGraalClassLoader`) for classes loaded from `graal.jar` to hide them from application classes.
113
114 ### Truffle 86 ### Truffle
115 * Change API for stack walking to a visitor: `TruffleRuntime#iterateFrames` replaces `TruffleRuntime#getStackTrace` 87 * Change API for stack walking to a visitor: `TruffleRuntime#iterateFrames` replaces `TruffleRuntime#getStackTrace`
116 * New flag `-G:+TraceTruffleCompilationCallTree` to print the tree of inlined calls before compilation. 88 * New flag `-G:+TraceTruffleCompilationCallTree` to print the tree of inlined calls before compilation.
117 * `truffle.jar`: strip out build-time only dependency into a seperated JAR file (`truffle-dsl-processor.jar`) 89 * `truffle.jar`: strip out build-time only dependency into a seperated JAR file (`truffle-dsl-processor.jar`)
118 * New flag `-G:+TraceTruffleCompilationAST` to print the AST before compilation. 90 * New flag `-G:+TraceTruffleCompilationAST` to print the AST before compilation.
126 * Added `isVisited` method for `BranchProfile`. 98 * Added `isVisited` method for `BranchProfile`.
127 * Added new `ConditionProfile`, `BinaryConditionProfile` and `CountingConditionProfile` utility classes to profile if conditions. 99 * Added new `ConditionProfile`, `BinaryConditionProfile` and `CountingConditionProfile` utility classes to profile if conditions.
128 100
129 ## Version 0.3 101 ## Version 0.3
130 9-May-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.3) 102 9-May-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.3)
131
132 ### Graal
133 * Explicit support for oop compression/uncompression in high level graph.
134 * LIRGenerator refactoring.
135 * Explicit types for inputs (InputType enum).
136 * Added graal.version system property to Graal enabled VM builds.
137 * Transitioned to JDK 8 as minimum JDK level for Graal.
138 * Added support for stack introspection.
139 * New MatchRule facility to convert multiple HIR nodes into specialized LIR
140
141 ### Truffle 103 ### Truffle
142 * The method `CallTarget#call` takes now a variable number of Object arguments. 104 * The method `CallTarget#call` takes now a variable number of Object arguments.
143 * Support for collecting stack traces and for accessing the current frame in slow paths (see `TruffleRuntime#getStackTrace`). 105 * Support for collecting stack traces and for accessing the current frame in slow paths (see `TruffleRuntime#getStackTrace`).
144 * Renamed `CallNode` to `DirectCallNode`. 106 * Renamed `CallNode` to `DirectCallNode`.
145 * Renamed `TruffleRuntime#createCallNode` to `TruffleRuntime#createDirectCallNode`. 107 * Renamed `TruffleRuntime#createCallNode` to `TruffleRuntime#createDirectCallNode`.
148 * `DirectCallNode#inline` was renamed to `DirectCallNode#forceInlining()`. 110 * `DirectCallNode#inline` was renamed to `DirectCallNode#forceInlining()`.
149 * Removed deprecated `Node#adoptChild`. 111 * Removed deprecated `Node#adoptChild`.
150 112
151 ## Version 0.2 113 ## Version 0.2
152 25-Mar-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.2) 114 25-Mar-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.2)
153
154 ### Graal
155 * Use HotSpot stubs for certain array copy operations.
156 * New methods for querying memory usage of individual objects and object graphs in Graal API (`MetaAccessProvider#getMemorySize`, `MetaUtil#getMemorySizeRecursive`).
157 * Added tiered configuration (C1 + Graal).
158 * Initial security model for Graal [GRAAL-22](https://bugs.openjdk.java.net/browse/GRAAL-22).
159 * New (tested) invariant that equality comparisons for `JavaType`/`JavaMethod`/`JavaField` values use `.equals()` instead of `==`.
160 * Made graph caching compilation-local.
161 * Added AllocSpy tool for analyzing allocation in Graal using the [Java Allocation Instrumenter](https://code.google.com/p/java-allocation-instrumenter/).
162 * Initial support for memory arithmetic operations on x86.
163 * Expanded Debug logging/dumping API to avoid allocation when this Debug facilities are not enabled.
164
165 ### Truffle 115 ### Truffle
166 * New API `TruffleRuntime#createCallNode` to create call nodes and to give the runtime system control over its implementation. 116 * New API `TruffleRuntime#createCallNode` to create call nodes and to give the runtime system control over its implementation.
167 * New API `RootNode#getCachedCallNodes` to get a weak set of `CallNode`s that have registered to call the `RootNode`. 117 * New API `RootNode#getCachedCallNodes` to get a weak set of `CallNode`s that have registered to call the `RootNode`.
168 * New API to split the AST of a call-site context sensitively. `CallNode#split`, `CallNode#isSplittable`, `CallNode#getSplitCallTarget`, `CallNode#getCurrentCallTarget`, `RootNode#isSplittable`, `RootNode#split`. 118 * New API to split the AST of a call-site context sensitively. `CallNode#split`, `CallNode#isSplittable`, `CallNode#getSplitCallTarget`, `CallNode#getCurrentCallTarget`, `RootNode#isSplittable`, `RootNode#split`.
169 * New API to inline a call-site into the call-graph. `CallNode#isInlinable`, `CallNode#inline`, `CallNode#isInlined`. 119 * New API to inline a call-site into the call-graph. `CallNode#isInlinable`, `CallNode#inline`, `CallNode#isInlined`.
179 * Made `Node#replace` thread-safe 129 * Made `Node#replace` thread-safe
180 130
181 131
182 ## Version 0.1 132 ## Version 0.1
183 5-Feb-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.1) 133 5-Feb-2014, [Repository Revision](http://hg.openjdk.java.net/graal/graal/shortlog/graal-0.1)
184
185 ### Graal
186
187 * Initial version of a dynamic Java compiler written in Java.
188 * Support for multiple co-existing GPU backends ([GRAAL-1](https://bugs.openjdk.java.net/browse/GRAAL-1)).
189 * Fixed a compiler bug when running RuneScape ([GRAAL-7](https://bugs.openjdk.java.net/browse/GRAAL-7)).
190 * Bug fixes ([GRAAL-4](https://bugs.openjdk.java.net/browse/GRAAL-4), [GRAAL-5](https://bugs.openjdk.java.net/browse/GRAAL-5)).
191
192 ### Truffle 134 ### Truffle
193
194 * Initial version of a multi-language framework on top of Graal. 135 * Initial version of a multi-language framework on top of Graal.
195 * Update of the [Truffle Inlining API](http://mail.openjdk.java.net/pipermail/graal-dev/2014-January/001516.html). 136 * Update of the [Truffle Inlining API](http://mail.openjdk.java.net/pipermail/graal-dev/2014-January/001516.html).