Skip to content
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

Reloading sources and expansion #188

Closed
JanWielemaker opened this issue Dec 13, 2016 · 1 comment
Closed

Reloading sources and expansion #188

JanWielemaker opened this issue Dec 13, 2016 · 1 comment

Comments

@JanWielemaker
Copy link
Member

SWI-Prolog's strategy for reloading code is described here. The main consequence is that the new code remains invisible until the reload process has completed. This is typically ok, unless term_expansion/2 (or goal_expansion/2) relies on previously loaded code. This includes the definition of term/goal expansion itself. Possible solutions

  • Run term/goal expansion in the future state. Not sure this is easily feasible
  • Update the visible code per predicate rather than per file. This is basically ok as safe reloading of
    running code can only be guaranteed if the interfaces of the predicates do not change.
  • Add dedicated hooks to query predicates and clauses of the future version. That is already
    available as predicate_property(Head, defined), but this seems a slippery slope.
@JanWielemaker JanWielemaker added this to the 7.4.0 milestone Dec 13, 2016
@JanWielemaker
Copy link
Member Author

This is dealt with by Keri Harris implementing reload as properly isolated transactions.

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

No branches or pull requests

1 participant