Much clearer now! Thank you! On Mon, May 24, 2021 at 4:22 PM daniel szmulewicz < daniel.szmulew...@gmail.com> wrote:
> Hi Sean, > > Thank you for explaining what was confusing. With that input, I've edited > my blog post, separating the parts that apply to both REPL and nREPL and > those that apply to nREPL only. > I hope this avoids the pitfall you've described, and that the general > discussion on Clojure's on-the-fly code generation and class loading > mechanism will be of benefit to all Clojurians. > > Daniel > > On Tue, May 25, 2021 at 1:30 AM Sean Corfield <s...@corfield.org> wrote: > >> It wasn't clear to me that the entire article only applies to nREPL. >> Especially since most of the article just uses "REPL" and most of the code >> does work in a normal REPL -- and you start with: >> >> Our exploration of the topic makes heavy use of a REPL, I invite you to >> fire one up and play along. >> >> and then later say: >> >> It is worth reproducing the experiment in a plain Clojure REPL and a >> nREPL client side by side. >> >> which makes it seem like everything up to that point applies to both and >> this part is a specific difference. >> >> (the article may be particularly confusing for me since I never use nREPL >> at all so "REPL" = "Clojure REPL" as far as I'm concerned) >> >> On Mon, May 24, 2021 at 1:21 PM daniel szmulewicz < >> daniel.szmulew...@gmail.com> wrote: >> >>> >>> Hi Sean, >>> >>> Absolutely, the growing stack of context class loaders is a quirk of the >>> nREPL client. >>> >>> * something fairly unexpected is that with a CIDER/nREPL setup, each >>> evaluation adds an extra classloader* >>> >>> And later I write: >>> >>> In the default REPL, one instance of DynamicClassLoader stays associated >>> with the REPL throughout the session. In a nREPL client, instances of >>> DynamicClassLoader keep piling up. >>> >>> If you think there is a lack of clarity, I'll be happy to amend the text >>> to make it less likely for the reader to miss that. Thank you very much for >>> your input. >>> >>> Daniel >>> >>> On Mon, May 24, 2021 at 10:58 PM Sean Corfield <s...@corfield.org> >>> wrote: >>> >>>> When I tried some of your code in a default REPL (via the Clojure CLI), >>>> I don't see the same results. In particular: >>>> >>>> user=> (hash (.getContextClassLoader (Thread/currentThread))) >>>> >>>> 1865201235 >>>> >>>> user=> (hash (.getContextClassLoader (Thread/currentThread))) >>>> >>>> 1865201235 >>>> >>>> user=> (hash (.getContextClassLoader (Thread/currentThread))) >>>> >>>> 1865201235 >>>> >>>> user=> (hash (.getContextClassLoader (Thread/currentThread))) >>>> >>>> 1865201235 >>>> >>>> (although all the rest of it seems to apply) >>>> >>>> On Mon, May 24, 2021 at 2:10 AM Daniel Szmulewicz < >>>> daniel.szmulew...@gmail.com> wrote: >>>> >>>>> Every time you press ENTER at the REPL, a new class is created. In >>>>> addition, it comes with a new class loader instance exclusively dedicated >>>>> to loading it. That's Clojure behind the scenes doing its runtime magic. >>>>> On >>>>> the other hand, in a nREPL client like Cider, not one but two class loader >>>>> instances are produced, and that is a quirk that carries over since its >>>>> earliest days. I bring you that story as an excuse for dwelling on the >>>>> subject of class loading. Arcane, maybe, but essential. >>>>> >>>>> Read on <https://danielsz.github.io/blog/2021-05-12T13_24.html>. >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To post to this group, send email to clojure@googlegroups.com >>>>> Note that posts from new members are moderated - please be patient >>>>> with your first post. >>>>> To unsubscribe from this group, send email to >>>>> clojure+unsubscr...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/clojure?hl=en >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to clojure+unsubscr...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/clojure/d7c270ef-d8e0-4935-ac2f-6fd56c9d4c3en%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/clojure/d7c270ef-d8e0-4935-ac2f-6fd56c9d4c3en%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> >>>> >>>> -- >>>> Sean A Corfield -- (904) 302-SEAN >>>> An Architect's View -- https://corfield.org/ >>>> World Singles Networks, LLC. -- https://worldsinglesnetworks.com/ >>>> >>>> "Perfection is the enemy of the good." >>>> -- Gustave Flaubert, French realist novelist (1821-1880) >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clojure@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+unsubscr...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> --- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "Clojure" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/clojure/uypJ_9opzN0/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> clojure+unsubscr...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/clojure/CAD4thx_ENAaAV2Oa5dLNQW51sg7W4VU6nWfM3r0Qgx9HYsqd-g%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/clojure/CAD4thx_ENAaAV2Oa5dLNQW51sg7W4VU6nWfM3r0Qgx9HYsqd-g%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clojure@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+unsubscr...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/clojure/CAABPU68OsZ8XdejzTzz%2BZ%3DvyP4P-ECPm3j1sbqZyMMkN5Giicw%40mail.gmail.com >>> <https://groups.google.com/d/msgid/clojure/CAABPU68OsZ8XdejzTzz%2BZ%3DvyP4P-ECPm3j1sbqZyMMkN5Giicw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> >> >> -- >> Sean A Corfield -- (904) 302-SEAN >> An Architect's View -- https://corfield.org/ >> World Singles Networks, LLC. -- https://worldsinglesnetworks.com/ >> >> "Perfection is the enemy of the good." >> -- Gustave Flaubert, French realist novelist (1821-1880) >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "Clojure" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/clojure/uypJ_9opzN0/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> clojure+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/clojure/CAD4thx8nCj%3DifMU3vJDbGL%2BtLPp0LCr6enMHjJ0bMCD5pLHieA%40mail.gmail.com >> <https://groups.google.com/d/msgid/clojure/CAD4thx8nCj%3DifMU3vJDbGL%2BtLPp0LCr6enMHjJ0bMCD5pLHieA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/clojure/CAABPU6-O50iR2QC43YeLf5O5kRUsRSa7mQo43hz9XXUx7jFX1Q%40mail.gmail.com > <https://groups.google.com/d/msgid/clojure/CAABPU6-O50iR2QC43YeLf5O5kRUsRSa7mQo43hz9XXUx7jFX1Q%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- Sean A Corfield -- (904) 302-SEAN An Architect's View -- https://corfield.org/ World Singles Networks, LLC. -- https://worldsinglesnetworks.com/ "Perfection is the enemy of the good." -- Gustave Flaubert, French realist novelist (1821-1880) -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/CAD4thx9zsM5-k551_KhYJ-5MUF_Jyfni1X%2BpY0paXWxsiWC05g%40mail.gmail.com.