Hey Dmitri, I haven't used any sort of dev-mode before (I just update stuff in the REPL when necessary), but it seems like something like that belongs in middleware, not the server. The server is just calling a function, it shouldn't care if something else is changing that function's behavior.
If other servers have this behavior embedded, maybe it can be extracted into a standalone library? Zach On Fri, Apr 17, 2015 at 3:47 PM, Dmitri <dmitri.sotni...@gmail.com> wrote: > I'd like to add Aleph to the Luminus template and I was wondering if > there's an equivalent of dev mode available for other servers where it > watches for changes in source and reloads them. I did a cursory look but > didn't spot anything like a -dev option. > > On Friday, April 17, 2015 at 5:06:30 PM UTC-4, Zach Tellman wrote: > >> Hey all, >> >> In preparation for Clojure/West, I'm formally releasing the latest Aleph >> and the libraries that surround it. Aleph 0.4.0 has been running in >> production at Factual for half a year now, and across a variety of services >> is handling at peak 600k HTTP requests/sec (spread across 15-20 machines). >> >> Since the landscape of Clojure HTTP servers is pretty crowded these days, >> it's worth taking some time to explain how Aleph differs. To be clear, >> most Clojure deployments likely use Jetty, and should continue to do so. >> However, Aleph has some unique properties: >> >> * It uses the Netty library, which is a high-performance and very >> battle-tested network layer for the JVM >> * It is the only HTTP server that has *ubiquitous* asynchronous streams >> wherever data can be received or sent (all other libraries can only >> represent streaming requests using InputStreams, or like http-kit don't >> support streaming HTTP requests at all) >> * It is the only server that has a WebSocket implementation with any >> support for per-connection backpressure. I won't make this post even >> longer by going into why this is important, but this will be a central >> theme of my talk at Clojure/West next week if you're interested in hearing >> more. >> * It uses consistent abstractions to represent network connections over a >> variety of protocols, which makes it straightforward to use the same >> application logic for all of them. >> >> Again, none of these points mean you should immediately drop whatever >> you're using and move over to Aleph instead. However, I do feel it >> represents the only (current) good option for using core.async or a similar >> stream abstraction to represent network data, which is an idea a number of >> people seem to be playing with lately. Some examples of this can be found >> at http://ideolalia.com/aleph/literate.html. >> >> A full list of the libraries: >> >> aleph - https://github.com/ztellman/aleph - uses the excellent Netty >> library to expose HTTP, TCP, and UDP using a consistent asynchronous stream >> representation. >> >> manifold - https://github.com/ztellman/manifold - an unopinionated >> stream representation designed to cleanly interoperate with other stream >> representations (Clojure's seqs, core.async channels, Java's >> BlockingQueues, and others). This is the base stream representation for >> all network sources and sinks in Aleph. >> >> dirigiste - https://github.com/ztellman/dirigiste - a pure-Java library >> that provides instrumented, dynamically sized thread and object pools. >> This is used for thread pools in Aleph's HTTP server, and for connection >> pools in Aleph's HTTP client. >> >> byte-streams - https://github.com/ztellman/byte-streams - a means of >> translating any byte representation into another. Want to turn a >> core.async channel that emits byte-arrays into an InputStream, or maybe the >> other way around? Look no further. The library's conversion mechanism is >> extensible, which is used in Aleph to make Netty's custom byte >> representations interoperable with more familiar representations. >> >> byte-transforms - https://github.com/ztellman/byte-transforms - a >> curated collection of byte compression, hashing, and encoding mechanisms, >> which can work on anything byte-streams can convert. >> >> While all these libraries are used in concert to create Aleph, I've been >> very careful to make sure any of them can be used by themselves. If anyone >> has questions about them, the best place to get my attention is the Aleph >> mailing list: https://groups.google.com/forum/#!forum/aleph-lib. >> >> I will be mentioning some of these libraries at my upcoming Clojure/West >> talk (http://clojurewest.org/speakers#ztellman), but I've also set aside >> an Unsession for specifically discussing these libraries: >> https://github.com/clojurewest/clojurewest2015/wiki/Unsessions. If >> you're interested, please add your name to the list. >> >> Zach >> > -- > 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 a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/KH8Js8URKwA/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.