Fork me on GitHub
#quil
<
2023-10-08
>
jackrusher17:10:06

Okay, we’ve got our progress so far wrapped up in this snapshot on Clojars: https://clojars.org/quil/versions/4.3-SNAPSHOT … please give it a go!

👍 9
Charles Comstock17:10:15

{:deps {quil/quil {:mvn/version "4.3-SNAPSHOT"}}} for deps.edn or [quil/quil "4.3-SNAPSHOT"] for leiningen.

💯 1
Dave17:10:39

Sphere demo 29 Working for me on M1 Mac! I needed to use the following deps:

quil/quil {:mvn/version "4.3-SNAPSHOT"}
         org.jogamp.gluegen/gluegen-rt {:mvn/version "2.5.0"}
         org.jogamp.gluegen/gluegen-rt$natives-macosx-universal {:mvn/version "2.5.0"}
         org.jogamp.jogl/jogl-all {:mvn/version "2.5.0"}
         org.jogamp.jogl/jogl-all$natives-macosx-universal {:mvn/version "2.5.0"}
         org.jogamp.jogl/jogl {:mvn/version "2.5.0"}
         org.jogamp.jogl/jogl$natives-macosx-universal {:mvn/version "2.5.0"}

Charles Comstock17:10:01

Out of curiosity, did you try it without including any of the gluegen/jogl deps? I think we made a fat jar that should contain all of those for linux-amd64, linux-aarch, osx-universal, and windows-amd64 architectures, so in theory it should work with just the quil dependency?

Dave17:10:15

I did, but got the following error:

Execution error (UnsatisfiedLinkError) at jdk.internal.loader.NativeLibraries/load (NativeLibraries.java:-2).
/private/var/folders/mz/61pcbsd96sd7fgr9dsv6p9ww0000gn/T/jogamp_0000/file_cache/jln9762767276556281998/jln14632258606622597378/natives/macosx-universal/libgluegen-rt.jnilib: dlopen(/private/var/folders/mz/61pcbsd96sd7fgr9dsv6p9ww0000gn/T/jogamp_0000/file_cache/jln9762767276556281998/jln14632258606622597378/natives/macosx-universal/libgluegen-rt.jnilib, 0x0001): tried: '/private/var/folders/mz/61pcbsd96sd7fgr9dsv6p9ww0000gn/T/jogamp_0000/file_cache/jln9762767276556281998/jln14632258606622597378/natives/macosx-universal/libgluegen-rt.jnilib' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/private/var/folders/mz/61pcbsd96sd7fgr9dsv6p9ww0000gn/T/jogamp_0000/file_cache/jln9762767276556281998/jln14632258606622597378/natives/macosx-universal/libgluegen-rt.jnilib' (no such file), '/private/var/folders/mz/61pcbsd96sd7fgr9dsv6p9ww0000gn/T/jogamp_0000/file_cache/jln9762767276556281998/jln14632258606622597378/natives/macosx-universal/libgluegen-rt

Charles Comstock17:10:57

Huh, ok, that's very useful feedback, thank you.

Dave17:10:16

I am using Temurin JDK version 20 if that makes a difference.

Charles Comstock17:10:53

Not sure if it makes a difference, but that's definitely useful information, thanks!

Dave17:10:05

Just tested with OpenJDK 18 and experienced the same error.

Charles Comstock17:10:22

I've been testing on linux using JDK 17, not certain which version Jack was using for testing on OSX

Dave17:10:52

My mistake, Open JDK 18 gives me this error:

2023-10-08 13:57:14.084 java[34952:2164936] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!'
*** First throw call stack:
(
	0   CoreFoundation                      0x00007ff81a500bc2 __exceptionPreprocess + 242
	1   libobjc.A.dylib                     0x00007ff81a02875c objc_exception_throw + 48
	2   CoreFoundation                      0x00007ff81a528c72 -[NSException raise] + 9
	3   AppKit                              0x00007ff81d4aae7e -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 307
	4   AppKit                              0x00007ff81d497394 -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1227
	5   AppKit                              0x00007ff81d496ec2 -[NSWindow initWithContentRect:styleMask:backing:defer:] + 42
	6   libnativewindow_macosx.jnilib       0x000000010e3053fe Java_jogamp_nativewindow_macosx_OSXUtil_CreateNSWindow0 + 398
	7   ???                                 0x0000000118562365 0x0 + 4703265637
)
libc++abi: terminating due to uncaught exception of type NSException

Dave17:10:29

OpenJDK 18 works when I manually add the JOGL deps back in.

Charles Comstock18:10:05

Well, good though, that's useful feedback, we will see if we can release another snapshot resolving that, but still it's progress. I'm also hoping I can expand the new test suite to cover more architectures, for the first pass we were mostly focusing on CLJS/CLJ target differences, but this suggests architecture tests for CLJ is also quite important.

Charles Comstock18:10:46

Oh one more quick test if you have the time, the versions we baked into the jar are all "2.4.0-rc-20230201", which I think we picked due to it's relation to release cycle for Processing, but Jack could correct me there. I see you are using 2.5.0, which we may want to push forward to, but any chance you could try testing with the manual additions but using 2.4.0-rc release versions? Trying to ascertain if it's an issue for certain architectures with the upstream releases or if it's a problem with how we bundled them into the jar.

Dave18:10:51

Both OpenJDK 18 and Temurin JDK 20 work with the gen-art-29 with the following deps manually added:

org.jogamp.gluegen/gluegen-rt {:mvn/version "2.4.0-rc-20230201"}
org.jogamp.gluegen/gluegen-rt$natives-macosx-universal {:mvn/version "2.4.0-rc-20230201"}
org.jogamp.jogl/jogl-all {:mvn/version "2.4.0-rc-20230201"}
org.jogamp.jogl/jogl-all$natives-macosx-universal {:mvn/version "2.4.0-rc-20230201"}
org.jogamp.jogl/jogl {:mvn/version "2.4.0-rc-20230201"}
org.jogamp.jogl/jogl$natives-macosx-universal {:mvn/version "2.4.0-rc-20230201"}

Charles Comstock18:10:01

It sounds like we may still have some problems with how we are bundling the fat jar. That's really helpful, thank you.

jackrusher18:10:49

thanks! works here without the extra deps :thinking_face:

Dave18:10:08

I posted my issue on Github for more visibility and at the suggestion of @UMGAMGWF8 https://github.com/quil/quil/issues/387

💯 1
👍 1
Fredrik Meyer19:10:30

Tested some of my sketches on 4.3-SNAPSHOT on a 2017 Macbook Pro, Java 20.0.1, Clojure 1.11.1. Works without problems. (appearantly did not work for Java 8 - I used Java 8 until today because Quil < 4 did not support it)

🙌 1