diff options
| author | Pierre-Marie Pédrot | 2016-10-06 18:39:28 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2017-02-17 11:52:38 +0100 |
| commit | 6d49de4f2d1ed25b9a745378531a3b55bb0d8197 (patch) | |
| tree | c92fe46cc261ca0c57bf6c4f9ecb0ebc8bf47cdc /dev | |
| parent | 96e55866d49691f539bd43a88a8dd6a4cc7ae727 (diff) | |
Documenting the pluginification of Ltac.
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/doc/changes.txt | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/dev/doc/changes.txt b/dev/doc/changes.txt index f54f3fcc8e..8d2d055908 100644 --- a/dev/doc/changes.txt +++ b/dev/doc/changes.txt @@ -40,6 +40,24 @@ important things: - Some printing functions were moved from Pptactic to Pputils - A part of Tacexpr has been moved to Tactypes +The folder itself has been turned into a plugin. This does not change much, +but because it is a packed plugin, it may wreak havoc for third-party plugins +depending on any module defined in the ltac/ directory. Namely, even if +everything looks OK at compile time, a plugin can fail to load at link time +because it mistakenly looks for a module Foo instead of Ltac_plugin.Foo, with +an error of the form: + +Error: while loading myplugin.cmxs, no implementation available for Foo. + +In particular, most EXTEND macros will trigger this problem even if they +seemingly do not use any Ltac module, as their expansion do. + +The solution is simple, and consists in adding a statement "open Ltac_plugin" +in each file using a Ltac module, before such a module is actually called. An +alternative solution would be to fully qualify Ltac modules, e.g. turning any +call to Tacinterp into Ltac_plugin.Tacinterp. Note that this solution does not +work for EXTEND macros though. + ** Error handling ** - All error functions now take an optional parameter `?loc:Loc.t`. For |
