CobaltC es un lenguaje de programación de sistemas, estáticamente tipado, diseñado para ofrecer un equilibrio estricto entre control de bajo nivel y seguridad de memoria sin necesidad de recolección de basura por trazado. La especificación define conceptos como propiedad explícita, destrucción determinista, préstamos verificados por el compilador, lifetimes inferidos, nulabilidad explícita, operaciones seguras frente a desbordamientos, manejo estructurado de errores y concurrencia segura, además de bloques unsafe y una interfaz de funciones foráneas explícita para casos de bajo nivel.
El documento establece la terminología normativa (MUST, SHOULD, MAY), las reglas léxicas (texto fuente Unicode, identificadores sensibles a mayúsculas) y las palabras reservadas, entre las que no figura let. Define tipos primitivos (bool, char, i8–i128, u8–u128, isize, usize, f32, f64), tipos compuestos (structs, enums nominales, tuplas, arrays, funciones, referencias gestionadas T* y punteros crudos raw T*), así como un sistema de genéricos con restricciones por interfaz.
El modelo de propiedad distingue referencias gestionadas no nulas y anulables, mientras que los punteros crudos quedan fuera de las garantías de propiedad y requieren un contexto unsafe para su desreferencia. La mutabilidad no anula las reglas de aliasing: un propietario mutable no puede modificar un dato mientras exista un préstamo incompatible. La inferencia de tipos debe preservar distinciones de propiedad, nulabilidad, mutabilidad, préstamo y lifetime, y nunca debe disfrazar una operación insegura como segura.
La especificación aborda también declaraciones (const, static, type, fn), precedencia y asociatividad de operadores, aritmética segura, igualdad, asignación, llamadas a funciones y ejecución condicional con if/else. En conjunto, CobaltC se dirige a software que requiere gestión predecible de recursos, ejecución nativa y seguridad de memoria garantizada por el compilador.
