Miscellaneous

Global variables and precompilation

Due to limitations of the precompilation of modules in julia, global variables referring to certain Nemo types require special attention when used inside modules. As a simple example, the following code for a module called A will not work as expected:

module A

using Nemo
Qx, x = QQ["x"]
f(n) = x^n
end

When running julia and loading the module via using/import A, calling f will lead to segmentation faults. The preferred workaround is to put the definitions of the global variables into the __init__() function of the module as follows:

module A

using Nemo

function __init__()
  global (Qx, x) = QQ["x"]
end

f(n) = x^n
end

Alternatively, one can disable precompilation by adding __precompile__(false) inside A. Note that this might have other unwanted side effects.