FleetDB or other NoSQL store for Clojure?
Hi all, I would like to try out some of those no-sql datastores for my next project, and need an advice which one, since I never used the one before. It needs to fulfill at least some of those following criteria, in order of importance: - is nicelly supported by Clojure (by this I mean idiomatic clojure driver, not java plain java wrapper) - it should be schemaless - it should support transactions - it's good if it can be used as embedded db - it doesn't have to support large datasets (in-memmory is ok) - it has to run on both Windows and Linux My first choice would be FleetDB, since it was written in Clojure and examples look nice, but I'm not sure if it is abandonware or not, and I havent heard that people are actually using it in production. What are my other options? Regards, Marko -- 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
Re: FleetDB or other NoSQL store for Clojure?
1) IMHO full SQL-like transaction support and NoSQL are quite contradicting things. You can have some atomic operations with NoSQL but not that heavy transactions as in traditional SQL world. (Correct me if I wrong). So one of the option is to use SQL and serialize/ deserialize documents in your application. Together with embedded db that gives you SQLite or similar. 2) If you are ok with atomic operations there are a lot of options. Here is a discussion about embedded ones - http://stackoverflow.com/questions/2403174/is-there-any-nosql-database-as-simple-as-sqlite 3) (Shamelessly advertising). If you just want it for prototyping you can try my very small library - https://github.com/SergeyDidenko/Simple-Persistence-for-Clojure . It supports Clojure dosync transactions and saves them in a readable and runnable way in text files. It trades reliability for speed so can lose a few last updates on a power loss though. The migration to other DB is extremely easy because of journalling nature. -- 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
Re: Anyone on Google+ yet?
https://profiles.google.com/ajlopez2000 Thanks! On Thu, Jul 14, 2011 at 2:12 PM, Claudia Doppioslash claudia.doppiosl...@gmail.com wrote: My Clojure circle is all set up but empty. My g+ is: http://gplus.to/gattoclaudia Please add link to your profile below. -- 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 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
Re: Anyone on Google+ yet?
Http://gplus.to/frankgerhardt -- 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
Re: Anyone on Google+ yet?
http://gplus.to/glenker On Thu, Jul 14, 2011 at 7:42 PM, Allen Johnson akjohnso...@gmail.com wrote: Yep, you're supposed to add everyone by hand and yes, it is totally unwieldy. That's the way it is right now. Circles are private and every user is supposed to make their own. I'm definitely liking it so far. Although I do find myself avoiding public posts to avoid spamming everyone in the Clojure circle but maybe I'm thinking about it too much. Because of this experiment I'm following lots of interesting people that I otherwise might not have found. We all share a common interest in clojure -- this is a fun way to see what other interests we all share. Allen cla 2011/7/15 Dave Ray dave...@gmail.com: http://profiles.google.com/daveray maybe this is a dumb question, but am I supposed to manually add everyone on this thread in G+? Seems a little unwieldy. dave -- 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 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 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
Re: Anyone on Google+ yet?
On Thu, Jul 14, 2011 at 1:12 PM, Claudia Doppioslash claudia.doppiosl...@gmail.com wrote: My Clojure circle is all set up but empty. My g+ is: http://gplus.to/gattoclaudia Please add link to your profile below. -- 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 http://gplus.to/duck1123 -- 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
Re: Anyone on Google+ yet?
http://gplus.to/FlorianOver 2011/7/15 Daniel Renfer duck112...@gmail.com On Thu, Jul 14, 2011 at 1:12 PM, Claudia Doppioslash claudia.doppiosl...@gmail.com wrote: My Clojure circle is all set up but empty. My g+ is: http://gplus.to/gattoclaudia Please add link to your profile below. -- 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 http://gplus.to/duck1123 -- 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 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
Re: Anyone on Google+ yet?
On Thu, Jul 14, 2011 at 19:12, Claudia Doppioslash claudia.doppiosl...@gmail.com wrote: My Clojure circle is all set up but empty. My g+ is: http://gplus.to/gattoclaudia Please add link to your profile below. https://plus.google.com/117672714007923674182 // Ben -- 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
Re: Anyone on Google+ yet?
Is Google+ invite based? How did all of you get a profile? -- 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
Re: Anyone on Google+ yet?
Yes, it's invite-based. Invite sent to your gmail :) 2011/7/15 Jeremy Heiler jeremyhei...@gmail.com: Is Google+ invite based? How did all of you get a profile? -- 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 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
Re: Anyone on Google+ yet?
Jeremy, I can send you an invitation. Do you need it? On Fri, Jul 15, 2011 at 4:53 PM, Jeremy Heiler jeremyhei...@gmail.comwrote: Is Google+ invite based? How did all of you get a profile? -- 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
Re: Anyone on Google+ yet?
On Fri, Jul 15, 2011 at 10:07 AM, Claudia Doppioslash claudia.doppiosl...@gmail.com wrote: Yes, it's invite-based. Invite sent to your gmail :) Thank you so much! On Fri, Jul 15, 2011 at 10:09 AM, Sergey Didenko sergey.dide...@gmail.com wrote: Jeremy, I can send you an invitation. Do you need it? Claudia beat you to it ;-) But thank you! -- 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
Re: can't set up Clojure 1.2.1
Larry, it seems that the current folder . is not in your default classpath. Either try ...-cp ./clojure.jar ... or add . into your default CLASSPATH. -- 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
Re: Anyone on Google+ yet?
Well, if you are going to spam, I guess Claudia will be penalized :) Claudia beat you to it ;-) But thank you! -- 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
Re: FleetDB or other NoSQL store for Clojure?
As far as I know, the only NoSQL DB supporting transactions right now is Redis. It also satisfies the rest of your points (well, I'm not sure if Redis run on windows...). There are some wrappers for Cojure around, for example this one: https://github.com/ragnard/redis-clojure Regards, Elías. On 15 jul, 09:17, Marko Kocić marko.ko...@gmail.com wrote: Hi all, I would like to try out some of those no-sql datastores for my next project, and need an advice which one, since I never used the one before. It needs to fulfill at least some of those following criteria, in order of importance: - is nicelly supported by Clojure (by this I mean idiomatic clojure driver, not java plain java wrapper) - it should be schemaless - it should support transactions - it's good if it can be used as embedded db - it doesn't have to support large datasets (in-memmory is ok) - it has to run on both Windows and Linux My first choice would be FleetDB, since it was written in Clojure and examples look nice, but I'm not sure if it is abandonware or not, and I havent heard that people are actually using it in production. What are my other options? Regards, Marko -- 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
Re: Anyone on Google+ yet?
https://plus.google.com/112030069981371003904 On 15 jul, 01:56, Kyle Root k...@kylert.com wrote: gplus.to/Kylert On Thu, Jul 14, 2011 at 7:00 PM, ianp ian.phill...@gmail.com wrote: Ian Looks like G+ is pretty popular with the Clojure crowd :-) -- 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 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
Re: Anyone on Google+ yet?
I am also on Google+ https://plus.google.com/u/1/103589339577092342191 Please freel free to add me to you Clojure circles. -- 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
Re: Anyone on Google+ yet?
On Fri, Jul 15, 2011 at 10:17 AM, Sergey Didenko sergey.dide...@gmail.com wrote: Well, if you are going to spam, I guess Claudia will be penalized :) Right now I can only spam all of you. And, well, I can safely do that right here ;-) Link: https://plus.google.com/100568537112681351664 -- 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
Re: FleetDB or other NoSQL store for Clojure?
I've actually tried FleetDB, and describe herehttp://groups.google.com/group/clojure/browse_thread/thread/12a7adb73e18f8b8/edfcbf775f470b4b?q=#edfcbf775f470b4b, what I found. I didn't go with it, and chose MongoDB instead. At the time, Congomongo didn't support DB references. Bit it has since added DB referencehttp://groups.google.com/group/congomongo-dev/browse_thread/thread/af20a551708ff66f support. I have yet to try them out, but they look promising. HTH Tim On Fri, Jul 15, 2011 at 3:17 AM, Marko Kocić marko.ko...@gmail.com wrote: Hi all, I would like to try out some of those no-sql datastores for my next project, and need an advice which one, since I never used the one before. It needs to fulfill at least some of those following criteria, in order of importance: - is nicelly supported by Clojure (by this I mean idiomatic clojure driver, not java plain java wrapper) - it should be schemaless - it should support transactions - it's good if it can be used as embedded db - it doesn't have to support large datasets (in-memmory is ok) - it has to run on both Windows and Linux My first choice would be FleetDB, since it was written in Clojure and examples look nice, but I'm not sure if it is abandonware or not, and I havent heard that people are actually using it in production. What are my other options? Regards, Marko -- 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 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
Enlive (HTML templating library) tutorial
Enlive is Christophe Grand's templating library for Clojure. Instead of the usual substitute-into-delimited-text approach, it works by editing node trees selected by CSS selectors. I’ve written a tutorial for it. Comments welcome, especially from Enlive novices. https://github.com/cgrand/enlive/wiki/Table-and-Layout-Tutorial,-Part-1:-The-Goal - Brian Marick, Artisanal Labrador Contract programming in Ruby and Clojure Occasional consulting on Agile www.exampler.com, www.twitter.com/marick -- 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
Aparapi
Hello. Has anyone looked at using AMD's Aparapi API from within Clojure? -- 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
Re: Anyone on Google+ yet?
sorry, should be http://profiles.google.com/tbatchelli On Fri, Jul 15, 2011 at 11:26 AM, Toni Batchelli tbatche...@gmail.com wrote: https://plus.google.com/tbatchelli I can't create one for disclojure yet. Support for Organizations coming soon, or so it seems. Toni. On Fri, Jul 15, 2011 at 7:40 AM, Jeremy Heiler jeremyhei...@gmail.com wrote: On Fri, Jul 15, 2011 at 10:17 AM, Sergey Didenko sergey.dide...@gmail.com wrote: Well, if you are going to spam, I guess Claudia will be penalized :) Right now I can only spam all of you. And, well, I can safely do that right here ;-) Link: https://plus.google.com/100568537112681351664 -- 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 -- Antoni Batchelli - twitter: @tbatchelli , @disclojure --- email: tbatche...@gmail.com - web: tbatchelli.org , disclojure.org -- Antoni Batchelli - twitter: @tbatchelli , @disclojure --- email: tbatche...@gmail.com - web: tbatchelli.org , disclojure.org -- 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
Re: Anyone on Google+ yet?
https://plus.google.com/tbatchelli I can't create one for disclojure yet. Support for Organizations coming soon, or so it seems. Toni. On Fri, Jul 15, 2011 at 7:40 AM, Jeremy Heiler jeremyhei...@gmail.com wrote: On Fri, Jul 15, 2011 at 10:17 AM, Sergey Didenko sergey.dide...@gmail.com wrote: Well, if you are going to spam, I guess Claudia will be penalized :) Right now I can only spam all of you. And, well, I can safely do that right here ;-) Link: https://plus.google.com/100568537112681351664 -- 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 -- Antoni Batchelli - twitter: @tbatchelli , @disclojure --- email: tbatche...@gmail.com - web: tbatchelli.org , disclojure.org -- 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
Re: Aparapi
Haven't looked at it. But it looks interesting (1http://www.tgdaily.com/software-features/51990-amd-optimizes-java-execution-with-aparapi, 2http://blogs.amd.com/developer/2010/10/13/amd-releases-aparapi-a-java-api-for-expressing-gpu-bound-data-parallel-algorithms/ ). *... the inherent goal of Java's 'write once, run anywhere' programming model is [effectively] extended beyond crossing over multiple operating systems - to crossing multiple processing units.* Tim Washington twash...@gmail.com 416.843.9060 On Fri, Jul 15, 2011 at 1:17 PM, cej38 junkerme...@gmail.com wrote: Hello. Has anyone looked at using AMD's Aparapi API from within Clojure? -- 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 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
Re: Anyone on Google+ yet?
Here is the list : https://plus.google.com/102547044539623029950/posts/e1jafgeu1q5 -- 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
[no subject]
Hi all, I thought I'd share the results of a fun little excercise I did this morning: running Clojure on a VM with native support for tail call optimization and first class continuations. Any Schemers on this list will probably appreciate it. The VM in question is Avian (http://oss.readytalk.com/avian/), built with optional tail call and continuation features enabled and using the OpenJDK class library. It's not nearly as fast or sophisticated as e.g. Hotspot, but it has some features that make it interesting for running non-Java languages. I'm using the latest commit from the Git repository. For example, here's what happens if you recurse too deeply using Hotspot: $ java -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) java.lang.StackOverflowError (NO_SOURCE_FILE:0) user= With Avian, there is no overflow, and we also get to play with continuations: $ ../avian/build/linux-x86_64-tails-continuations-openjdk-src/avian -Xmx512m -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) 100 user= (defn call-cc [function] (avian.Continuations/callWithCurrentContinuation (reify avian.CallbackReceiver (receive [_ continuation] (function (fn [result] (.handleResult continuation result))) #'user/call-cc user= (call-cc (fn [continuation] (continuation hello, world!))) hello, world! user= For more information about how continuations work in Avian, please see http://oss.readytalk.com/avian/javadoc/avian/Continuations.html. Anyway, I think this is an interesting experiment since it shows that if/when tail call and continuation support are integrated into the JVM officially (http://openjdk.java.net/projects/mlvm/), Clojure could benefit with few or no modifications. -- 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
Re:
very cool Joel! I'd also be interested in start up time of avian vs. hotspot, i.e. does avian make it viable to use clojure for short, quick scripts? On Jul 15, 11:59 am, Joel Dice joel.d...@gmail.com wrote: Hi all, I thought I'd share the results of a fun little excercise I did this morning: running Clojure on a VM with native support for tail call optimization and first class continuations. Any Schemers on this list will probably appreciate it. The VM in question is Avian (http://oss.readytalk.com/avian/), built with optional tail call and continuation features enabled and using the OpenJDK class library. It's not nearly as fast or sophisticated as e.g. Hotspot, but it has some features that make it interesting for running non-Java languages. I'm using the latest commit from the Git repository. For example, here's what happens if you recurse too deeply using Hotspot: $ java -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) java.lang.StackOverflowError (NO_SOURCE_FILE:0) user= With Avian, there is no overflow, and we also get to play with continuations: $ ../avian/build/linux-x86_64-tails-continuations-openjdk-src/avian -Xmx512m -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) 100 user= (defn call-cc [function] (avian.Continuations/callWithCurrentContinuation (reify avian.CallbackReceiver (receive [_ continuation] (function (fn [result] (.handleResult continuation result))) #'user/call-cc user= (call-cc (fn [continuation] (continuation hello, world!))) hello, world! user= For more information about how continuations work in Avian, please seehttp://oss.readytalk.com/avian/javadoc/avian/Continuations.html. Anyway, I think this is an interesting experiment since it shows that if/when tail call and continuation support are integrated into the JVM officially (http://openjdk.java.net/projects/mlvm/), Clojure could benefit with few or no modifications. -- 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
Re: Tail Calls and Continuations in Clojure
(sorry about the lack of subject in my original post; I've added one to this email) On Fri, 15 Jul 2011, George Jahad wrote: very cool Joel! I'd also be interested in start up time of avian vs. hotspot, i.e. does avian make it viable to use clojure for short, quick scripts? Possibly. By default, Avian is noticeably slower to start up than Hotspot, at least when using OpenJDK's class library. The boot process for that library touches a lot of code in a lot of classes, and Hotspot has several performance advantages to make quick work of it. On the other hand, Avian can also be built to use its own class library, which allows much faster startup. Unfortunately, it doesn't currently have all the classes needed to support Clojure, and I haven't checked to see how much would need to be added to make it work. Avian also supports ahead-of-time compilation from Java bytecode to native machine code, so it would be possible to create an executable with all the OpenJDK and Clojure classes precompiled, thereby bypassing the need for JIT compilation at runtime except for dynamically-loaded classes. That would be faster, but I'm not sure by how much. The ideal approach in terms of startup time would be to add whatever classes needed to Avian's class library to support Clojure, use ProGuard to shrink and optimize the combination of clojure.jar and the system class library, and precompile the result into native code. I might take a stab at that if I have time. On Jul 15, 11:59 am, Joel Dice joel.d...@gmail.com wrote: Hi all, I thought I'd share the results of a fun little excercise I did this morning: running Clojure on a VM with native support for tail call optimization and first class continuations. Any Schemers on this list will probably appreciate it. The VM in question is Avian (http://oss.readytalk.com/avian/), built with optional tail call and continuation features enabled and using the OpenJDK class library. It's not nearly as fast or sophisticated as e.g. Hotspot, but it has some features that make it interesting for running non-Java languages. I'm using the latest commit from the Git repository. For example, here's what happens if you recurse too deeply using Hotspot: $ java -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) java.lang.StackOverflowError (NO_SOURCE_FILE:0) user= With Avian, there is no overflow, and we also get to play with continuations: $ ../avian/build/linux-x86_64-tails-continuations-openjdk-src/avian -Xmx512m -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) 100 user= (defn call-cc [function] (avian.Continuations/callWithCurrentContinuation (reify avian.CallbackReceiver (receive [_ continuation] (function (fn [result] (.handleResult continuation result))) #'user/call-cc user= (call-cc (fn [continuation] (continuation hello, world!))) hello, world! user= For more information about how continuations work in Avian, please seehttp://oss.readytalk.com/avian/javadoc/avian/Continuations.html. Anyway, I think this is an interesting experiment since it shows that if/when tail call and continuation support are integrated into the JVM officially (http://openjdk.java.net/projects/mlvm/), Clojure could benefit with few or no modifications. -- 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 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
Re: Namespace Docstrings?
2011/7/14 OGINO Masanori masanori.og...@gmail.com: Hello. What is the right way to display namespace docstrings? One day, as usual, I typed: (doc 'clojure.core) ; or other namespace Then the REPL said clojure.lang.Cons cannot be cast to clojure.lang.Symbol. I thought Ah, I know, the message means (quote clojure.core) cannot be cast to the symbol clojure.core. I'm wrong. and typed: (doc clojure.core) Then the REPL said ClassNotFoundException clojure.core. I thought Indeed, clojure.core seems to be an class name... Precisely, can (doc) display namespace docstrings? and typed: (source doc) Oh, (doc) uses (find-ns), so (doc) should display namespace docstrings. But how? Finally I wrote (:doc (meta (the-ns 'clojure.core))) but I know this is a wrong way. When I forget this ad-hoc solution, I'll repeat above. I determined to ask it because I have repeated again just now and I'm annoyed. Any thought? Thanks. 'doc' is only used for things that are vars (functions, and other globals). Namespaces are not vars, so you cannot use 'doc' with them. To see the docs for a namespace, use the 'print-namespace-doc' function: (print-namespace-doc 'the.name.space) // raek -- 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
Re: Namespace Docstrings?
On Jul 15, 3:10 pm, Rasmus Svensson r...@lysator.liu.se wrote: 2011/7/14 OGINO Masanori masanori.og...@gmail.com: Hello. What is the right way to display namespace docstrings? One day, as usual, I typed: (doc 'clojure.core) ; or other namespace Then the REPL said clojure.lang.Cons cannot be cast to clojure.lang.Symbol. I thought Ah, I know, the message means (quote clojure.core) cannot be cast to the symbol clojure.core. I'm wrong. and typed: (doc clojure.core) Then the REPL said ClassNotFoundException clojure.core. I thought Indeed, clojure.core seems to be an class name... Precisely, can (doc) display namespace docstrings? and typed: (source doc) Oh, (doc) uses (find-ns), so (doc) should display namespace docstrings. But how? Finally I wrote (:doc (meta (the-ns 'clojure.core))) but I know this is a wrong way. When I forget this ad-hoc solution, I'll repeat above. I determined to ask it because I have repeated again just now and I'm annoyed. Any thought? Thanks. 'doc' is only used for things that are vars (functions, and other globals). Namespaces are not vars, so you cannot use 'doc' with them. To see the docs for a namespace, use the 'print-namespace-doc' function: (print-namespace-doc 'the.name.space) This is not true in 1.2.x: (doc clojure.core) works fine for me. If it stopped working in 1.3 intentionally, that's fine (I guess?), but it sounds like it was an accident. -- 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
Re: Namespace Docstrings?
Hello. Thank you for giving your opinion, Rasmus. Indeed, (doc doc) says, I am for a var or special form. However, according to (source doc), there is some code for namespace, and this code won't be used since (ns-resolve) breaks its promise. Moreover, with 1.2.1, (doc) uses (print-namespace-doc) internally! And... I hesitate to say but... (print-namespace-doc) seems to be removed in 1.3. So I think we also should update docstring of (doc), right? Thanks. -- Name: OGINO Masanori (荻野 雅紀) E-mail: masanori.og...@gmail.com -- 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
Re: Tail Calls and Continuations in Clojure
That's really cool. I'm glad someone got it to work and with little modification! On Jul 15, 4:21 pm, Joel Dice joel.d...@gmail.com wrote: (sorry about the lack of subject in my original post; I've added one to this email) On Fri, 15 Jul 2011, George Jahad wrote: very cool Joel! I'd also be interested in start up time of avian vs. hotspot, i.e. does avian make it viable to use clojure for short, quick scripts? Possibly. By default, Avian is noticeably slower to start up than Hotspot, at least when using OpenJDK's class library. The boot process for that library touches a lot of code in a lot of classes, and Hotspot has several performance advantages to make quick work of it. On the other hand, Avian can also be built to use its own class library, which allows much faster startup. Unfortunately, it doesn't currently have all the classes needed to support Clojure, and I haven't checked to see how much would need to be added to make it work. Avian also supports ahead-of-time compilation from Java bytecode to native machine code, so it would be possible to create an executable with all the OpenJDK and Clojure classes precompiled, thereby bypassing the need for JIT compilation at runtime except for dynamically-loaded classes. That would be faster, but I'm not sure by how much. The ideal approach in terms of startup time would be to add whatever classes needed to Avian's class library to support Clojure, use ProGuard to shrink and optimize the combination of clojure.jar and the system class library, and precompile the result into native code. I might take a stab at that if I have time. On Jul 15, 11:59�am, Joel Dice joel.d...@gmail.com wrote: Hi all, I thought I'd share the results of a fun little excercise I did this morning: running Clojure on a VM with native support for tail call optimization and first class continuations. �Any Schemers on this list will probably appreciate it. The VM in question is Avian (http://oss.readytalk.com/avian/), built with optional tail call and continuation features enabled and using the OpenJDK class library. �It's not nearly as fast or sophisticated as e.g. Hotspot, but it has some features that make it interesting for running non-Java languages. I'm using the latest commit from the Git repository. For example, here's what happens if you recurse too deeply using Hotspot: � $ java -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) java.lang.StackOverflowError (NO_SOURCE_FILE:0) user= With Avian, there is no overflow, and we also get to play with continuations: � $ ../avian/build/linux-x86_64-tails-continuations-openjdk-src/avian -Xmx512m -cp clojure.jar clojure.main Clojure 1.2.1 user= ((fn this [n] (if (= n 100) n (this (+ n 1 0) 100 user= (defn call-cc [function] � � (avian.Continuations/callWithCurrentContinuation � � � (reify avian.CallbackReceiver � � � � (receive [_ continuation] � � � � �(function (fn [result] (.handleResult continuation result))) #'user/call-cc user= (call-cc (fn [continuation] (continuation hello, world!))) hello, world! user= For more information about how continuations work in Avian, please seehttp://oss.readytalk.com/avian/javadoc/avian/Continuations.html. Anyway, I think this is an interesting experiment since it shows that if/when tail call and continuation support are integrated into the JVM officially (http://openjdk.java.net/projects/mlvm/), Clojure could benefit with few or no modifications. -- 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 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