about summary refs log tree commit homepage
DateCommit message (Collapse)
2024-02-01switch to TypedData macros for allocation HEAD master
This gives us memsize information and appears to fix a leak under Ruby 3.3.
2024-02-01rack 3.x compatibility
Rack::Utils::HeaderHash will be removed in rack 3.1 so these changes mostly address that. The initializer in Rack::Headers inherits from Hash, so switching to the ::[] class method to achieve the same result.
2024-02-01update deprecated license identifier
2023-05-11workaround for time(2) being non-monotonic
Apparently, time(2) may go backwards in the first 1 - 2.5ms of every second since Linux + glibc 2.31+ (and some proprietary OSes). Use clock_gettime(2) with CLOCK_REALTIME to workaround the problem at the cost of a slight performance hit(*). While git will likely use gettimeofday(2) for compatibility with proprietary OSes, gettimeofday(2) was declared obsolete in POSIX.1-2008 and we don't support proprietary OSes. (*) https://inbox.sourceware.org/libc-alpha/87ttywq0je.fsf@oldenburg.str.redhat.com/ Link: https://lore.kernel.org/git/20230319064353.686226-3-eggert@cs.ucla.edu/T/
2023-05-11use _POSIX_C_SOURCE=200809L
That's what _DEFAULT_SOURCE will set if it's respected, and we've had POSIX 2008 goodies for 15 years, now.
2022-12-25fix $request_time{9,0} for 32-bit platforms
`struct timespec' has 32-bit tv_sec and tv_nsec on 32-bit x86 GNU/Linux system, causing excessive overflow and test failures.
2022-06-16clogger 2.4.0 v2.4.0
Only 2 code changes, neither of which is really relevant for 99% of users using the C extension and strict HTTP parsers. escape env['REQUEST_METHOD'] for non-strict HTTP servers pure: fix time.rb incompatibility in Ruby 3.1+ doc: drop git:// URLs, use shorter domain for IMAP links
2022-06-16doc: drop git:// URLs, use shorter domain for IMAP links
git:// is rarely necessary these days, and IMAP (unlike NNTP) doesn't advertise hostnames in its protocol, so we can use a shorter one to avoid advertising other projects. And stylize our domain name since "YHBT" is an acronym.
2022-06-16pure: fix time.rb incompatibility in Ruby 3.1+
The time.rb distributed with Ruby 3.1+ no longer has the RFC2822_MONTH_NAME constant, as Time#strftime in Ruby is locale-independent (unlike strftime(3) in C). This doesn't affect the default C extension, it only affects the pure Ruby code used for Ruby implementations without C extension support. cf. ruby.git commit 5307fab6619e26e05d791d68c35ceef2e923e8d5
2022-06-16escape env['REQUEST_METHOD'] for non-strict HTTP servers
This doesn't affect most Rack HTTP servers since they have strict parsers, but is safer in case one doesn't... Influenced by CVE-2022-30123.
2021-05-25clogger 2.3.1 v2.3.1
This release fixes compatibility with GC.compact on Ruby 3.x. Thanks to Ngan Pham for the patch and Aaron Patterson for the feedback for the (obsolete) kgio RubyGem: https://yhbt.net/kgio-public/CAAvYYt5Z5f2rMuXO5DMpR1-6uRvu_gXKDvqcyoZ+oNcLiTH39g@mail.gmail.com/T/
2021-05-25pkg.mk: remove index.html and created.rid from homepage
index.html and README.html are identical, so get rid of it. created.rid has no business being public, anyways. Our homepage is just a directory listing, nowadays, to improve discoverability of non-HTML docs.
2021-05-25doc: use Tor v3 .onion URLs
Tor is dropping v2 .onion in favor of more secure (but less readable) v3 .onion URLs. Zooko's triangle once again :/ (no, we won't support planet-destroying proof-of-work schemes)
2021-05-24mark Rack::HeaderHash for GC.compact
With GC.compact in Ruby 3.x, Ruby-defined constants need to be explicitly marked to prevent movement: Link: https://yhbt.net/kgio-public/CAAvYYt5Z5f2rMuXO5DMpR1-6uRvu_gXKDvqcyoZ+oNcLiTH39g@mail.gmail.com/T/
2020-08-10clogger 2.3.0 - $request_time{POWER,PRECISION} support v2.3.0
The $request_time can now be multiplied by a power-of-10, allowing up to nanosecond resolution without decimals. Thanks to Josh Natanson for contributing this feature: https://yhbt.net/clogger-public/CAPdx2swO4eaOWaqL4-rMLq1H7pH6w-i760vPJTb92tyKfcc01Q@mail.gmail.com/ https://yhbt.net/clogger-public/CAPdx2szjqUuFjUtrgoeXXwmz0HzfdnWe+2h2Sp_ywDkTDVL0-g@mail.gmail.com/T/ There's also some minor fixes and doc updates: clogger: fix _BSD_SOURCE and _SVID_SOURCE deprecation warnings doc: update with IMAPS, NNTPS, and .onion mail archive URLs doc: document Fiber.current
2020-08-10doc: document Fiber.current
It's always been supported (since it's just an eval), but make it explicit. We'll also drop the Actor.current example since both Rubinius and Revactor seem dead and Ractor (Guild) is probably coming...
2020-08-10doc: update with IMAPS, NNTPS, and .onion mail archive URLs
public-inbox.org started running an IMAP + IMAPS server.
2020-08-06clogger: fix _BSD_SOURCE and _SVID_SOURCE deprecation warnings
Apparently, _DEFAULT_SOURCE is now the recommended macro to define for _BSD_SOURCE and _SVID_SOURCE features.
2020-08-03Added optional POWER argument to $response_time
This argument allows for conversion of response_time to microsecond or nanosecond by multiplying by a power of 10, up to a limit of 9. Defaults to 0 so backwards compatible.
2020-01-08clogger 2.2.1 - move away from .org TLD v2.2.1
Just doc and website updates to point our email address and website to yhbt.net because bogomips.org won't be affordable due to extortionists, soon. doc: switch to dark216 for website doc: replace bogomips.org with yhbt.net
2020-01-08doc: replace bogomips.org with yhbt.net
bogomips.org is due to expire, and I can't justify paying .org extortionists to renew it.
2020-01-08doc: switch to dark216 for website
This was done for Earth Day 2019, but never pushed out
2017-05-22clogger v2.2.0 - Rack 2.x compatibility fix v2.2.0
This release fixes a Rack compatibility problem when Rack::BodyProxy wraps the Clogger object and calls "respond_to?" with two arguments. This affects folks who put Clogger at lower levels of the middleware stack (below middlewares which use Rack::BodyProxy) A huge thanks to Pat Allan for coming up with this fix. Note, the recommended usage of clogger middleware is to have it at the outermost layer of the Rack middleware stack where it can give the most accurate $request_time measurement. There's also a couple of tiny internal improvements around the build and miniscule GC overhead reduction. Pat Allan (1): Update respond_to? calls for second argument. Eric Wong (3): clogger.c: comment to explain the lack of GC guard ext: reduce frozen string marking overhead build: remove build-time olddoc dependency
2017-05-22build: remove build-time olddoc dependency
This should make it easier for distros to pick this up without picking up olddoc, too. We will still use olddoc for generating the website since it reduces bandwidth costs, and for generating NEWS for our own builds. Also, remove the "private" email address since it might be unfair to the public for people to send private support requests.
2017-05-21Update respond_to? calls for second argument.
Rack (since v2) has started explicitly listing the second (optional) argument for respond_to?, which matches the underlying Ruby spec. This patch fixes the calls in both C and Ruby approaches. [ew: add test, use rb_obj_respond_to if available]
2017-02-15ext: reduce frozen string marking overhead
Using rb_global_variable excessively can be expensive since it uses a singly-linked list to track addresses. Since these strings are all frozen and constant, put them into an array instead and only mark the array as a global to improve locality. Ruby 1.9+ has rb_gc_register_mark_object but it is not part of the documented, public API, so we're not using it, yet.
2017-01-17clogger.c: comment to explain the lack of GC guard
If I (the person who wrote this) spent a minute figuring out why it wasn't needed, somebody else might, too. Save someone else a minute.
2016-07-28clogger 2.1.0 - rack 2.x compatibility and more! v2.1.0
5 changes since 2.0.2: test_clogger: add test for REMOTE_USER ext: avoid clobbering existing system functions pure: remove Rack::Utils.bytesize dependency loosen rack dependency to allow rack 2.x doc use HTTPS for URLs and move homepage Note the new homepage: homepage: https://bogomips.org/clogger/ code: git clone https://bogomips.org/clogger.git mail archives: https://bogomips.org/clogger-public/ email us and our archives: clogger-public@bogomips.org Coming soon: - hidden service mirrors for the homepage + git host - POP3 mailing list subscriptions!
2016-07-28doc use HTTPS for URLs and move homepage
Thanks to Let's Encrypt, the bogomips.org now supports HTTPS so our homepage can be moved to: https://bogomips.org/clogger/ While clogger.bogomips.org is part of the TLS certificate, it is needless subjectAltName bloat that should not have been created. This will also make it easier to have multiple homepages in the future as a Tor hidden service.
2016-07-28loosen rack dependency to allow rack 2.x
With the removal of Rack::Utils.bytesize, we are compatible with rack 2.x
2016-07-28pure: remove Rack::Utils.bytesize dependency
This method is gone from rack 2.0 and not even necessary in Ruby 1.8.7. Yes, this breaks compatibility with Ruby 1.8.6 :P
2016-07-28ext: avoid clobbering existing system functions
These defines may cause incompatibilities if Ruby or other system headers decide to clobber these. It's also confusing to override existing, well-known-and-standardized functions.
2016-01-19test_clogger: add test for REMOTE_USER
This wasn't tested before, and we ought to ensure it works since it's rarely-used.
2015-02-27clogger 2.0.2 - bugfixes for pure Ruby users v2.0.2
This release fixes a bug discovered in the rarely-used pure Ruby version in multithreaded Rack servers. Some folks reported privately that they forgot to upgrade from clogger 1.0.1 when when upgrading from MRI 1.9.3 to 2.1, so they were inadvertently using the pure Ruby version instead of the less-buggy C extension. This also adds support for using the monotonic clock under Ruby 2.1+ for request timing, matching what the C extension used all along. Users of the C extension are unaffected by bugs this release fixes and do not need to upgrade. * pure: fix reentrancy of request_time * pure: use monotonic clock if possible
2015-02-27pure: use monotonic clock if possible
Ruby 2.1.0 and later exposes Process.clock_gettime, resulting in less garbage and access to the monotonic clock if it is available. Try to use it to achieve feature parity with the C extension (which has always used the monotonic clock if possible).
2015-02-27pure: fix reentrancy of request_time
For users unable to compile the C extension, multithreaded usage of clogger could return invalid request time measurements. This does not affect users of the C extension.
2015-01-13clogger 2.0.1 - doc updates and new mailing list v2.0.1
Most notably, there's a new mailing list at clogger-public@bogomips.org You may (optionally) subscribe to the new mailing list at: clogger-public+subscribe@bogomips.org If you're on librelist, you'll need to subscribe manually since librelist subscribers cannot be imported. Of course, you do not have to be subscribed to post, either (please Cc: everyone as folks may not be subscribed). shortlog: README: document $env support for reading Rack env switch docs + website to olddoc ext: get rid of noisy and unnecessary cast new mailing list at clogger-public@bogomips.org gemspec: use SPDX license abbreviation remove Rubyforge reference in Rakefile
2015-01-13remove Rubyforge reference in Rakefile
Rubyforge is dead
2015-01-13gemspec: use SPDX license abbreviation
ref: http://spdx.org/licenses/
2015-01-13new mailing list at clogger-public@bogomips.org
You may (optionally) subscribe to the new mailing list at: clogger-public+subscribe@bogomips.org You'll need to subscribe manually since librelist subscribers cannot be imported. Of course, you do not have to be subscribed to post, either (please Cc: everyone as folks may not be subscribed). If your ISP prevents you from using port 25, port 587 (submission) is open on bogomips.org. You may use Tor if you do not wish to expose your IP when using port 587. Any HTML mail will be flagged as spam, so please do not send it and waste storage and bandwidth on it. Basic, old-fashioned mailing list conventions apply: no top-posting, trim replies, attribute your quotes, short signatures, etc. This existing list will operate in public-inbox "hijack mode": the new address is subscribed to the old librelist, so any messages sent to the librelist are automatically archived to the new public-inbox. Of course, not much happens here, anyways, so nobody notices :) Background: Over the years, I've come to disagree with the subscription-required posting policy of librelist. Combined with disabling of rsync archives, one of my main reasons for choosing librelist back in the day are gone. Lately, I've also been working on public-inbox, http://public-inbox.org/ an "archives-first" approach to mailing lists using git. ssoma (git) archives are available at: git://bogomips.org/clogger-public/ The ssoma format is described at http://ssoma.public-inbox.org/ HTML archives are going to http://bogomips.org/clogger-public/ All archives imported from gmane, and posts to this librelist also go there.
2015-01-13ext: get rid of noisy and unnecessary cast
2015-01-13switch docs + website to olddoc
wrongdoc was difficult to maintain because of the tidy-ffi dependency and the HTML5 changes in Darkfish could not be handled well by Tidy. olddoc is superior as it generates leaner HTML which loads faster, requires less scrolling and less processing power to render. Aesthetic comparisons are subjective of course but completely unimportant compared to speed and accessibility. The presence of images and CSS on the old (Darkfish-based) site probably set unreasonable expectations as to my ability and willingness to view such things. No more, the new website is entirely simple HTML which renders well with even the wimpiest browser.
2014-08-14README: document $env support for reading Rack env
This is more portable across different servers than Thread.current in case of non-blocking servers which may be serving multiple clients at once. This is also faster than relying on $e{...} since $e{...} uses eval and that is slow.
2014-05-12clogger 2.0.0 - updated website URL, cleanups v2.0.0
This updates the documentation to point to the new homepage at http://clogger.bogomips.org/ There is one API change which removes :to_io support, as this was never a valid Rack extension. This also fixes a minor incompatibility which prevented the GVL from being released on ruby-trunk (2.2.0dev) during disk operations. The mailing list continues to be hosted at librelist, but that will probably soon change to a public-inbox + mailing list. There are also minor code cleanups. This also relaxes license to LGPLv2.1 or later.
2014-05-12relax license to allow LGPLv2.1 or later
In case I'm hit by a bus, the lesser evil is to allow the FSF to update our license than to be stuck as LGPLv3-only in the future. Some documentation/gemspec formatting updates while I'm at it.
2014-05-12test_clogger: workaround test failure on 32-bit
StringIO isn't a very realistic use case, and our changing the length of a shared string causes errors on 32-bit.
2014-05-12remove :to_io support
:to_io never was a Rack extension, and ends up breaking the case where an SSL socket is proxied. The role of :to_io in IO-like objects is to aid IO.select and like methods.
2014-05-12clogger 1.4.0 - updated website URL, cleanups v1.4.0
This updates the documentation to point to the new homepage at http://clogger.bogomips.org/ This also fixes a minor incompatibility which prevented the GVL from being released on ruby-trunk (2.2.0dev) during disk operations. The mailing list continues to be hosted at librelist, but that will probably soon change to a public-inbox + mailing list. There are also minor code cleanups.
2014-05-12update docs for rubyforge death
Rubyforge is going away on May 15, 2014.
2014-05-06Add script for redirecting to clogger.bogomips.org
Rubyforge about to be dead.