This is a development snapshot release for the 7.x series. This is not stable, and production sites should not run this code. However, users wishing to help test and develop the next version of Drupal are encouraged to use this for test sites.
Release notes for DRUPAL-7-0-UNSTABLE-9 (September 15, 2009)
Changes for developers:
* Database-wise, core is now fully DBTNG-compliant! YAY! We also added
basic support for 'date' and 'time' types to Schema API, update_sql()
is dead, dead, dead, AND now hook_uninstall() and hook_install() will
automatically handle your schema definitions. Ahhh.
* The File API now uses stream wrappers for accessing files, which
basically means that all functions that used to take a file path now
take a URI like public://old_photos/banana.jpg. Core ships with three
default stream wrappers: temp://, public://, and private:// (which
means that public and private files FINALLY co-exist!) with support
for contrib to offer wrappers such as s3:// for Amazon S3, flickr://
for getting data into/out of Flickr, and so on. We also added a
hook_file_url_alter() for content delivery network (CDN) support. w00t!
* Remember that awesome code registry I talked about back in
UNSTABLE-1 or so that was going to solve all of our performance woes?
Yeeeah... Turns out, it caused severe developer experience issues, in
addition to not offering performance improvements on par with more
well-supported systems such as APC, so this got partially rolled back.
The registry no longer caches functions, though we do still offer a
class registry, which means that $foo = new Foo; will work from
* Field API improvements: Taxonomy terms are now fields, comments and
taxonomy terms are fieldable, and fields are also now translatable.
* In terms of clean-ups, we now have the R part of a real CRUD API in
core with standardized, swappable entity loaders. We also have a
*real* user and permissions API, as well as a filter API. We also
renamed 'box' to 'custom_block' in the name of sanity.
* Performance-wise, we now ship with "smushed" images that are lighter
on bandwidth, and we've now added a caching system to the render API
which is currently implemented by blocks, and because it happens early
in the page render cycle, it works for both authenticated users and
with node access modules. Yum.
* Install profile improvements! Shock! Install profiles are now
basically modules with .install files, .info files to declare
dependencies, etc. If you can write a module, you can write an install
profile, and you can also do everything from install profiles you can
do with modules including use the full Drupal API and write update
functions to move from one version to another. Speaking of versions,
you can now specify version-level dependencies in your .info files, so
you can say your module depends on at least Views 2.0-rc1 but less
than Views 3.0. And finally, you can run update.php and install.php
from the command line without Drush having to do unholy things. Yay!
* In terms of our testing framework, there's now a debug() function
which can be used as a 'lite' version of dsm(), and also prints
debugging data as SimpleTest assertions. There's also a new "verbose"
mode which logs screen captures of the pages SimpleTest hit on its way
through, along with the assertion messages. This should make figuring
out why tests are failing MUCH easier! Thanks to the testing sprint in
LA back in mid-August, we also greatly grew our test coverage and
cleaned up a lot of lingering test patches from back in Szeged.
Changes for themers:
* Regions $sidebar_left and $sidebar_right are now called
$sidebar_first and $sidebar_second, for better semantics and to make
them more RTL-friendly.
* The AJAX framework from CTools is now in core, and core now supports
a new .once() method for ensuring that a behaviour applies only a
single time. I don't really know what any of this means, but the JS
folks are really excited about it. ;)
* You can now use a "wildcard" operator in tpl.php files, for example
page-user-%.tpl.php to affect any user/xxx while letting page-
user.tpl.php affect only the actual page /user.
* In accessibility news, there are now system-wide classes for marking
elements as either completely hidden (.element-hidden: equivalent to
jQuery's hide() function) or invisible (.element-invisible: visible
only to screen readers). We're now working to apply those classes to
various points in core, as well as other important accessibility
Changes for end-users:
* CC-FREAKING-K IN CORE! OH YEAH! :D Not to mention Token, FileField,
* As a trade-off, lots of extraneous features were removed from core
in favour of either contributed modules or field API alternatives:
minimum number of words on the body field, related terms for taxonomy
terms, per-user theme selection, Blog API module.
* The D7UX IA is fully in place; no more confusing "half the items are
in 'Site configuration' and half under 'Configuration & Modules'"
stuff. Thanks for bearing with us while we went through that transition!
* Some nice security improvements. Users are now prompted at install
time to get notified via e-mail about security updates for their
sites. This is great because I'm pretty sure almost no one realizes
this is a setting in Drupal 5 and 6. :P We also now limit the number
of login attempts to help prevent brute force attacks. And running
update.php is now tied to a permission rather than having to open it
up to the entire universe if you don't like sharing your user 1
password. Oh, and last but not least, SSL support in core! :D
Release notes for DRUPAL-7-0-UNSTABLE-8 (July 24, 2009)
Changes for developers:
- Berdir has been leading the charge on lots of conversions to the new database abstraction layer in Drupal 7 (DBTNG). Most of core has now been converted, with just *two more* open issues!
- Speaking of database stuff, Schema API now has support for defining foreign key relations between tables. While core doesn't do anything with this information yet (due to the fact that we have to support stinky old MyISAM tables), contrib modules certainly could. There's also now support for queries to ignore slaves when you are using a replication set up, which is great for high performance sites.
- The miserable DX suck-fest that is node_get_types() has been split up into much more reasonable function names like node_type_get_types() and node_type_get_names() etc. YAY!
- Installation Profiles have at long last gotten some love! They now come with .info files where