#+TODO: TODO IN-PROGRESS REVIEW DONE * The near term tasks * Compiler ** IN-PROGRESS throw/try/catch/finally :@stuarthalloway: * Data structures ** IN-PROGRESS keyword :@levand: *** requires interning strategy **** possibly compiler support for same *** string starting with noncharacter code **** \uFFFE and \uFFFF are guaranteed noncharacters **** use as prefix for keywords and symbols **** must test in predicates string? symbol? keyword? ** IN-PROGRESS symbol :@levand: *** string starting with noncharacter code ** DONE cons cell/list ** DONE map *** first cut COW, string uniqueness required ** DONE vector *** first cut, COW, internal array ** TODO numbers *** js native number is our double *** goog.math.Long? **** building Long objects defeats fixnum support in JS VMs **** but they are 32-bit - some type bits * Abstractions ** TODO Clojure's interfaces *** we don't need all of them Associative Counted Fn IBlockingDeref IChunk IChunkedSeq IDeref IEditableCollection IFn IKeywordLookup ILookup ILookupSite ILookupThunk IMapEntry IMeta Indexed IndexedSeq IObj IPending IPersistentCollection IPersistentList IPersistentMap IPersistentSet IPersistentStack IPersistentVector IProxy IRecord IReduce IRef IReference ISeq ITransientAssociative ITransientCollection ITransientMap ITransientSet ITransientVector IType MapEquivalence Named Reversible Seqable Sequential Settable Sorted ** Naming convention for protocols? *** IBlah ** TODO equality and hashing *** investigate gclosure and GWT ** TODO seqable ** TODO collection ** TODO counted ** DONE seq ** TODO lookup ** TODO associative ** TODO indexed ** TODO map ** TODO set ** TODO vector ** TODO deref ** TODO metadata * Runtime Lib ** key missing macros *** binding **** single threaded **** save, set!, finally restore **** deps: try/finally primitives in compiler *** dotimes ** math ops *** intrinsify built-ins *** handle variadic ** core.cljs! *** crank through core.clj *** see [[file:docs/corelib.org][docs/corelib.org]] * Tools ** getting set up story *** gclosure library *** gclosure compiler *** V8 **** optional for now? ** DONE REPL *** there's a ticket for this ** Integration of gclosure library *** how do we reference/load? **** REPL runtime behavior of provide/require *** versioning issues **** just SVN revs **** how to bind to version ** Testing *** anything good in gclosure? ** Build *** deps *** glcosure compiler **** invocation via API gives most control **** but deps a Python thingy