¿Por qué el operador de versiones semánticas de Gemfile (~>) produce resultados inconsistentes con un número?

El operador de versiones semánticas de gemspec ~> (también conocido comotwiddle-wakka, tambien conocido comopesimista operador) permite restringir una versión de gema pero permite algunas actualizaciones.

A menudo he visto que se puede leer como:

 "~> 3.1"   => "Any version 3.x, but at least 3.1"
 "~> 3.1.1" => "Any version 3.1.x, but at least 3.1.1"

Pero con un número, esta regla se rompe:

 "~> 3"     => "Any version x, but at least 3"   *NOT TRUE!*
 "~> 3"     => "Any version 3.x"                 *True. But why?*

Si quisiera "Cualquier versión 3.x", podría usar "~> 3.0", que es consistente. Tal como está, este cambio de operación en un número es inconsistente e indocumentado.

Además, si quisiera decir "Cualquier versión superior o igual a 3" (por lo tanto, 3.x, 4.x, etc.) me siento tentado a usar el operador "> =", que nos dicenes malvado.

¿Hay alguna razón para este comportamiento?

EDITAR:

Le doy esto a David por encontrar el archivo culpable en rubygems. Hay una "característica" que amplía silenciosamente "3" a "3.0" (Línea 148 en version.rb: "las versiones de un solo dígito se extienden automáticamente con un cero para dar un resultado razonable")

Debo decir que no estoy de acuerdo con que el resultado sea razonable, ya que rompe la secuencia esperada y evita poder decir "Cualquier versión x, pero al menos 3" con ese operador. Por lo tanto, nos vemos obligados a> = which guides.rubygems.orgnos advierte que no usemos. De todas formas. Quizás esta publicación sirva como la documentación que había estado buscando ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta