aboutsummaryrefslogtreecommitdiff
path: root/dev
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2016-03-03 18:26:12 +0100
committerEmilio Jesus Gallego Arias2016-10-20 15:18:28 +0200
commit2dfe032fd42f2489320936fe1e60c9cf7dafe8cf (patch)
tree20b0c583febeda8d96a0fb4c8ba6ffb6fa4763ec /dev
parentdf1de9fa318f1924d92fb39c4bc67c16f3d31db4 (diff)
[search] Don't build intermediate lists in search.
This patch converts the `search_*` functions to use an iter-style API. Consequently, the Search Vernac will produce a message for each search result, greatly improving roundtrip time as IDEs can effectively display the results in a streaming way. It also allows different printers to be used. I didn't observe a performance difference (as things seem to be dominated by printing and `Declaremods`). As a minor tweak, we make search with "Output Name Only" more efficient. Motivation: ----------- Currently, the main search API `Search.generic_search` is an effectful, iteration-based function: ```ocaml val generic_search : int option -> display_function -> unit ``` This type is imposed by `Declaremods`, which exposes an effectful, iteration-based API to traverse Coq library objects. The `Search.search_*` functions try to offer a more functional API by returning a list of pretty printing commands. They need to build an internal intermediate list for that purpose. However, this is a waste of time, as the destination of these lists is to be flushed out by the printer right away.
Diffstat (limited to 'dev')
-rw-r--r--dev/doc/changes.txt6
1 files changed, 6 insertions, 0 deletions
diff --git a/dev/doc/changes.txt b/dev/doc/changes.txt
index 6dd7cb9707..79a0c6312a 100644
--- a/dev/doc/changes.txt
+++ b/dev/doc/changes.txt
@@ -256,6 +256,12 @@ define_evar_* mostly used internally in the unification engine.
- `Tacexpr.TacDynamic(Loc.dummy_loc, Pretyping.constr_in c)` --> `Tacinterp.Value.of_constr c`
+** Search API **
+
+The main search functions now take a function iterating over the
+results. This allows for clients to use streaming or more economic
+printing.
+
=========================================
= CHANGES BETWEEN COQ V8.4 AND COQ V8.5 =
=========================================