Skip to content

Commit e4f0ef3

Browse files
[GR-54293] Allow multiple espresso runtime resources to coexist.
PullRequest: graal/17788
2 parents 99920bd + 8eae7a2 commit e4f0ef3

File tree

13 files changed

+451
-168
lines changed

13 files changed

+451
-168
lines changed

espresso/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Espresso Changelog
22

3+
## Version 24.1.0
4+
* Added `java.RuntimeResourceId` to allow customizing the truffle resource used to locate the java standard library used by espresso.
5+
The resource called "espresso-runtime-<RuntimeResourceId>" will be used. By default, "jdk21" then "openjdk21" are attempted.
6+
* Espresso can now use TRegex to execute java.util.regex patterns. TRegex offers better performance than the standard implementation. Use `java.UseTRegex` to enable this engine.
7+
* The interop `readBuffer` method can now be used from the guest Interop API and guest ByteBuffer objects implement this interop message.
8+
* Many issues with espresso's JDWP implementation were fixed, improving the user experience when debugging with a Java IDE.
9+
310
## Version 24.0.0
411
### User-visible changes
512
* Added support for transparently converting common JDK exception types that flow from host to an embedded Espresso context.

espresso/ci/ci_common/common.jsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ local benchmark_suites = ['dacapo', 'renaissance', 'scala-dacapo'];
8888
dailyBench: {targets+: ['bench', 'daily'], notify_groups:: ['espresso']},
8989
daily: {targets+: ['daily'], notify_groups:: ['espresso']},
9090
weekly: {targets+: ['weekly'], notify_groups:: ['espresso']},
91-
monthly: {targets+: ['monthly'], notify_groups:: ['espresso']},
91+
monthly: {targets+: ['monthly'], notify_groups:: ['espresso']},
9292
weeklyBench: {targets+: ['bench', 'weekly'], notify_groups:: ['espresso']},
9393
onDemand: {targets+: ['on-demand']},
9494
onDemandBench: {targets+: ['bench', 'on-demand']},
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
3+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
*
5+
* This code is free software; you can redistribute it and/or modify it
6+
* under the terms of the GNU General Public License version 2 only, as
7+
* published by the Free Software Foundation.
8+
*
9+
* This code is distributed in the hope that it will be useful, but WITHOUT
10+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12+
* version 2 for more details (a copy is included in the LICENSE file that
13+
* accompanied this code).
14+
*
15+
* You should have received a copy of the GNU General Public License version
16+
* 2 along with this work; if not, write to the Free Software Foundation,
17+
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18+
*
19+
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20+
* or visit www.oracle.com if you need additional information or have any
21+
* questions.
22+
*/
23+
package <package>;
24+
25+
import com.oracle.truffle.api.CompilerDirectives;
26+
import com.oracle.truffle.api.InternalResource;
27+
28+
import java.io.IOException;
29+
import java.nio.file.Path;
30+
31+
@InternalResource.Id(value = "<resourceId>", componentId = "java", optional = true)
32+
public final class EspressoRuntimeResource implements InternalResource {
33+
34+
private static Path basePath(Env env) {
35+
return Path.of("META-INF", "resources", "java", "<resourceId>", env.getOS().toString(), env.getCPUArchitecture().toString());
36+
}
37+
38+
@Override
39+
public void unpackFiles(Env env, Path targetDirectory) throws IOException {
40+
Path base = basePath(env);
41+
env.unpackResourceFiles(base.resolve("files"), targetDirectory, base);
42+
}
43+
44+
@Override
45+
public String versionHash(Env env) {
46+
try {
47+
Path hashResource = basePath(env).resolve("sha256");
48+
return env.readResourceLines(hashResource).get(0);
49+
} catch (IOException ioe) {
50+
throw CompilerDirectives.shouldNotReachHere(ioe);
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)