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.

Reply via email to