# Versionado semántico

> Una regla para versiones como 2.4.1: cada número dice qué tan riesgoso es actualizar.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/semantic-versioning/
- En inglés: [Semantic versioning](https://tidbit.legios.com.ar/semantic-versioning/)

El **versionado semántico**, o **SemVer**, es una convención para numerar las versiones de un software con tres números: `MAJOR.MINOR.PATCH`, por ejemplo `2.4.1`. Cada número tiene un significado preciso, así que cualquiera que use ese software puede saber qué tipo de cambio trae una versión nueva con solo mirar qué número subió. Las reglas están escritas en semver.org, publicadas primero por Tom Preston-Werner, uno de los fundadores de GitHub.

Un salto de **patch**, de `2.4.1` a `2.4.2`, significa solo arreglos de bugs: nada nuevo, nada que se saque. Un salto de **minor**, a `2.5.0`, suma funciones nuevas pero mantiene funcionando igual todo lo que andaba antes. Un salto de **major**, a `3.0.0`, avisa que hay **cambios incompatibles** (breaking changes): se sacó algo o se comporta distinto, y el código que usaba la versión vieja puede necesitar ajustes. Las versiones que empiezan con `0.`, como `0.7.3`, indican desarrollo temprano, donde puede cambiar cualquier cosa.

Importa porque el software de hoy se arma con cientos de librerías, y mantenerlas actualizadas a mano sería imposible. Gestores de paquetes como npm o pip leen estos números para actualizar con cuidado: una regla como `^2.4.1` quiere decir "aceptá cualquier versión 2.x desde 2.4.1 en adelante, pero no la 3.0". Funciona solo si los autores respetan las reglas, y en la práctica a veces una actualización minor rompe algo igual; por eso los proyectos también fijan versiones exactas y corren sus tests después de actualizar.

## Una analogía

Como los avisos de obra en un edificio. "Pintamos el pasillo" (patch), "sumamos un ascensor nuevo" (minor), "mudamos la entrada a la otra calle" (major): enseguida sabés cuáles te obligan a cambiar tu rutina.

## Para quedarse

- Tres números: MAJOR.MINOR.PATCH.
- Patch arregla bugs, minor suma funciones compatibles, major puede romper cosas.
- Las versiones por debajo de 1.0.0 no prometen estabilidad.
- Los gestores de paquetes se apoyan en esto para actualizar dependencias solos.

## Para seguir leyendo

- [Versionado Semántico 2.0.0 (especificación oficial)](https://semver.org/lang/es/)
- [Versión de software en Wikipedia](https://es.wikipedia.org/wiki/Versi%C3%B3n_de_software)

## Términos relacionados

- [GitHub](https://tidbit.legios.com.ar/es/github/): Un sitio donde los equipos guardan su código con Git y trabajan juntos en él.
- [Bug](https://tidbit.legios.com.ar/es/bug/): Un error en un software que hace que se comporte distinto de lo que se buscaba.
- [Biblioteca de software](https://tidbit.legios.com.ar/es/software-library/): Código ya hecho para una tarea común que se enchufa dentro de otros programas.
