What is it for, GMP external library used by JULIA?

JULIA has some dependencies. Regarding this,

  • What is it for, GMP external library used by JULIA?

  • If it is not a necessary part of JULIA, how can I make JULIA avoid using it? Because it has GPL2+ license and I assume that it does not allow proprietary software.

Thanks.

It is a multiple-precision arithmetic library: https://gmplib.org/

GMP is currently required, however, the version used by Julia (>6) is dual-licensed under GPL v2 and LGPL v3 (from link above):

Since version 6, GMP is distributed under the dual licenses, GNU LGPL v3 and GNU GPL v2. These licenses make the library free to use, share, and improve, and allow you to pass on the result. The GNU licenses give freedoms, but also set firm restrictions on the use with non-free programs.

According to the Free Software Foundation’s interpretation of LGPL, this means that you can use it in a proprietary program as long as users can re-link their own modified version (and you redistribute any GMP-specific source changes you make, if any). The simplest way to allow this is to use dynamic linking, as Julia already does with GMP by default. See:

https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDynamic

(as always, if this could materially impact your business: seek competent counsel)

4 Likes

Thank you very much.

1 Like

I am confused with dual licensing. What part of it is under GPLv2 and is it an impediment in that case? I read the GMP site but could not find any clarification.

The whole library is available under either license.

See:
https://gmplib.org/repo/gmp/file/tip/README#l5

especially l12: “or”

(and for reference, again, Julia is using it under LGPLv3)


Many libraries use dual-licensing (Qt perhaps the most well-known). For some background see wikipedia. For more specific clarification, you probably need to contact the mailing list of the library.

Note that GMP is already used in certain proprietary software, so this is unlikely to be a problem.

2 Likes

Thank you very much all. This clarifies the issue.