The GMP functions use and return structs (specifically the mpz_t and mpf_t structures). It is difficult to pass strucs back and forth between julia and C (although some heroic partial efforts to that end have been made in strpack.jl in extras since that then) . Further, the GMP interface is resolved at compile time via pre-processing ... the actual exported functions in the binary are mangled and system dependent.
For these reasons, a C wrapper is used to interface between julia and GMP. The source for that is in deps/gmp_wrapper.c. It may be possible to do this via pure julia. However, at the time, it seemed like the path of least resistance.
Regards
-
Avik