You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is both a robustness upgrade and performance upgrade. The current interpreter design was made as a midpoint between an single and multiple interpreter design. We have discussed a multiple interpreter design at length and decided it wasn't necessary. The best pathway past the GIL really is a subprocess and not a thread or multiple interpreters.
So it is time to revisit the interpreter design accounting for the fact that there will only be one interpreter. This is a major simplification of the library just right off the bat.
Also, the use of thread local variables can be somewhat optimized. Clojure's dynamic variables are extremely convenient but a concurrent thread local hash map (or potentially just an atomic long object) to indicate which thread owns the interpreter is both simple, fast, and fine.
This can be done without changing the external and I think most of the internal apis. Potentially just python/interpreter.clj.
The text was updated successfully, but these errors were encountered:
This is both a robustness upgrade and performance upgrade. The current interpreter design was made as a midpoint between an single and multiple interpreter design. We have discussed a multiple interpreter design at length and decided it wasn't necessary. The best pathway past the GIL really is a subprocess and not a thread or multiple interpreters.
So it is time to revisit the interpreter design accounting for the fact that there will only be one interpreter. This is a major simplification of the library just right off the bat.
Also, the use of thread local variables can be somewhat optimized. Clojure's dynamic variables are extremely convenient but a concurrent thread local hash map (or potentially just an atomic long object) to indicate which thread owns the interpreter is both simple, fast, and fine.
This can be done without changing the external and I think most of the internal apis. Potentially just python/interpreter.clj.
The text was updated successfully, but these errors were encountered: