I think some parts of it are not GPL, outside the compiler. When I installed their combo distro on Windows, it said nothing about GPL, but presented a free-to-use kind of license.
Or maybe they’ve relicensed it as GPL but forgot to update the script that packages their Windows build. Not sure.
Strange thing is that it doesn’t put the license text file somewhere on the disk after installation. So to double-check, I’m going to have to uninstall and reinstall again.
The installer also has the dubious merit of shipping zero documentation. It’s all on-line.
Hmmm… that would be a shame because, after reading and playing it a bit, I really like it. I saw the eula in the code and thought the same as you, but the code readme of Kronos states:
“All the source code in this repository is licensed under GPL3. This includes the runtime library, and by proxy, automatically imposes GPL3 on any of your custom software that uses the supplied library. Please contact the repository owner if you are interested in a different licensing model.”
I don’t know the specifics but would be fun to test out neck to neck actually. I know that recently some optimizations were made to the SuperCollider architecture file to make memory allocation a bit more realtime safe (but still not fully unfortunately).
That said, Faust is brilliant and I recommend everyone interested in a domain specific DSP language that can compile to any platform basically (including microcontrollers) to check it out.
Have you or anyone else had hands-on experiences with JSFX performance? How does it compare to Faust or C++ UGens of SC? Being from a commercial project, there’s not much written about it, although I see that there was a port of ATK to JSFX by someone who is active on this forum @joslloand so maybe they can comment
By the way, the CSound version of JSFX is a re-implementation, Cockos hasn’t open-sourced their JSFX.
As you’d imagine, there are significant challenges in keeping the two implementations aligned! In the ideal world, I’d love to have a unified render code base that could just be shared across target implementations. (I think I’m dreaming…)
@scztt There are good code-generation libraries that come close to hand-crafted SIMD optimization. xsimd seems reasonable to me, and Eve seems like an advanced experiment.
However, does the SC server UGens not use a code-generation library (Nova Simd)? I’m curious about the difference you mentioned.
I think it’s not just compiler work; I found this, for instance, from year ago:
I just skimmed through the paper, but what I got is that they do some manual loop unrolling in the code generation, hoping for GCC to autovectorize. Note that this article is from 2003, so I assume it does not reflect the current state Maybe @Stephane_Letz can tell us more.
However, does the SC server UGens not use a code-generation library (Nova Simd)? I’m curious about the difference you mentioned.
xsimd, eve, nova-simd are all SIMD libraries. This is not code-generation.
The compilers do not do those things; the libraries generate code for architecture and parameters using the intrinsic SIMD types. Since the compiler doesn’t do the work, are they macros, or do they at least generate an intermediate code?
I suggest you guys have a look at @madskjeldgaard FaustGen, that I forked and improved a bit recently here. Basically libfaust + LLVM JIT working in SC.
Concerning SIMD, the way we currently do in Faust is to have this -vec option help generate the code more adapted to clang/LLVM auto-vectorisation model. Read Using the Compiler - Faust Documentation. This -vec option can be used in C/C++ and LLVM IR backends.