I am pleased to announce the release of clj-amp 0.9.0[1][2], a Clojure implementation of the AMP[3] protocol (the reference implementation of which is found in the Twisted networking framework for Python). clj-amp is implemented on top of Aleph/Manifold/Gloss; Special thanks to Zach Tellman for the assistance on the Aleph mailing list in getting the low-level protocol working.
While AMP is currently a somewhat obscure protocol, if you need to interoperate with an existing system or service using it, this library should prove useful. It may also be of interest for anyone implementing a new system and needing an asynchronous[4] RPC-type protocol with support in multiple languages/frameworks, although there are other, more popular choices that might be more suitable. Despite this being the first release, clj-amp is essentially feature complete: you can define commands using any of the standard argument types, issue and respond to calls, and define new argument types of your own if necessary. The 0.9.0 version number reflects my reluctance to designate this 1.0.0 for the following reasons: * Lack of users and real-world testing: the project was just released. * API instability: while I do not have any immediate plans to break API compatibility, I would like to reserve the right to make API changes based on initial feedback from users (assuming anyone uses it...) in order to correct any glaring issues with the API that may be discovered. * Minimal test coverage and documentation: I would still like to expand the test coverage to include more specimens of AMP encodings, as well as expand the documentation. * Depending on alpha and SNAPSHOT versions of things: this will be fixed as the various things I'm relying on make it into release versions. Any feedback on the API as well as the documentation would be greatly appreciated. [1] https://github.com/mithrandi/clj-amp [2] https://clojars.org/clj-amp [3] http://amp-protocol.net/ [4] AMP is both asynchronous, in that requests and responses can be interleaved and calls ("commands", in AMP terminology) can be overlapped; it is also symmetric, in that the client and server can both issue and respond to requests, should this be desired. -- mithrandi, i Ainil en-Balandor, a faer Ambar -- 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.