On Thu, 21 Jul 2011, Lukas Bulwahn wrote:

at the moment, we have two code generators in Isabelle:

1. An ancient code generator in Isabelle by Stefan Berghofer - limited to SML without supporting type classes. Commands to invoke it were code_module and code_library.

2. A generic code generator in Isabelle by Florian Haftmann - extenible to multiple target languages, supporting type classes, basic integration of reflection and abstraction mechanisms Commands to invoke it are export_code, value, code_reflect, and some others.


The second subsumes the first, so we intend to remove the first code generator from the next Isabelle distribution if there are not any strong defenders of the ancient code generator.

I have asked this question several years ago already, but there were a few reasons not to delete it immediately, which I have forgotten (or not fully understood in the first place).

Some months ago I have renovated some really old HOL reference manual material, and moved the new version to the isar-ref. This has included the code generator, see section 10.15.2 in isar-ref of Isabelle/521de6ab277a. Apart from repainting the walls and renewing the wallpapers just before demolition, I've also observed that the old code generator is still in use in several places: some applications by Stefan Berghofer (HOL-Proofs/Lambda and Extraction, AFP/POPLmark-deBruijn), and MicroJava and its clones/descendants in AFP.


Anyway, the standard procedure for removal of old stuff is to start marking it as "old" or "legacy" in the NEWS, and emitting suitable legacy_warnings. This can also mean to move the source modules to another place, like src/HOL/Library/Old_Codegen.thy in this situation. After 1 or 2 full release cycles the material is then removed altogether. Things that have been there for such a long time cannot be removed abruptly, without causing damage or confusion somewhere.


Aside: On page 232 of the above-mentioned manual there is an example about const_code wfrec. The same is still used here in MicroJava:
http://isabelle.in.tum.de/repos/isabelle/annotate/eee4fa79398f/src/HOL/MicroJava/J/TypeRel.thy#l100

The source says "Code generator setup (FIXME!)".

The changelog says: "no consts_code for wfrec, as it violates the "code generation = equational reasoning" principle" (before it was in src/HOL/Wellfounded.thy).

Does that mean there is something utterly wrong with MicroJava?


        Makarius
_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to