JuliaLang/julia — pull request #5462 by stevengj (2014-01-21 15:57:21+00:00)
Title: Normalize all unicode identifiers to NFC, warn if undefined symbol != NFKC normalization

This addresses issue #5434. As per the apparent consensus in that issue, all identifiers are [normalized](http://unicode.org/reports/tr15/) to NFC, which canonicalizes composite characters but does *not* canonicalize easily-confused characters ("compatibility equivalents") such as µ (micro) and μ (mu).

However, when the interpreter throws an "identifier is not defined" exception, it checks whether the identifier differs from its NFKC normalization, and if so it warns that the identifier may contain easily confusable unicode characters.

This patch adds the [utf8proc library](http://www.public-software-group.org/utf8proc) to `deps` and to `libjulia`. This is a small (< 600 lines) MIT-licensed C library that implements various unicode normalizations. As a separate pull request, we should probably add functions to `Base` to expose some of this functionality within Julia (e.g. for normalization, Unicode-aware case-folding, diacritical-stripping, etcetera).