HNHacker News
TopNewBestAskShowJobs

fniephaus

2,175 karma · joined May 19, 2014

Researcher on the GraalVM team at Oracle Labs. Developer tools, programming languages, virtual machines. Previously at HPI, Google, and Maton Guitars.

[ https://fniephaus.com ]

[ https://twitter.com/fniephaus ]

[ my public key: https://keybase.io/fniephaus; my proof: https://keybase.io/fniephaus/sigs/2dy-DvixjWd3ZV-Bd7WhIw57HYYen9GSztnMeoXTmXY ]

submissionscomments
fniephaus··on Java Hello World, LLVM Edition
BTW: We (the GraalVM team) maintain a full-blown LLVM bitcode runtime that can be embedded in Spring or any other JVM application and compiled to native: https://github.com/oracle/graal/tree/master/sulong
fniephaus··on Detaching GraalVM from the Java Ecosystem Train
Hi @edburns,

As Thomas mentioned, we continue our mission to run programs faster and more efficiently. So yes, the GraalVM Docker images are still maintained and now include images with the new GraalVM 25 release.

-- Fabio

fniephaus··on What's new in Graal Languages 24.2
Fabio from the GraalVM team here.

I hope it isn't used in production yet because we still consider the use of native extensions experimental in GraalPy. However, we definitely see a need for this and will push it forward. If anyone wants to give this a try, please feel free to reach out to us.

In the meantime, you may want to take a look at this: https://blogs.oracle.com/ateam/post/want-to-use-llm-python-f...

fniephaus··on GraalVM for JDK24
Fabio from the GraalVM team here.

You may want to take a look at this: https://blogs.oracle.com/ateam/post/want-to-use-llm-python-f...

fniephaus··on GraalPy – A high-performance embeddable Python 3 runtime for Java
Thanks for the question, nurettin.

Although GraalPy can create standalone applications [1], you don't have to turn your hello world script into a self-contained binary. You can, of course, create a JAR that depends on GraalPy, or a fat JAR that contains it, and deploy it just like any other Java application.

We are still updating our docs to mention more details on this and publish some guides, apologies for the delay.

[1] https://www.graalvm.org/latest/reference-manual/python/stand...

fniephaus··on GraalPy – A high-performance embeddable Python 3 runtime for Java
For anyone interested, here's the PyPI repository with additional binary wheels for GraalPy: https://www.graalvm.org/python/wheels/

We also want to make it easy for Python package maintainers to test and build wheels for GraalPy. It's already available via setup-python, and we are adding GraalPy support to cibuildwheel. If you need any help, please reach out to us!

fniephaus··on GraalPy – A high-performance embeddable Python 3 runtime for Java
OP here.

More details about this particular release are in the blog post at https://medium.com/graalvm/whats-new-in-graal-languages-24-1...

Happy to answer any additional questions!

fniephaus··on macOS Sonoma 14.4 might break Java on your machine
Correct:

> ... the JVM can intercept the resulting SIGSEGV ("Signal: Segmentation Fault"), look at the return address for that signal, and figure out where that access was made in the generated code. Once it figures that bit out, it can then know where to dispatch the control to handle this case — in most cases, throwing NullPointerException or branching somewhere.

https://shipilev.net/jvm/anatomy-quarks/25-implicit-null-che...

fniephaus··on A New GraalVM Release and New Free License
The GFTC [1] is a new license for GraalVM modelled on Oracle JDK's successful NFTC [2] license which was launched in 2021.

[1] https://www.oracle.com/downloads/licenses/graal-free-license... [2] https://www.oracle.com/downloads/licenses/no-fee-license.htm...

fniephaus··on GraalVM 22.3: JDK 19 builds, jlink support, new monitoring features, and more
Also, reflection is supported in AOT mode. The analysis, however, does require reachability metadata in some cases. In the best case, libraries provide and maintain appropriate configuration for this. Reachability metadata can also be shared via https://github.com/oracle/graalvm-reachability-metadata.
fniephaus··on JDK 19 Release Notes
GraalVM JDK19 dev builds are available at https://github.com/graalvm/graalvm-ce-dev-builds/releases/la....
fniephaus··on S6: A standalone JIT compiler library for CPython
We are working on a Python runtime as well: https://github.com/oracle/graalpython
fniephaus··on Native Minecraft servers with GraalVM Native Image
Apparently, someone has managed to compile the Minecraft client to native: https://medium.com/@kb1000/what-youve-done-with-the-server-i...
fniephaus··on Native Minecraft servers with GraalVM Native Image
The students used both, the community and enterprise editions of GraalVM. Indeed, G1 is an enterprise feature: https://www.graalvm.org/22.2/reference-manual/native-image/o...
fniephaus··on Native Minecraft servers with GraalVM Native Image
It fails for some reason when reading user data from disk. The error also goes away if you nuke the user data but that's less convenient.
fniephaus··on Native Minecraft servers with GraalVM Native Image
Just look at the 22.2 release notes [1]:

> Updated the OpenJDK release on which GraalVM Community Edition is built ...

and

> Updated the Oracle JDK release on which GraalVM Enterprise Edition is built ...

[1] https://www.graalvm.org/release-notes/22_2/

fniephaus··on Native Minecraft servers with GraalVM Native Image
JIT compilation requires additional CPU and memory resources at run-time, which AOT compilation can avoid. This also means that for a native executable, the compilation work only needs to be done once at build-time and not per process.
fniephaus··on Native Minecraft servers with GraalVM Native Image
Thanks for the info! Seems like it's worth trying to compile the Java client with GraalVM Native Image then, given that this exists: https://github.com/chirontt/lwjgl3-helloworld-native
fniephaus··on Native Minecraft servers with GraalVM Native Image
Disclaimer: I work on the GraalVM team.

The students "measured noticeable reductions in terms of memory footprint of up to 43%" [1] in some preliminary experiments. More from the accompanying blog post:

"We also hope that the Minecraft community builds on our work and helps benchmark different configurations for native Minecraft servers in more detail and in larger settings."

Please feel free to share any numbers on CPU/memory usage with us!

[1] https://medium.com/graalvm/native-minecraft-servers-with-gra...

fniephaus··on Native Minecraft servers with GraalVM Native Image
I don't think the student looked into that at all, but I guess it depends on what the Java client uses for drawing. GraalVM Native Image currently doesn't support AWT on Linux/JDK17+, but we are working on fixing that soon.
fniephaus··on GraalVM 22.1: Developer experience improvements, Apple Silicon builds, and more
Do you have any feedback on how we could improve the docs? If so, please let us know.

I believe the easiest way to start a new Truffle language implementation is to fork SimpleLanguage [1] and turn it into your language. Did you try to do that?

[1] https://github.com/graalvm/simplelanguage

fniephaus··on Java on Truffle – Going Fully Metacircular
I agree! Our work on TruffleSqueak [1] and on Polyglot Live Programming [2] has shown that it's possible to build language-agnostic live programming tools with GraalVM. If Espresso implements the required Truffle APIs correctly, our tools should also just work for Java. :)

[1] https://github.com/hpi-swa/trufflesqueak/ [2] https://github.com/hpi-swa/polyglot-live-programming

fniephaus··on Java on Truffle – Going Fully Metacircular
Espresso's README.md contains some interesting details, for example:

> ... it already passes >99.99% of the Java Compatibility Kit ...

> Running HelloWorld on three nested layers of Espresso takes ~15 minutes.

Link: https://github.com/oracle/graal/tree/6dd83cd94763b8736b42063...

fniephaus··on The Smalltalk Zoo
Previous discussion: https://news.ycombinator.com/item?id=25461760
fniephaus··on Trusted Contacts won’t be supported after December 1
I played around with "Find My" last night... similar to Location Sharing, it seems to allow me to look at the location of all devices connected with my account as long as they are online. But that's not necessarily what I want. Before I can access someone else's location, I want to inform them that I'd like to know where they are and give them a couple of minutes to respond. That's the key missing feature here...or am I the one missing something?
fniephaus··on Trusted Contacts won’t be supported after December 1
First paragraph of the corresponding email announcement:

> Over three years ago, we launched the Trusted Contacts app as a way to help people stay up to date with their loved ones’ whereabouts. Since then, we’ve built this functionality directly into Google Maps with Location Sharing - making it even easier to share your live location with trusted friends and family.

Correct me if I'm wrong, but location sharing doesn't seem to provide the same functionality. It's an always on feature for sharing your location with others, not a "request someone's location" feature and if that person doesn't respond in 15min, enable location sharing for some time.

The obvious question is: what's a good/trustworthy alternative?

fniephaus··on How the CPython VM works
Oracle Labs is actively working on a Python for GraalVM: https://github.com/graalvm/graalpython/
fniephaus··on TruffleSqueak: Polyglot Programming with Squeak/Smalltalk and GraalVM
> Is there an overview somewhere which allows comparison with fig. 4 of your ACM 2019 publication?

We have set up a benchmarking infrastructure for performance tracking, but it is unfortunately not public (yet). Also, we have switched from GraalVM EE/JDK8 to GraalVM CE/JDK11 a couple of months ago, which makes it hard to compare recent with older results. But what I can say it that performance on GraalVM CE/JDK11 is currently better than on GraalVM EE/JDK8 a year ago. I expect it to be faster on EE as well, but I'd need to measure by how much.

> Anyway in that publication SOMns using the same technology - as far as I understand - showed a completely different performance pattern; does this still apply, and what is/was the reason for this?

Correct. First, SOMns does not support a real Smalltalk system and does not support some crucial mechanisms (e.g. changing the class of an object). So TruffleSqueak must check the class of an object in quite some cases, which is a slight, unavoidable overhead. More importantly, SOMns has some primitives that Squeak does not, for example for comparing strings. That's for example another reason why SOMns is so much faster in the JSON benchmark. For your curiosity, here's a screenshot of the benchmark results for a current TruffleSqueak and SOMns (note that they ran on different versions of GraalVM, I think you can somewhat compare the TruffleSqueak numbers to "GraalSqueak-CE" in fig. 4 of the paper):

https://user-images.githubusercontent.com/2368856/90402527-d...

fniephaus··on TruffleSqueak: Polyglot Programming with Squeak/Smalltalk and GraalVM
s/derived/deviated/
fniephaus··on TruffleSqueak: Polyglot Programming with Squeak/Smalltalk and GraalVM
Thanks for the feedback! We have plans to create a tutorial soon and run it virtually during SPLASH/ECOOP'20 [1] (I have to check why the tutorial page is no longer public).

[1] https://web.archive.org/web/20200319123703/https://2020.ecoo...

Page 1 of 3Next →