387 karma · joined January 27, 2016
Alternatively you could use a compatibility version of OpenGL, like 3.3 which will run on any desktop OS, then use a windowing lib like glfw and UI framework like Dear ImGui which is graphics API agnostic. I use this particular combination all the time and it never lets me down. Sokol is another options which is a very thin layer over many graphics APIs.
Only thing I'd wish for is better control of memory layout for mutable structs, but I know that's unlikely since that's one thing that the Julia folks want to keep abstracted from the user.
Also worth pointing out that, like all current gen PPLs, the word “Universal” is highly misleading, as only variables that are the result of a sample statement can be observed (since HMC, IS, and others require closed form conditional likelihood’s for observed variables). This rules out use cases such as observing noiseless aggregates of noisy signals (any workaround is a fudge and will put strain on the inference algorithms capacity for search).
Only a PPL with support for likelihood free inference techniques (few of which work very well as of today) could be considered truly “Universal”.
Since Go is easier to learn, it probably couldn't hurt to learn it, then turn to Rust if it's not powerful enough for your use case.
Working with async-await syntax was the last straw that made me finally go "there's got to be a better way" and find a language can handle concurrency without the semantic overhead (in my case Go, but there are others).