On Tue, 23 Jul 2019 09:22:11 -0700 (PDT), Thomas Dickerson
<[email protected]> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/k8uuje5o61glv0hn2r0akilh2b1b19f0rh%404ax.com.

Reply via email to