On Tue, 23 Jul 2019 09:22:11 -0700 (PDT), Thomas Dickerson
<thomas_dicker...@alumni.brown.edu> wrote:

>Since people are talking about running on different "VM" architectures, an 
>LLVM backend would be lovely and gives WebAssembly for free.

+1

>JVM support, on the other hand, seems like a particularly poor time 
>investment, since (1) there is no shortage of options for functional 
>programmers, and (2) the only real advantage of running on JVM is if you 
>can provide interoperability with the massive Java ecosystem, but that's 
>essentially incompatible with working around the JVM's bad architectural 
>decisions.
>The elephant in the room for any Scheme running on the JVM is that (a) 
>cross-function tail call elimination is incompatible with the security 
>model; (b) trampolining everything is bad for performance and, more 
>importantly, makes interoperability miserable (have fun writing all your 
>Java code that calls Racket code in manual CPS-style); and (c) throwing 
>everything into a massive state machine while-loop with gotos is both a 
>static analysis nightmare and breaks the JIT optimizer due to single-method 
>bytecode size restrictions.

Yes, JVM seems a rather poor target for a Scheme ... although Kotlin
does heroics converting tail recursion into interation to get around
(at least some of) the limitations.


OTOH, the dotNET runtime does support tail calling.  F#, at least,
uses that feature even if no other dotNET languages do.

Since dotNET Core now is supported on Linux, perhaps it should be
considered as a target instead of the JVM.

YMMV,
George

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/k8uuje5o61glv0hn2r0akilh2b1b19f0rh%404ax.com.

Reply via email to