archives

« Bugzilla Issues Index

#2648 — Instantiate double normalization


Currently all module names for dynamic modules would be normalized twice. This is unnecessary and could lead to unwanted side effects.

This happens in the following way:

1. The instantiate hook takes unnormalized dependencies for its "deps" argument.
2. In the execute function of the instantiate hook, we then need access to the normalized dependency names in order to do dependency lookups from a side table.
3. We thus have to know the normalized dependency names in execution, and so we end up normalizing the dependencies anyway before returning the instantiation result.

Initially I thought it would be possible simply to return the normalized dependencies as arguments into the "execute" function, but unfortunately this does not solve the problem.

The reason for this is that when dealing with circular references in a side table, we need to be able to run the factory functions of sub-dependencies. In order to do this we need to know the normalized dependency names of sub-dependencies, which could would happen before the execute call of a given sub-dependency.

The easiest solution here that I can see is simply to let the instantiate result take fully-normalized dependencies. There may be alternatives as well.


concerns old module spec.