LWJGL3 JME doesn't return from app.start() but LWJGL2 did

When moving from LWJGL 2 to LWJGL 3 I have noticed that the execution now doesn’t return from the SimpleApplication#start method call (until JME quits). This is mildly irritating for me (as I have a test framework that starts up a JME application then simulates playing a game) but I can work around it if necessary but I wanted to find out if this change was deliberate or not.

Test Application:
public class LWJGLTest extends SimpleApplication {

    public static void main(String[] args){
        LWJGLTest app = new LWJGLTest();
        app.start();

        System.out.println("returned from main");
    }

    @Override
    public void simpleInitApp() {
        flyCam.setEnabled(false);
    }
}

If the dependencies contains lwjgl3 then “returned from main” doesn’t print until you quit JME

compile "org.jmonkeyengine:jme3-lwjgl3:3.2.4-stable"

If the dependencies contains lwjgl then “returned from main” is printed immediately after start up

compile "org.jmonkeyengine:jme3-lwjgl:3.2.4-stable"

I can see an argument for the lwjgl3 behaviour, so if its deliberate I’ll work around it

It isn’t intended, but is the behavior of LWJGL3. I found out the hard way, too.

There is an issue open on gitlab: GLFW Main Thread Issues · Issue #1248 · jMonkeyEngine/jmonkeyengine · GitHub
And a PR with the fix: Fix waitFor not being implemented in lwjgl3 by tlf30 · Pull Request #1048 · jMonkeyEngine/jmonkeyengine · GitHub

There is disagreement on the fix, but I wrote it and use it without any issues in my applications.
Basically due to osx support the thread is never forked, and thus the start function never returns.
osx requires opengl context be on the main thread. But this is not a requirement for linux and windows, but it is not advised via the glfw documentation to use other threads.