Date | Commit message (Collapse) |
|
This gives us memsize information and appears to fix a leak
under Ruby 3.3.
|
|
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.
|
|
|
|
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/
|
|
That's what _DEFAULT_SOURCE will set if it's respected, and
we've had POSIX 2008 goodies for 15 years, now.
|
|
`struct timespec' has 32-bit tv_sec and tv_nsec on 32-bit x86 GNU/Linux
system, causing excessive overflow and test failures.
|
|
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
|
|
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.
|
|
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
|
|
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.
|
|
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/
|
|
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.
|
|
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)
|
|
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/
|
|
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
|
|
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...
|
|
public-inbox.org started running an IMAP + IMAPS server.
|
|
Apparently, _DEFAULT_SOURCE is now the recommended macro to
define for _BSD_SOURCE and _SVID_SOURCE features.
|
|
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.
|
|
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
|
|
bogomips.org is due to expire, and I can't justify paying
.org extortionists to renew it.
|
|
This was done for Earth Day 2019, but never pushed out
|
|
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
|
|
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.
|
|
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]
|
|
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.
|
|
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.
|
|
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!
|
|
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.
|
|
With the removal of Rack::Utils.bytesize, we
are compatible with rack 2.x
|
|
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
|
|
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.
|
|
This wasn't tested before, and we ought to ensure it works since
it's rarely-used.
|
|
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
|
|
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).
|
|
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.
|
|
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
|
|
Rubyforge is dead
|
|
ref: http://spdx.org/licenses/
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
StringIO isn't a very realistic use case, and our changing
the length of a shared string causes errors on 32-bit.
|
|
: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.
|
|
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.
|
|
Rubyforge is going away on May 15, 2014.
|
|
Rubyforge about to be dead.
|