Soppo es un lenguaje de programación que adopta la sintaxis de Go y mantiene interoperabilidad total con sus bibliotecas, pero incorpora características de seguridad de tipos y ergonomía que Go no ofrece de forma nativa. Su objetivo es permitir a los desarrolladores introducir el lenguaje de forma gradual en proyectos Go ya existentes, sin renunciar al ecosistema ni a las herramientas habituales.
Entre sus principales novedades figuran las uniones etiquetadas con variantes de tipo struct y un sistema de emparejamiento de patrones (pattern matching) que obliga a tratar todos los casos en tiempo de compilación, evitando ramas omitidas. También incorpora el operador ?, que propaga errores de forma concisa sin necesidad de bloques repetitivos if err != nil, aunque permite añadir manejo personalizado cuando se requiere.
Otro eje es el seguimiento de nulabilidad en tiempo de compilación: los tipos marcados con ? deben comprobarse antes de desreferenciarlos, lo que elimina las excepciones por nil que son habituales en Go. Tras una comprobación de nil, el tipo se estrecha automáticamente. El compilador, además, produce mensajes de error con contexto del código, resaltado del problema y sugerencias de corrección, como muestra un ejemplo de coincidencia no exhaustiva que indica la variante omitida.
La instalación recomendada se realiza a través de SOPMOD, un gestor de versiones escrito en Rust que también administra la instalación de Go, ya que Soppo lo utiliza internamente para la compilación. Como alternativa, es posible instalar únicamente el binario sop mediante Cargo, lo que requiere tener Rust y Go en el sistema.
