Почему uuids ограничены [89AB] в первом символе 4-й группы?
Регулярное выражение для проверки uuid v4 следующее:
/^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
Как видите, 4-я группа содержит[89AB][0-9A-F]{3}
вместо[0-9A-F]{4}
Вы знаете, почему это так? Есть ли какая-то историческая причина для такого выбора?
Вчера я обнаружил, что библиотека, которую я использую, не генерирует правильные uuid из-за случайного выбора 1-го символа 4-й группы, и мне интересно, почему существует такое ограничение, поскольку это делает реализации немного более сложными.