Programmiersprachen: Fable übersetzt F# nach JavaScript

Etwa ein Jahr nach der Vorstellung des Projekts ist nun eine öffentliche Beta verfügbar. Der Compiler verwendet das .NET Core SDK und den JavaScript-Compiler Babel.

In Pocket speichern vorlesen Druckansicht 55 Kommentare lesen
Fable übersetzt F# nach JavaScript
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Die Macher des Fable-Compilers sind vergangenes Jahr mit dem ehrgeizigen Ziel angetreten, die funktionale Welt von Microsofts Programmiersprache F# mit JavaScript zu verbinden. Nun haben sie die erste Beta mit dem Codenamen Narumi veröffentlicht.

Fable verwendet zwei Kerntechniken: Zum einen ermöglicht das .NET-Core-SDK das Erstellen, Bauen und Verwalten von F#-Projekten ohne Abhängigkeit von Visual Studio. Entwickler beschreiben in Fable ihr Projekte zumindest derzeit noch in XML. Zum Projekt gehören Kommandozeilenwerkzeuge, die mit dem .NET Core SDK zusammenarbeiten, beispielsweise startet der Fable-Server nach dem Aufruf des Befehls dotnet fable start. Fable unterstützt wohl den Großteil der F# Core Library sowie laut Homepage "ein bisschen" von der .NET BCL (Base Class Library). F# gilt als Vorzeigeprojekt für das Zusammenarbeit zwischen der Open-Source-Community und Microsoft bei der Entwicklung von Open Source .NET, wie ein vor Kurzem veröffentlichter Blogbeitrag zu den .NET-Programmiersprachen betont hatte.

Unter der Haube ist der Fable-Compiler eine Kombination aus .NET und einer Node-Anwendung. Der JavaScript-Part ist als Webpack-Loader umgesetzt. Fable nutzt den Babel-Compiler, was auch (trotz des nicht hörbaren Buchstabendrehers) die Basis für den Namen sein dürfte. Dabei lassen sich auch Babel-Plug-ins nutzen.

Wer bereits eine Vorgängerversion von Fable probiert hat, findet ein paar Änderungen in Version 1.0, die ein Blogbeitrag ausführlich beschreibt. Eine wesentliche betrifft F# Lambdas, die Currying verwenden, also Funktionen mit mehreren Parametern in eine neu erzeugte mit nur einem umwandeln. Frühere Fable-Versionen haben sie automatisch in verschachtelte Funktionen übersetzt. Die neue Variante setzt auf einen Kompromiss aus ad-hoc erstellten verschachtelten Funktionen und dynamischen Lambdas mit Currying, die zur Laufzeit die Zahl der Argumente überprüfen.

Interessierte können Fable über den Paketmanager npm mit npm install -g fable-compiler herunterladen und finden den Quellcode auf GitHub. Die Dokumentationsseite informiert über die grundsätzliche Verwendung, die Architektur und die Kompatibilität zur F#-Programmiersprache und den Bibliotheken. Die öffentlichen Beispiele reichen von Spielen bis hin zu serverseitigen Node-Anwendungen. (rme)