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

Ensure string-hashing is defined before it gets used #36411

Merged
merged 1 commit into from
Jun 25, 2020

Conversation

timholy
Copy link
Member

@timholy timholy commented Jun 24, 2020

An analysis of invalidations during bootstrap (#36391 (comment)) revealed that log_record_id calls hash on strings, and in principle it is used before the specialized hash(::String) methods are defined, and thus defaulting to the fallback. Since the new methods change the value of the computed hash, this could cause subtle bugs. It seems safer to define the hash methods as early as possible.

An analysis of invalidations during bootstrap revealed that `log_record_id`
calls `hash` on strings, and in principle it is used before the
specialized methods are defined. Since the new methods change the value
of the hash is expected to change, this could cause subtle bugs.
It seems safer to define the hash methods at around the first time they
could conceivably be defined.
@JeffBezanson JeffBezanson merged commit 5bb1053 into master Jun 25, 2020
@JeffBezanson JeffBezanson deleted the teh/hashing_bootstrap branch June 25, 2020 17:18
mbauman added a commit to dlfivefifty/julia that referenced this pull request Jun 26, 2020
* origin/master: (232 commits)
  Add passthrough for non-Markdown docs (JuliaLang#36091)
  Fix pointer to no longer assume contiguity (JuliaLang#36405)
  Ensure string-hashing is defined before it gets used (JuliaLang#36411)
  Make compilecache atomic (JuliaLang#36416)
  add a test for JuliaLang#30739 (JuliaLang#36395)
  Fix broken links in docstring of `repeat` (JuliaLang#36376)
  fix and de-dup cached calls to `methods_by_ftype` in compiler (JuliaLang#36404)
  ml-matches: skip unnecessary work, when possible (JuliaLang#36413)
  gf: fix some issues with the move from using a tree to a hash lookup of leaf types (JuliaLang#36413)
  Add news and manual entry for sincospi (JuliaLang#36403)
  Check axes in Array(::AbstractArray) (fixes JuliaLang#36220) (JuliaLang#36397)
  add versions of `code_typed` and `which` that accept tuple types (JuliaLang#36389)
  Fix spelling of readdir. (JuliaLang#36409)
  add sincospi (JuliaLang#35816)
  fix showing methods with unicode gensymed variable names (JuliaLang#36396)
  Add doctest: eachslice (JuliaLang#36386)
  fix documentation typo ("Ingeger")
  Refactor `abstract_eval` to separate out statements and values (JuliaLang#36350)
  fix return type of `get!` on `IdDict` (JuliaLang#36383)
  Allow single option with REPL.TerminalMenus (JuliaLang#36369)
  ...
simeonschaub pushed a commit to simeonschaub/julia that referenced this pull request Aug 11, 2020
An analysis of invalidations during bootstrap revealed that `log_record_id`
calls `hash` on strings, and in principle it is used before the
specialized methods are defined. Since the new methods change the value
of the hash is expected to change, this could cause subtle bugs.
It seems safer to define the hash methods at around the first time they
could conceivably be defined.
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