Tengo esta línea en mi archivo composer.json:
"require": {
    ...
    "friendsofsymfony/user-bundle": "~2.0@dev",
    ...
},
¿Qué hace la tilde ~en   ~2.0@devdecir exactamente? Es que un marcador de posición y siempre será buscar a los subversiones como 1.2.0, 2.2.0, 3.2.0y así sucesivamente? No tiene sentido (y lo haría el *comodín).
La documentación de composer.json no dice nada sobre la tilde.
Lo pregunto porque acabo de leer sobre un problema de seguridad en el blog de Symfony y recomiendan actualizar a la versión 1.3.3. Pero averiguar la versión de FOSUserBundle no es tan fácil (no pude encontrar un archivo que contenga la versión).
fuente

~2.2significa 2.2 y cualquier 2.x donde x es 2 o superior.~2.1.3en el es también cualquier 2.1.x donde x es 3 o superior.~2.0diferencia de2.*? ¿Solo es útil si el último dígito no es 0?TildeEl operador es útil para los proyectos que versionan sus bibliotecas usando elsemantic versioningesquema.Semantic versioninges más una pauta que evalúa elnext significant release.Para Composer, este operador significa permitir versiones menores (que pueden incluir parches) sin permitir una versión principal (que puede no ser compatible con versiones anteriores) durante la instalación y actualización .
Por ejemplo:
~4.1permitirá versiones del proyecto>=4.1pero<5.0.Créditos: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php
fuente
La tilde
~en~2.0@devexactamente significa subir para la versión inmediata:Por ejemplo :
Si lo tenemos
~2.0@dev, pasa a la próxima versión inmediata.=> ~2.x@devfuente