>> would you consider a Clojure port to Erlang VM a viable idea for production workloads? I know Elixir comes pretty close, but I still prefer Lisp : ) .
I looked into that at one point, but sadly the Erlang VM is a really poor platform for a Clojure port. Here are a few reasons why: Unit of compilation is the module, not sure how that all plays out with the Elixir repl, but it's not optimal. From what I can tell, re-deffing a defn would require re-loading an entire namespace (module) or require one-defn-per-module. No native polymorphism. Elixir fakes it with structs (think defrecords) with a custom hidden field, then looks up functions in a hash map on that field to dispatch. Total lack of shared state. This one doesn't sound like a problem till you think of how to do things like a REPL that can re-def defns at runtime. Also, clojure makes fairly liberal use of atoms, vars, and volatile! cells. Even stuff like lazy seqs leverage limited mutability and set-once behaviors. You don't have any of that in BEAM, just actors. And converting all those things to actors would be a major mistake. So can you have a lisp flavored Erlang? Sure. But what you're left with would not be Clojure. Timothy On Tue, Apr 26, 2016 at 3:55 PM, Rangel Spasov <raspa...@gmail.com> wrote: > tbc++ - given your experience, would you consider a Clojure port to Erlang > VM a viable idea for production workloads? I know Elixir comes pretty > close, but I still prefer Lisp : ) . > > On Monday, April 25, 2016 at 1:50:45 PM UTC-7, tbc++ wrote: >> >> As someone who has spent a fair amount of time playing around with such >> things, I'd have to say people vastly misjudge the raw speed you get from >> the JVM's JIT and GC. In fact, I'd challenge someone to come up with a >> general use, dynamic language that is not based on the JVM and comes even >> close to the speed of Clojure. >> >> A LLVM/C++/RPython based version of Clojure would on a good day come in >> at about 1/10 the speed of Clojure on the JVM for general use cases. >> >> >> On Mon, Apr 25, 2016 at 2:18 PM, Raoul Duke <rao...@gmail.com> wrote: >> >>> > The main motivation would be performance gains. >>> >>> blah? so many impedance mismatches and layers of indirection that i >>> don't think it will gain much? i mean, it would probably be better to >>> spend time tuning gc parameters or something. just a rant / guess. >>> e.g. robovm is for some use cases perfectly fine performance wise >>> believe it or not. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> “One of the main causes of the fall of the Roman Empire was that–lacking >> zero–they had no way to indicate successful termination of their C >> programs.” >> (Robert Firth) >> > -- > 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. > For more options, visit https://groups.google.com/d/optout. > -- “One of the main causes of the fall of the Roman Empire was that–lacking zero–they had no way to indicate successful termination of their C programs.” (Robert Firth) -- 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. For more options, visit https://groups.google.com/d/optout.