Created issued including patch: http://code.google.com/p/clojure/issues/detail?id=78
The CA is in the mail. On Wed, Feb 11, 2009 at 2:08 PM, Rich Hickey <richhic...@gmail.com> wrote: > > > > On Feb 11, 4:36 am, "Remco van 't Veer" <rwvtv...@gmail.com> wrote: >> On Tue, Feb 10, 2009 at 1:57 PM, Remco van 't Veer <rwvtv...@gmail.com> >> wrote: >> >> >> >> > On Tue, Feb 10, 2009 at 1:33 PM, Rich Hickey <richhic...@gmail.com> wrote: >> >> On Feb 10, 3:47 am, "Remco van 't Veer" <rwvtv...@gmail.com> wrote: >> >>> Hi Rich, >> >> >>> I've been working on getting clojure in a more usable state for android >> >>> [1]. One of the challenges was to speedup startup time. A lot of >> >>> time is spend in the lisp-reader because all constants are stored as >> >>> lisp expressions. I've replace most of this code by a more direct >> >>> approach; emitting calls to Symbol.intern, RT.var, RT.vector etc. >> >>> These changes make loading core about 3 to 4 times faster. >> >> >> I am interested in this. The current constant serialization is just >> >> the simplest thing to do, and had added utility for any text-based >> >> transfer. I held off on binary/bytecode serialization because I hadn't >> >> yet decided how to make that extensible. I guess it's not the worst >> >> thing if the set of frequently used known types gets special handling >> >> with the print-dup fallback. >> >> >>> Are you interested in this patch? Should I open an issue on the >> >>> project site? >> >> >> Sure, thanks. It's important that the mechanism preserve the actual >> >> types, so sections like this bit (in emitValue): >> >> >> if (value instanceof List) >> >> >> still need refinement. >> >> > I'll work on preserving the exact type for the common cases and will >> > open an issue with patch when I got it working. >> >> Working on this I noticed a lot of meta data is discarded by to >> current, serialize everything to lisp expressions, code when compiling >> core.clj. This happens because the constants are emitted while core >> is loaded and the writer depends on core-print which does write meta >> data for a couple of types. >> >> Isn't this a problem? Rich can you confirm? Or should the constants >> in AOT compiled code not contain meta data at all? Seems very >> unlikely! If it doesn't need meta data, why not? >> >> Emitting meta data properly might even allow one to get rid of >> *print-initialized* which seems hackish to me. > > Yes, there are gaps in metadata retention, and *print-initialized* is > definitely a bootstrap thing I'd love to lose. > > Rich > > > > --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---