-
Notifications
You must be signed in to change notification settings - Fork 233
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reproduce and fix issue #1647 with cache invalidation #1650
Reproduce and fix issue #1647 with cache invalidation #1650
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, @voodoos, that's a very nice idea for a quick fix!
In retrospective, I'm starting to regret having chosen the "ad-hoc" logic of having the PPX cache invalidation depend on the reader cache state. Marshaling the parsetree instead would make it more solid and also more flexible: with that, we could finer-grain the cache in the future from file level to structure item level, which would be some work, but would make it really impactful. The reason why I didn't choose that design was that I was wondering the same you're wondering on the issue: "I am wondering what would be the cost of marshaling the parsetree everytime however".
Co-authored-by: Sonja Heinze <[email protected]>
from voodoos/issue1647-ppx-cache-invalidation
CHANGES: Thu Aug 24 17:17:42 CEST 2023 + merlin binary - Constrain socket path buffer size to avoid build warnings (ocaml/merlin#1631) - Handle concurrent server start (ocaml/merlin#1622) - Omit module prefixes for constructors and record fields in the `construct` command (ocaml/merlin#1618). Prefixes are still produced when warning 42 (disambiguated name) is active. - Correctly invalidate PPX cache when pipeline ran partially (ocaml/merlin#1650, fixes ocaml/merlin#1647) - Prevent `short-path` from looping in some cases related to recursive type definitions (ocaml/merlin#1645) - Support parsing negative numbers in sexps (ocaml/merlin#1655) - Fix construct not working with inline records (ocaml/merlin#1658) - Improve behavior of `type-enclosing` on let/and operators (ocaml/merlin#1653) - Fix occurrences of extension constructors (ocaml/merlin#1662) - Improve node selection when ghosts are present (ocaml/merlin#1664, fixes ocaml/merlin#1660) + editor modes - emacs: call merlin-client-logger with "interrupted" if the merlin binary itself is interrupted, not just the parsing of the result (ocaml/merlin#1626). - emacs: merlin-construct, with a prefix argument, now includes local values in the completion options. Alternatively, this behavior can be enabled permanently by customizing `merlin-construct-with-local-values` (ocaml/merlin#1644) - emacs: add support for opam-switch-mode (ocaml/merlin#1654, fixes ocaml/merlin#1591). See <https://github.com/ProofGeneral/opam-switch-mode>
CHANGES: Thu Aug 24 17:17:42 CEST 2023 + merlin binary - Constrain socket path buffer size to avoid build warnings (ocaml/merlin#1631) - Handle concurrent server start (ocaml/merlin#1622) - Omit module prefixes for constructors and record fields in the `construct` command (ocaml/merlin#1618). Prefixes are still produced when warning 42 (disambiguated name) is active. - Correctly invalidate PPX cache when pipeline ran partially (ocaml/merlin#1650, fixes ocaml/merlin#1647) - Prevent `short-path` from looping in some cases related to recursive type definitions (ocaml/merlin#1645) - Support parsing negative numbers in sexps (ocaml/merlin#1655) - Fix construct not working with inline records (ocaml/merlin#1658) - Improve behavior of `type-enclosing` on let/and operators (ocaml/merlin#1653) - Fix occurrences of extension constructors (ocaml/merlin#1662) - Improve node selection when ghosts are present (ocaml/merlin#1664, fixes ocaml/merlin#1660) + editor modes - emacs: call merlin-client-logger with "interrupted" if the merlin binary itself is interrupted, not just the parsing of the result (ocaml/merlin#1626). - emacs: merlin-construct, with a prefix argument, now includes local values in the completion options. Alternatively, this behavior can be enabled permanently by customizing `merlin-construct-with-local-values` (ocaml/merlin#1644) - emacs: add support for opam-switch-mode (ocaml/merlin#1654, fixes ocaml/merlin#1591). See <https://github.com/ProofGeneral/opam-switch-mode>
CHANGES: Thu Aug 24 17:17:42 CEST 2023 + merlin binary - Constrain socket path buffer size to avoid build warnings (ocaml/merlin#1631) - Handle concurrent server start (ocaml/merlin#1622) - Omit module prefixes for constructors and record fields in the `construct` command (ocaml/merlin#1618). Prefixes are still produced when warning 42 (disambiguated name) is active. - Correctly invalidate PPX cache when pipeline ran partially (ocaml/merlin#1650, fixes ocaml/merlin#1647) - Prevent `short-path` from looping in some cases related to recursive type definitions (ocaml/merlin#1645) - Support parsing negative numbers in sexps (ocaml/merlin#1655) - Fix construct not working with inline records (ocaml/merlin#1658) - Improve behavior of `type-enclosing` on let/and operators (ocaml/merlin#1653) - Fix occurrences of extension constructors (ocaml/merlin#1662) - Improve node selection when ghosts are present (ocaml/merlin#1664, fixes ocaml/merlin#1660) + editor modes - emacs: call merlin-client-logger with "interrupted" if the merlin binary itself is interrupted, not just the parsing of the result (ocaml/merlin#1626). - emacs: merlin-construct, with a prefix argument, now includes local values in the completion options. Alternatively, this behavior can be enabled permanently by customizing `merlin-construct-with-local-values` (ocaml/merlin#1644) - emacs: add support for opam-switch-mode (ocaml/merlin#1654, fixes ocaml/merlin#1591). See <https://github.com/ProofGeneral/opam-switch-mode>
CHANGES: Thu Aug 24 17:17:42 CEST 2023 + merlin binary - Constrain socket path buffer size to avoid build warnings (ocaml/merlin#1631) - Handle concurrent server start (ocaml/merlin#1622) - Omit module prefixes for constructors and record fields in the `construct` command (ocaml/merlin#1618). Prefixes are still produced when warning 42 (disambiguated name) is active. - Correctly invalidate PPX cache when pipeline ran partially (ocaml/merlin#1650, fixes ocaml/merlin#1647) - Prevent `short-path` from looping in some cases related to recursive type definitions (ocaml/merlin#1645) - Support parsing negative numbers in sexps (ocaml/merlin#1655) - Fix construct not working with inline records (ocaml/merlin#1658) - Improve behavior of `type-enclosing` on let/and operators (ocaml/merlin#1653) - Fix occurrences of extension constructors (ocaml/merlin#1662) - Improve node selection when ghosts are present (ocaml/merlin#1664, fixes ocaml/merlin#1660) + editor modes - emacs: call merlin-client-logger with "interrupted" if the merlin binary itself is interrupted, not just the parsing of the result (ocaml/merlin#1626). - emacs: merlin-construct, with a prefix argument, now includes local values in the completion options. Alternatively, this behavior can be enabled permanently by customizing `merlin-construct-with-local-values` (ocaml/merlin#1644) - emacs: add support for opam-switch-mode (ocaml/merlin#1654, fixes ocaml/merlin#1591). See <https://github.com/ProofGeneral/opam-switch-mode>
CHANGES: Thu Aug 24 17:17:42 CEST 2023 + merlin binary - Constrain socket path buffer size to avoid build warnings (ocaml/merlin#1631) - Handle concurrent server start (ocaml/merlin#1622) - Omit module prefixes for constructors and record fields in the `construct` command (ocaml/merlin#1618). Prefixes are still produced when warning 42 (disambiguated name) is active. - Correctly invalidate PPX cache when pipeline ran partially (ocaml/merlin#1650, fixes ocaml/merlin#1647) - Prevent `short-path` from looping in some cases related to recursive type definitions (ocaml/merlin#1645) - Support parsing negative numbers in sexps (ocaml/merlin#1655) - Fix construct not working with inline records (ocaml/merlin#1658) - Improve behavior of `type-enclosing` on let/and operators (ocaml/merlin#1653) - Fix occurrences of extension constructors (ocaml/merlin#1662) - Improve node selection when ghosts are present (ocaml/merlin#1664, fixes ocaml/merlin#1660) + editor modes - emacs: call merlin-client-logger with "interrupted" if the merlin binary itself is interrupted, not just the parsing of the result (ocaml/merlin#1626). - emacs: merlin-construct, with a prefix argument, now includes local values in the completion options. Alternatively, this behavior can be enabled permanently by customizing `merlin-construct-with-local-values` (ocaml/merlin#1644) - emacs: add support for opam-switch-mode (ocaml/merlin#1654, fixes ocaml/merlin#1591). See <https://github.com/ProofGeneral/opam-switch-mode>
CHANGES: Thu Aug 24 17:17:42 CEST 2023 + merlin binary - Constrain socket path buffer size to avoid build warnings (ocaml/merlin#1631) - Handle concurrent server start (ocaml/merlin#1622) - Omit module prefixes for constructors and record fields in the `construct` command (ocaml/merlin#1618). Prefixes are still produced when warning 42 (disambiguated name) is active. - Correctly invalidate PPX cache when pipeline ran partially (ocaml/merlin#1650, fixes ocaml/merlin#1647) - Prevent `short-path` from looping in some cases related to recursive type definitions (ocaml/merlin#1645) - Support parsing negative numbers in sexps (ocaml/merlin#1655) - Fix construct not working with inline records (ocaml/merlin#1658) - Improve behavior of `type-enclosing` on let/and operators (ocaml/merlin#1653) - Fix occurrences of extension constructors (ocaml/merlin#1662) - Improve node selection when ghosts are present (ocaml/merlin#1664, fixes ocaml/merlin#1660) + editor modes - emacs: call merlin-client-logger with "interrupted" if the merlin binary itself is interrupted, not just the parsing of the result (ocaml/merlin#1626). - emacs: merlin-construct, with a prefix argument, now includes local values in the completion options. Alternatively, this behavior can be enabled permanently by customizing `merlin-construct-with-local-values` (ocaml/merlin#1644) - emacs: add support for opam-switch-mode (ocaml/merlin#1654, fixes ocaml/merlin#1591). See <https://github.com/ProofGeneral/opam-switch-mode>
This PR add a reproduction and a fix for issue #1647
@pitag-ha could you have a look ?