Ahora disponible de forma generalizada, la última edición del lenguaje de programación orientado a objetos, imperativo, de código abierto y "funcional primero" de Microsoft promete una programación F# más simple, más uniforme y de mejor rendimiento. Lanzado el 14 de noviembre con la plataforma de desarrollo de software .NET 8, F# 8 está disponible tanto en .NET 8 como en Visual Studio 2022. "F# 8 es más consistente porque permite construcciones existentes en contextos previamente prohibidos", dijo Microsoft. Estos cambios tienen como objetivo hacer que su uso sea menos confuso para los principiantes y evitar soluciones alternativas y, por lo tanto, acortar el código.

Entre las características anunciadas del lenguaje se encuentra un atajo para definir funciones lambda simples, útil cuando solo realiza una expresión atómica en el argumento lambda. Este atajo funciona para acceso a propiedad única, acceso a propiedad anidada, llamadas a métodos e indexadores. También se puede usar fuera de una llamada de función para definir una función lambda independiente para su uso posterior. Una mejora en la copia y actualización de registros anidados permite a los desarrolladores utilizar la notación de puntos para profundizar y actualizar registros anidados. “Una función ¡mientras! presenta un enfoque refinado para los bucles en las expresiones de cálculo, minimizando la formalidad y maximizando la claridad”, dijo Microsoft.

Otras características y mejoras de F# 8

En cuanto al rendimiento del compilador, dos áreas recibieron especial atención: construcciones incrementales de gráficos de proyectos grandes a través de la funcionalidad Asambleas de referencia y paralelización de CPU del proceso del compilador. Para mejorar la incorporación de la biblioteca estándar FSharp.Core, se han realizado cambios en la incorporación de funciones en los módulos Option y ValueOption. También se han realizado mejoras en la "calidad de vida", como la compatibilidad con el recorte del código generado por el compilador, es decir, la eliminación de espacios en ambos extremos de una cadena. Ahora se pueden eliminar los sindicatos discriminados y los registros anónimos. El código usando imprimirfn "%A" para grabaciones recortadas ahora se puede recortar. Desde la versión F# 7, lanzada el año pasado, los diagnósticos de F# 8 se han actualizado con 34 nuevos errores y mensajes. Estos son errores, advertencias y mensajes informativos reportados por el compilador. En el trabajo en curso para mejorar la recuperación del analizador, F# 8 habilita un modo de sangría estricto, que respeta las reglas de sangría del lenguaje e informa un error en escenarios no válidos, mientras que el lenguaje de las versiones anteriores solo indicaba una advertencia.

El lenguaje proporciona soporte para cadenas interpoladas existentes, para facilitar el trabajo con estas cadenas. Las cadenas interpoladas simplifican el trabajo de incrustar expresiones de F# en cadenas literales para los desarrolladores. Además, se han realizado mejoras en el autocompletado de registros en patrones, campos de unión en patrones y expresiones en valores de enumeración. Los literales de cadena también se han actualizado para utilizar funciones de impresión integradas, incluidas imprimirfn Y sprintfn. Los literales numéricos ahora se pueden expresar utilizando operadores existentes y otros literales. El compilador evalúa la expresión en tiempo de compilación y almacena el valor resultante en el ensamblado producido. Se ha simplificado la definición de múltiples restricciones genéricas que se cruzan utilizando tipos flexibles. Finalmente, la palabra clave fija, para fijar memoria en escenarios de programación de bajo nivel, se ha ampliado para usarse en más circunstancias, incluidos todos los tipos. 'tiene cuando 'tiene tiene un método de instancia/extensión GetPinnableReference: unidad -> byref<'t O GetPinnableReference: unidad -> inref< >'t>.