1. the tool must exist on every platform your project will ever be ported to
2. the same version of that tool must exist on every such platform
3. if the hosted compiler changes, the tool must be updated in sync with that compiler - out of sync means your project won't build
4. if there are blocker bugs in the tool, you're not in a good position to fix it. You're stuck with developing workarounds.
5. Everyone building your project has to get the tool successfully installed.
The current build of D's runtime library has a dependency on libcurl. Supposedly, since libcurl is ubiquitous, that shouldn't be any problem. But it has been an ongoing sore relentlessly sucking up multiple peoples' time, of the issues I outlined above.