Robo VM

629 views
Skip to first unread message

Jacob Goodson

unread,
Jul 21, 2013, 12:32:27 PM7/21/13
to clo...@googlegroups.com
I wanted to see if people know/knew about this.  According to the website it states that the VM converts JVM bytecode to native... could clojure take advantage of this(I assume it can but I would like to hear from people with a true understanding if I should be excited or not =P)?

Gary Trakhman

unread,
Jul 22, 2013, 9:59:34 AM7/22/13
to clo...@googlegroups.com
Seems like it would need reflection and classloaders for loading ASM bytecode, and the run-time would thus need its compiler, I can't tell from the site whether that's the case.  If there's no reflection, then it would be a pain to make clojure work.

But, I see it says: 'The standard classes (java.lang.*, java.util.*, etc) included in RoboVM are based on Android's runtime.'

Need more details about how it actually runs java bytecode and its architecture.


On Sun, Jul 21, 2013 at 12:32 PM, Jacob Goodson <submissio...@gmx.com> wrote:
I wanted to see if people know/knew about this.  According to the website it states that the VM converts JVM bytecode to native... could clojure take advantage of this(I assume it can but I would like to hear from people with a true understanding if I should be excited or not =P)?

--
--
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/groups/opt_out.
 
 

Niklas Therning

unread,
Jul 29, 2013, 4:06:07 AM7/29/13
to clo...@googlegroups.com
Hi,

I'm the founder of the RoboVM project. RoboVM supports reflection but not custom classloaders and not runtime bytecode manipulation. If clojure can be compiled ahead of time to bytecode .class files than there's a possibility that it could work on RoboVM and iOS. Just let me know what you need to know.

/Niklas

Cedric Greevey

unread,
Jul 29, 2013, 4:44:47 AM7/29/13
to clo...@googlegroups.com
That would only allow AOT-compiled Clojure to be used -- no dynamic stuff, no REPL, no development directly on that VM, and no code that uses eval.

That's something of a problem.

Any timeline on when the VM will have fully mature JVM classloader capabilities?

Niklas Therning

unread,
Jul 29, 2013, 10:03:04 AM7/29/13
to clo...@googlegroups.com
Never I'm afraid. This is by design. RoboVM targets iOS which doesn't allow executable memory which means JITing is impossible. So for speed RoboVM compiles Java bytecode AOT to machine code. We could have mixed AOT compiled code with interpreted but that would have complicated things considerably.

Colin Fleming

unread,
Jul 29, 2013, 8:04:47 PM7/29/13
to clo...@googlegroups.com
One option for people looking for an alternative VM is Avian (previous thread here), which runs Clojure and supports native continuations and TCO. The maintainer, Joel Dice, is an all around great guy and does a fantastic job on the project. You can use it with a stripped-down class library that ships with Avian (although I don't think that has all the classes required for Clojure), with the Android class library (no idea if that works with Clojure or not) or with the OpenJDK class library.

PublicFarley

unread,
Jul 31, 2013, 10:25:45 PM7/31/13
to clo...@googlegroups.com
Niklas, RoboVM looks incredibly cool. I'm definitely going to fool around with it to see if I can get some Clojure code up and running on iOS. This could become RubyMotion for JVM language devs!

Have you looked at RubyMotion? Is your approach conceptually similar? How do you handle GC? Via an ARC like mechanism or do you bundle a garbage collector?

Again, great work.

Niklas Therning

unread,
Aug 3, 2013, 1:52:58 AM8/3/13
to clo...@googlegroups.com
I'm not very familiar with how RubyMotion works but I guess it's similar. RoboVM takes Java bytecode and compiles it into machine code ahead of time. For each .class file an object file is produced. The object files are linked together with a runtime library into an executable. RoboVM uses the Boehm GC.



--
--
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 a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/69tZB2Wh6Tg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages