>> 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.

Reply via email to