-
Notifications
You must be signed in to change notification settings - Fork 31
PoC - Use Foreign Function & Memory API for GTK3 OS Support #1230
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
This is obviously just a prototype, as WindowBuilder can't yet require Java 24. It just serves as an example on how to get rid of the binary file. |
Test Results 2 720 files ±0 2 720 suites ±0 11h 19m 2s ⏱️ + 33m 22s For more details on these errors, see this check. Results for commit 3f1689b. ± Comparison against base commit 061cb1c. ♻️ This comment has been updated with latest results. |
|
SimRel allows an LTS 6-9 months after its initial release, meaning 2026-06. Let's see how the platform responds, given that they're probably also interested in modernizing their native calls. |
|
Alternatively to raising the BREE, I might also consider converting this to a multi-release jar. If Java >= 25, the FFM API is used, otherwise the binary. |
0b8b740 to
b7f21a1
Compare
291d6fe to
ba1dbea
Compare
|
I'll probably stick with a multi-release approach where FFMA is only used when running Java 24 and onward. This prototype is fully functional but still needs some more testing and documentation. I'll plan on merging it for the next release cycle. |
9e20eac to
e5f1869
Compare
Yes, the Platform is very interested in this topic as well, but there is a problem with support across all the supported platform: |
Thankfully due to the multi-release jars, the BREE can stay at Java 21 for the time being. Which is why I plan to already finish this up for the next release. That said, I'm not even sure whether WindowBuilder would work on all platforms... On Linux, there was only ever a x86/64 binary. The same was true for Windows, until I added a (still untested) aarch64 dll. And the state of the MacOS binaries is unknown to me. |
fa8044e to
fb79fc6
Compare
This converts the GTK-specific "org.eclipse.wb.os.linux" plugin into a multi-release jar, to take advantage of the foreign function and memory API, while still remaining compatible with older Java versions. Rather than calling the native methods via our shared library, the invocations are delegated to the Java linker. If any exception is thrown in native code, this then leads to a `Throwable` being thrown, rather than a crash of the entire IDE.
No description provided.