Scmutils in Clojure
github.com
github.com
There was a bit discussion about this and, if I got it correct, Clojure project could be licensed under GPL only when there aren't EPL licensed dependencies.
Based upon the position of the Free Software Foundation, you may not combine EPL 1.0 and GPL code in any scenario where linking exists between code made available under those licenses. The above applies to both GPL version 2 and GPL version 3.
Since Clojure itself and its core library are EPL, this means you basically cannot write GPL code with Clojure.
"If I only make copies of a GPL-covered program and run them, without distributing or conveying them to others, what does the license require of me? (#NoDistributionRequirements)
Nothing. The GPL does not place any conditions on this activity."
The whole point of the GPL is to guarantee that the user can do anything they want with the software. The only limitations on GPL software are with respect to distribution.
It sounds to me like the FAQ is wrong, since it quotes the FSF's position as the foundation of its argument.
edit: apparently a twist is that GPL is considered a pure copyright license, and so covers only distribution, but the EPL is broader. It starts with "ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT". So apparently this makes it a kind of contract and not just a copyright licese.
Yeah, it definitely makes things harder...
I was playing with the Racket port[1] a while back. I am not sure how complete it is compared to this Clojure implementation.
Still, awesome effort - it looks like a ton of work.
This is quite easily solved by just declaring your parameters with type hints, and testing the code with the provided warnings about reflection and boxed math.
This still leaves container data structures, the native arrays and vectors are boxed. To address this, you can to use Java arrays or 3rd party specialized containers like data.int-map instead.