Dear Isabelle Developers,
(CC Makarius and Florian - to ensure that you are aware of this email, as I
assume you
are likely to be the most qualified people to advise.)
You might have seen my announcement on the Isabelle User's mailing list: I
added F#
as a new target language to the code generator. This includes initial system
tooling
for managing a "sandboxed" dotnet environment within Isabelle (similar to the
setup
for, e.g., OCaml). The changeset is available at (I am currently trying to
update
it to the latest Isabelle development version every couple of days):
https://hg.logicalhacking.com/isabelle/shortlog/feature-codegen-fsharp
The current setup successfully passes the "bin/isabelle build -a" test on Linux
(well
tested) and Windows (infrequent, tests on a VM running Windows 10). Due to lack
of
hardware, I cannot test it on macOS (trusting the documentation from Microsoft,
the
macOS setup should work out of the box, sharing the
configuration/implementation for
Linux).
I would appreciate your general opinion on F# as a new code generator target
and,
in particular, your opinion and recommendations on future
maintenance/development
models. I see, in principle two approaches:
1) integrating it into the main distribution of Isabelle or
2) keeping it as a separate "component" (theoretically, it could even be an AFP
entry, if users install dotnet themselves and configure the ISABELLE_DOTNET
environment variable - i.e., without the sandboxed dotnet installation)
Integrating it into the main Isabelle distribution has the advantage that the
code
generator setup for F# would "live" next to the setup for the other target
languages.
This could be beneficial for the future maintenance (if the setup for ML/OCaml
changes,
it would be obvious that F# likely needs to be updated as well) and also would
allow
for using the "ml_program_of_program" function in the structure Code_ML without
duplicating
it. The disadvantage is that it adds quite some weight to the Isabelle
distribution and
its release process (i.e., a non-trivial component, namely dotnet, would be
added).
Keeping it separate has the advantage that it does not require any changes to
the main
distribution. The disadvantage that I see is that maintenance is most likely
harder
and more error-prone (in the sense of following the Isabelle development is a
more
manual process) and installation for end-users is likely to be more
inconvenient as
well.
I consider, personally, F# to be an interesting member of the ML-family, as it
provides
a step into the world of dotnet-based frameworks and languages (as Scala opens
a door
into the world of JVM-based languages and frameworks).
Thanks a lot!
Best,
Achim
PS: Just to be clear - my focus is to understand how to maintain such a
component
best, and if there is interest in shipping it as a part of Isabelle itself.
My
focus is not to just "throw-it-over-the-fence" and forget it (i.e., to
off-load maintenance to somebody else).
_______________________________________________
isabelle-dev mailing list
[email protected]
https://mailman46.in.tum.de/mailman/listinfo/isabelle-dev