Hey guys!

We just released Merb 1.0.4. Some highlights:

Update rake install and rake release:merb to work correctly

Modify cache README to accurately reflect the best practice for setting up the cache

Set the fatal! warning to print out to STDOUT, assuming STDOUT is the terminal (this was previously causing specs that caused a fatal to silently fail, but print the fatal warning to the log)

Fix dependencies to remember the backtrace when they were declared, so that failing to load a dependency prints the backtrace at declaration time, rather than printing a backtrace in Merb's bootloader.

A boatload of fixes to begin work to make Merb work on 1.9

Fix code reloading in non-forking environments, including correctly loading files that were loaded as the result of requiring the initial file, as well as correctly handling files that were previously required (i.e. don't re-require files at load, but do on reload).

Significantly speed up content negotiation (we were previously using an expensive class-based approach when a simple array approach would do). We have a fairly good test-suite for content-negotiation, but please alert us to any new failures in exotic scenarios.

In addition, the most expensive part of content-negotiation is now cached, which requires a cache mutex. Given how expensive it was before caching, we felt that adding a mutex was acceptable. If you find that performance under heavy concurrency has degraded, please let us know.

Modify Merb.logger.* to take a block, which defers the evaluation of the thing to print until it is determined that, in fact, the printing needed to happen. For instance, Merb.logger.debug params.some_expensive_operation becomes Merb.logger.debug { params.some_expensive_operation }, so that some_expensive_operation is not run in production mode.

last_modified and last_modified= were modified to support DateTimes (coming out of an ORM) in addition to pure times.

A bug related to JRuby backtraces was only partially resolved in 1.0.3. It is fully resolved in 1.0.4.

The backtrace checkboxes no longer display in :show_exception_details is false.

We now support socket files containing %s, which will be replaced with the socket number.

merb.visit, merb.click_link, and other Webrat helpers are now available in console mode, if webrat is installed. If it is not, we no longer throw an error in any circumstance, but print a warning about unavailable features.

multipart_request now preserves the session, but with an API change. If you would like to opt into the new feature, require "merb-core/two-oh" in your init.rb. The new multipart_request takes a path, params, and the rack environment, but does not take a block. It returns the same object that request() returns and therefore can be used with the be_successful, etc. rspec matchers. You should use multipart_post and multipart_put in most cases.

The multipart helper tests were updated to reflect the new changes, and require "merb-core/one-oh". The specs in spec10 were not modified, and do not opt-in to the new changes.

Merb 1.0.5 will focus exclusively on improving the dependency situation (which we know sucks) and is expected next Monday.

Have a happy week!