Skip to content

Use weak strategy when reducing shapes#1488

Merged
voodoos merged 2 commits intoocaml:masterfrom
voodoos:shapes-perf
Jun 28, 2022
Merged

Use weak strategy when reducing shapes#1488
voodoos merged 2 commits intoocaml:masterfrom
voodoos:shapes-perf

Conversation

@voodoos
Copy link
Copy Markdown
Collaborator

@voodoos voodoos commented Jun 27, 2022

This prevent unnecessary computations when reducing shapes in Merlin.
For example, in the current released version, Merlin would completely reduce the whole shape of the module Irmin_unix when performing a jump-to-definition at Irmin_u|nix.Git.Some(Stuff) which is wasteful since we only need the UID attributed to the top-level structure of the shape.

This patch leads to a huge speed up in this case. Improving #1468 a lot.

cc @gasche

@voodoos voodoos added this to the 4.6 / 3.8 milestone Jun 27, 2022
@voodoos voodoos merged commit 78a2ac7 into ocaml:master Jun 28, 2022
voodoos added a commit to voodoos/merlin that referenced this pull request Jun 29, 2022
Use weak strategy when reducing shapes
from voodoos/shapes-perf

Co-authored-by: gasche <gabriel.scherer@gmail.com>
voodoos added a commit to voodoos/merlin that referenced this pull request Jun 30, 2022
Use weak strategy when reducing shapes
from voodoos/shapes-perf

Co-authored-by: gasche <gabriel.scherer@gmail.com>
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jun 30, 2022
CHANGES:

Thu Jun 30 14:51:42 CEST 2022

  + merlin binary
    - make most library public and split merlin in two packages: the
      `merlin-lib` package that exposes merlin's internals and the `merlin`
      package with the frontend. (ocaml/merlin#1448, ocaml/merlin#1455, ocaml/merlin#1457, ocaml/merlin#1497, @rgrinberg,
      @tmattio, @kit-ty-kate)
    - Type printing: use best_module_path for paths from Mty_alias (ocaml/merlin#1470)
    - Attempt at finding the 'real' capitalization of files on windows (ocaml/merlin#1462 by
      @mlasson)
    - Use newer `Seq`-based API of Yojson 2.0, avoiding the need for the
      deprecated `Stream` module (ocaml/merlin#1475 by @Leonidas-from-XIV)
    - unify parsing of `MERLIN_LOG` (ocaml/merlin#1480 by @ulugbekna)
    - Fix type deduplication in `type-enclosing` results (ocaml/merlin#1483, fixes ocaml/merlin#1477)
    - Only weakly reduce the shapes to speed up the new Merlin locate
      implementation. (ocaml/merlin#1488)
    - Ignore unknown configuration tags from dune configuration provider but not
      from dot-merlin-reader (ocaml/merlin#1486)
    - typing recovery: recover at the granularity of `core_type` (ocaml/merlin#1484)
  + editor modes
    - add method imenu items for emacs (ocaml/merlin#1481, @mndrix)
    - emacs: Make the prefix argument to `merlin-locate` optional, both for
      consistency with Emacs convention and for backwards compatibility. (ocaml/merlin#1476,
      @antalsz)
    - emacs: fix duplicated prefix path in imenu entries (ocaml/merlin#1495, @bcc32)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants