about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-01-14another workaround for systems with broken CLOCK_MONOTONIC
This should also detect cases where CLOCK_MONOTONIC is available at build but not at runtime.
2011-01-12attempt to support broken/crazy systems
clock_gettime() is not available on some systems and/or CLOCK_MONOTONIC. This is totally broken considering the POSIX standard was 10 years ago, now. Nothing in gnulib, either, wtf?! http://www.gnu.org/software/gnulib/manual/html_node/clock_005fgettime.html
2011-01-12remove unused function (obj_fileno)
2010-12-26release: publish_news runs by default
It's interactive and sucks less, now.
2010-12-25README: updates
Remove unnecessary "DESCRIPTION" header, also added note about Rubinius support.
2010-12-25clogger 0.6.0 - :path shortcut, minor bugfixes v0.6.0
Clogger may now be initialized with a :path instead of :logger to avoid typing "::File" in config.ru files to avoid conflicting with the completely-unrelated Rack::File. $request_time is now uses the monotonic clock, making it immune to system clock changes. $usec and $msec statements were completely broken in the pure-Ruby code and now fixed. Rubinius is supported by the optional C extension as well, the pure-Ruby code always worked.
2010-12-25fix $msec and $usec in pure Ruby variant
It was totally broken but nobody uses uses it, so it went unnoticed since the beginning of time.
2010-12-25add support for Rubinius
RSTRUCT_PTR access is unlikely to ever happen for Rubinius, so we'll just make a method dispatch and leave the faster code for Ruby 1.8 and 1.9.
2010-12-25GNUmakefile: better external RUBYLIB support
Duh!
2010-12-24eliminate unnecessary freeze and dup
They're not needed and a waste of code.
2010-12-24doc: switch to wrongdoc for documentation
wrongdoc eliminates JavaScript from our website and also enables us to cut down on our management scripts/code for supporting the project.
2010-12-24GNUmakefile: preserve RUBYLIB env for tests
2010-12-24fix #include ordering under FreeBSD 7.2
ruby.h doesn't seem to like being included after time.h
2010-12-24use clock_gettime for time resolution
This lets us use CLOCK_MONOTONIC so we are not affected by system clock changes. We still convert to microseconds instead of nanoseconds for (pure)-Ruby 1.8 code compatibility. There is also little need for nanosecond timer resolution in log files (microsecond is not needed, even).
2010-12-24accept a new :path argument in initialize
This lessens confusion for people configuring Clogger in config.ru, since "File" could be mistaken for Rack::File and "::File" needs to be specified.
2010-12-24GNUmakefile: fix running of extension test
Oops
2010-10-05GNUmakefile: use portable tar invocation
We've been spoiled by GNU tar.
2010-06-06README: Rack 1.1 is out (and has been for a while)
2010-06-06clogger 0.5.0 - body.to_path forwarding v0.5.0
This release allows middleware like Rack::Contrib::Sendfile to work properly higher up the stack from Clogger. Certain configurations of the Rainbows! and Zbatery web servers are able to use the return value of body.to_path to serve static files efficiently (via IO.copy_stream under 1.9 or stream_file_data with EventMachine). There are some small cleanups and documentation improvements as well. I've relicensed to LGPLv2.1+ (from LGPLv3-only) to allow bundling with GPLv2-only applications (I'm currently the sole copyright holder). Signed-off-by: Eric Wong <normalperson@yhbt.net>
2010-06-06README: document CLOGGER_PURE environment variable
There may also be some MRI users uncomfortable running C extensions.
2010-06-06CLOGGER_PURE=0 disables the C ext
It's unintuitive that merely setting the environment variable to an empty string or zero would be a boolean true.
2010-06-06ext: comment why we do what we do in to_path
2010-06-06ext: the N in /dev/fd/N must be unsigned
There's no way in hell a valid file descriptor can have a negative number attached to it.
2010-06-06ext: handle weird regular files with O_NONBLOCK set
Sometimes programmers can blindly set O_NONBLOCK on everything in sight. However, O_NONBLOCK has no effect on regular files, so ignore it and allow the raw file descriptor to be used.
2010-06-06ext: cleanup -Wshadow warning
2010-06-06no point in using autoload for Rack
Rack is always used, and Rack itself uses autoload to save memory.
2010-06-06gemspec: update test files
2010-06-06relicense as LGPLv2.1 or later (from LGPLv3)
This allows GPLv2-only programs to bundle us. Signed-off-by: Eric Wong <normalperson@yhbt.net>
2010-06-06doc: RDoc cleanups, split out LICENSE file
2010-06-06pass-through body.to_path when wrapping the body
Certain configurations of Rainbows! (and Zbatery) are able to use the return value of body.to_path to serve static files more efficiently. This also allows middleware like Rack::Contrib::Sendfile to work properly higher up the stack, too.
2010-06-06when wrapping the body, body.close writes the log
We no longer write the log out at the end of the body.each call. This is a behavioral change, but fortunately all Rack servers I've seen call body.close inside an ensure. This allows us to later pass along the "to_path" method and not rely on "each" to write the log.
2010-06-06GNUmakefile: allow multiple tests to run in parallel
2010-04-21clogger 0.4.0 v0.4.0
Small cleanups and minor enhancements (mainly for the optional C extension) for this release: Eric Wong (10): ext: use FIX macros instead of generic NUM macros if possible ext: preserve subclasses of Rack::Utils::HeaderHash test: fix Linux memory usage test avoid direct require of "rack" to quiet warnings ext: GC safety fix when throwing an exception ext: eliminate unused variable ext: fix signedness and shadow warnings ext: sparse cleanups ext: avoid void pointer arithmetic clogger 0.4.0
2010-04-21ext: avoid void pointer arithmetic
default CFLAGS for 1.9.2dev complains
2010-04-21ext: sparse cleanups
2010-04-21ext: fix signedness and shadow warnings
These were (fortunately) harmless, but better safe than sorry.
2010-04-21ext: eliminate unused variable
2010-04-21ext: GC safety fix when throwing an exception
The return value of rb_inspect() may not be visible on the stack without assigning it to a local variable first.
2010-04-21avoid direct require of "rack" to quiet warnings
This quiets down warnings when used with RubyGems loaders such as Isolate and Bundler where the HTTP server already loaded Rack.
2010-04-21test: fix Linux memory usage test
2010-04-08ext: preserve subclasses of Rack::Utils::HeaderHash
some people subclass HeaderHash and want them preserved through the middleware stack.
2010-04-08ext: use FIX macros instead of generic NUM macros if possible
They're slightly faster when we know a number is small enough to be a FIXNUM.
2010-02-13clogger 0.3.2 v0.3.2
This release fixes a memory leak in the optional C extension due to misuse of the Ruby C API. Users of the pure Ruby version are unaffected. We also misreleased 0.3.1 with this fix, but without bumping the Clogger::VERSION constant.
2010-02-13ext: fix memory leak when reentrant/multithreaded v0.3.1
The optional C extension leaked memory due to improper use of the Ruby API, causing duplicated objects to never be garbage collected. I misread the Data_Make_Struct/Data_Wrap_Struct documentation and ended up passing NULL as the "free" argument instead of -1, causing the memory to never be freed. From README.EXT in the MRI source which I misread: > The free argument is the function to free the pointer > allocation. If this is -1, the pointer will be just freed. > The functions mark and free will be called from garbage > collector.
2010-02-09clogger 0.3.0 v0.3.0
You may now force the :reentrant flag to +true+ or +false+ in your Rack configuration file: use Clogger, :format => Clogger::Format::Combined, :logger => ::File.open("/path/to/log", "ab"), :reentrant => true This is to be compatible with Rack servers that do not use use events or Fibers for concurrency instead of threads. By default, reentrancy is enabled if env["rack.multithread"] is true, but "rack.multithread" cannot indicative of a reentrancy requirement in a web server.
2010-02-08README: update examples for :reentrant
2010-02-08Allow :reentrant flag to be forced true/false
Clogger may set this value independently of "rack.multithread" since Actor/Fiber-based servers may have multiple instances of Clogger wrapping different response bodies and yet be incompatible with "rack.multithread"
2010-01-06Fix minor build system bugs
2010-01-06clogger 0.2.0 v0.2.0
The optional C extension no longer tries to preserve the original response array as it could become subtly broken by people using non-frozen but constant responses. For the pure Ruby version, there is a 1.9-encoding bugfix for response size calculation.
2010-01-06pure: use Rack::Utils.bytesize instead of String#size
hacking the C extension with RSTRING_LEN() is so much easier :P