<commit_before>[Nginx-Clojure](http://nginx-clojure.github.io)
=============

![Alt text](logo.png) [Nginx-Clojure](http://nginx-clojure.github.io) is a [Nginx](http://nginx.org/) module for embedding Clojure or Java or Groovy programs, typically those [Ring](https://github.com/ring-clojure/ring/blob/master/SPEC) based handlers.


Core Features
=================

The latest release is v0.3.0, more detail changes about it can be found from [Release History](downloads.html).

1. Compatible with [Ring](https://github.com/ring-clojure/ring/blob/master/SPEC) and obviously supports those Ring based frameworks, such as Compojure etc.
1. Http Services by  using Clojure / Java / Groovy to write simple handlers for http services.
1. **_NEW_**: Nginx Access Handler by Clojure / Java / Groovy
1. **_NEW_**: Nginx  Header Filter by Clojure / Java / Groovy
1. Dynamic proxying by using Clojure / Java / Groovy to write a simple nginx rewrite handler to set var or return errors before proxy pass or content ring handler
1. Non-blocking coroutine based socket which is Compatible with Java Socket API and works well with largely existing java library such as apache http client, mysql jdbc drivers. 
With this feature  one java main thread can handle thousands of connections.
1. Handle multiple sockets parallel in sub coroutines, e.g. we can invoke two remote services at the same time.
1. Asynchronous callback API of socket/Channel  for some advanced usage
1. Long Polling & Server Sent Events
1. More easier to archive  Sub/Pub services with broadcast events API<commit_msg>issue #68 Release History link in README is broken<commit_after>[Nginx-Clojure](http://nginx-clojure.github.io)
=============

![Alt text](logo.png) [Nginx-Clojure](http://nginx-clojure.github.io) is a [Nginx](http://nginx.org/) module for embedding Clojure or Java or Groovy programs, typically those [Ring](https://github.com/ring-clojure/ring/blob/master/SPEC) based handlers.


Core Features
=================

The latest release is v0.3.0, more detail changes about it can be found from [Release History](http://nginx-clojure.github.io/downloads.html).

1. Compatible with [Ring](https://github.com/ring-clojure/ring/blob/master/SPEC) and obviously supports those Ring based frameworks, such as Compojure etc.
1. Http Services by  using Clojure / Java / Groovy to write simple handlers for http services.
1. **_NEW_**: Nginx Access Handler by Clojure / Java / Groovy
1. **_NEW_**: Nginx  Header Filter by Clojure / Java / Groovy
1. Dynamic proxying by using Clojure / Java / Groovy to write a simple nginx rewrite handler to set var or return errors before proxy pass or content ring handler
1. Non-blocking coroutine based socket which is Compatible with Java Socket API and works well with largely existing java library such as apache http client, mysql jdbc drivers. 
With this feature  one java main thread can handle thousands of connections.
1. Handle multiple sockets parallel in sub coroutines, e.g. we can invoke two remote services at the same time.
1. Asynchronous callback API of socket/Channel  for some advanced usage
1. Long Polling & Server Sent Events
1. More easier to archive  Sub/Pub services with broadcast events API
{'fraction_non_alphanumeric': 0.09633312616532007, 'fraction_numerical': 0.00870105655686762, 'mean_word_length': 4.410084033613446, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6086229', 'n_tokens_mistral': 953, 'n_tokens_neox': 873, 'n_words': 409}