-*- mode:org -*-
* Requirements:
** lua 5.1, 5.2, 5.3 ( http://www.lua.org/ ) or LuaJIT 2.x ( http://www.luajit.org/ )
** Apache HTTPD 2.4 ( https://httpd.apache.org/ ) or higher

* Documentation
  See docs/README

* Building
  For now, see docs/building-from-subversion.txt


* Task List
** TODO Use r->file to determine file, doing rewriting in translate_name   
** TODO Provide means to get useful output from lua errors in response body
   Probably have to put it on the vm spec for pre-handler errors, as
   it is pre-handler, will prolly be on the request_config somewhere,
   but sometimes cannot put there, so... fun
** TODO Mapping in the server_rec
** TODO Figure out how reentrancy works regarding filter chain stuff. 
   Do we need new "threads"?
** TODO: Flatten LuaHook* to LuaHook phase file fn ?
** TODO: document or remove block sections
** TODO: test per-dir behavior of block sections
** TODO: Suppress internal details (fs path to scripts, etc) in error responses
** TODO: Check whether we can tighten the mode flag in lua_load(),
         luaL_loadfile() an dluaL_loadbuffer() from NULL (="bt")
         to e.g. "t".
    
* License
  Apache License, Version 2.0,
  
  http://www.apache.org/licenses/LICENSE-2.0 

  See NOTICE file for more information
        
* Problems and Patches:
  Please use dev@httpd.apache.org for discussing mod_lua development
  To subscribe send email to dev-subscribe@httpd.apache.org  
  Note that this is for development discussion, not user support :-)
   
* Contributors Include
** Brian McCallister
** Paul Querna
** Garrett Rooney
** Martin Traverso
** Brian Akins
** Justin Erenkrantz
** Philip M. Gollucci
** Stefan Fritsch
** Eric Covener
** Daniel Gruno
** Günter Knauf
