F* (pronunciado F estrella ) es un lenguaje de programación de alto nivel , multiparadigma , funcional y orientado a objetos, inspirado en los lenguajes ML , Caml y OCaml , y destinado a la verificación de programas . Es un proyecto conjunto de Microsoft Research y el Instituto Francés de Investigación en Ciencias de la Computación y Automatización (Inria). [ 1 ] Su sistema de tipos incluye tipos dependientes , efectos monádicos y tipos de refinamiento . Esto permite expresar especificaciones precisas para los programas, incluyendo la corrección funcional y las propiedades de seguridad. El verificador de tipos de F* tiene como objetivo demostrar que los programas cumplen con sus especificaciones utilizando una combinación de resolución de satisfacibilidad módulo teorías (SMT) y pruebas manuales . Para su ejecución, los programas escritos en F* se pueden traducir a OCaml , F# , C , WebAssembly (a través de la herramienta KaRaMeL) o lenguaje ensamblador (a través del conjunto de herramientas Vale). Las versiones anteriores de F* también se podían traducir a JavaScript .
Se introdujo en 2011 [ 3 ] [ 4 ] y se encuentra en desarrollo activo en GitHub . [ 2 ]
Historia
Versiones
Hasta la versión 2022.03.24, F* estaba escrito completamente en un subconjunto común de F* y F# y admitía el arranque en OCaml y F#. Esto se eliminó a partir de la versión 2022.04.02. [ 5 ] [ 6 ]
Descripción general
Operadores
F* admite operadores aritméticos comunes como +, -, *, y /. Además, F* admite operadores relacionales como <, <=, ==, !=, >, y >=. [ 7 ]
Tipos de datos
Los tipos de datos primitivos comunes en F* son bool, int, float, char, y unit. [ 7 ]
Referencias
- ^ "Centro conjunto de investigación de Microsoft Inria " . MSR-INRIA .
- 1 2 "FStarLang/FStar" . GitHub . Archivado del original el 26 de abril de 2026. Recuperado el 26 de abril de 2026 .
- ↑ Swamy, Nikhil; Chen, Juan; Fournet, Cédric; Strub, Pierre-Yves; Bhargavan, Karthikeyan; Yang, Jean (septiembre de 2011). Programación distribuida segura con tipos dependientes del valor . ICFP '11: Actas de la 16.ª Conferencia Internacional ACM SIGPLAN sobre Programación Funcional. Vol. 46. Tokio, Japón: Association for Computing Machinery. págs. 266–278 . doi : 10.1145/2034574.2034811 . Recuperado el 17 de abril de 2023 .
- ↑ "El Proyecto F*" . Microsoft . Consultado el 20 de abril de 2023 .
- ↑ "fstar.exe ya no se puede compilar en F# como un ejecutable .NET #2512" . Github . Consultado el 17 de abril de 2023 .
- ↑ "Considera eliminar el requisito de que el código F* tenga que ser F# válido #1737" . Github . Consultado el 17 de abril de 2023 .
- 1 2 Swamy, Nikhil; Martínez, Guido; Rastogi, Aseem (14 de enero de 2024). Programación orientada a pruebas en F* (PDF) .
Fuentes
- Ahman, Danel; Hriţcu, Cătălin; Maillard, Kenji; Martínez, Guido; Plotkin, Gordon; Protzenko, Jonathan; Rastogi, Aseem; Swamy, Nikhil (2017). "Mónadas de Dijkstra gratis" . 44.º Simposio ACM SIGPLAN-SIGACT sobre Principios de Lenguajes de Programación .
- Swamy, Nikhil; Hriţcu, Cătălin; Keller, Chantal; Rastogi, Aseem; Delignat-Lavaud, Antoine; Bosque, Simón; Bhargavan, Karthikeyan; Fournet, Cédric; Strub, Pierre-Yves; Kohlweiss, Markulf; Zinzindohoue, Jean-Karim; Zanella-Béguelin, Santiago (2016). "Tipos dependientes y efectos multimonádicos en F*" . 43º Simposio ACM SIGPLAN-SIGACT sobre principios de lenguajes de programación .
- Swamy, Nikhil; Martínez, Guido; Rastogi, Aseem (2024). Programación orientada a pruebas en F* .
Enlaces externos
- Sitio web oficial
- FStarLang en GitHub
- Tutorial F*
- Lenguajes de programación de alto nivel
- Lenguajes funcionales
- Familia de lenguajes de programación OCaml
- Lenguajes de programación .NET
- Lenguajes de programación de Microsoft
- Investigación de Microsoft
- Software gratuito de Microsoft
- Lenguajes con tipado dependiente
- Demostración automatizada de teoremas
- Lenguajes de programación creados en 2011
- Asistentes de corrección
- Software de 2011
- Software libre multiplataforma
- Software que utiliza la licencia Apache.
- Lenguajes de programación de tipado estático