Prerelease SDK 1.5.0 is ready for download! There are a ton of bug fixes in this release as well as some pretty big features. Check it out. You can get the SDKs here:
The release notes are below. You'll notice that they're much longer than usual. We've listed out many of the bugs in the public issues tracker we've addressed.
==============================
- Support for Backends which allow developers to create infrastructure
components that complement the existing dynamic apps which App Engine already
provides. Instances of a backend can maintain state, be addressed
individually, and are not subject to per-request time limits. They can also be
configured to consume more memory and CPU than ordinary dynamic instances.
- Task Queues support pull mode, allowing for more control over task queue work
rates. To use pull queues, include the 'mode' argument in your queue.yaml.
- Pull queues are supported by a REST API, allowing access from outside App
Engine. To use the REST API, you must also include a valid ACL section
specifying which users can lease tasks from the pull queue.
- Task Queue payload limits have been increased. Push queues now support 100KB
per task, pull queues support 1MB per task. Within App Engine, the new limit
is 32 MB per batch of tasks. With the REST API the limit is 1 MB per batch.
- HTTP request and response sizes have been increased to 32 MB.
- We have removed the rate quotas for requests, datastore operations,
memcache operations, and image API operations. Resource quotas still apply.
- When creating new applications, developers will now see the High Replication
Datastore as the default configuration option. Developers that still wish to
use the Master/Slave configuration must explicitly choose this option at
application creation time.
- The Task Queue maximum configurable processing rate has been increased to
500/s.
- All application Owners, as listed in the Admin Console, can download the app's
code, unless code download is disabled for the application.
- Added db.py support for making calls to the datastore asynchronously.
Available functions are get_async(), put_async(), delete_async(),
allocate_ids_async(). Call get_result on the return value of asynchronous
datastore functions to block on the call.
- Metadata queries can now get all namespaces, kinds, and properties in a given
range.
- The Testbed API now supports the Channel API.
- Users can provide Django settings to be loaded in webapp's django_setup.
- Modified Dashboard latency graphs to indicate they only include dynamic
requests.
- Fixed an issue where Federated User data didn't survive a get-put-delete
operation cycle.
- Fixed an issue where metadata queries did not support unicode characters.
- Fixed an issue where HTTP headers could contain new line characters.
- A warning message is shown when the Python version used to run the SDK is
different than the Python version used in production.
- Fixed an issue with Federated Users causing the Admin Console dataviewer to
fail.
- MacOS and Windows style newlines are now supported for logging in the SDK.
- Fixed an issue where sending mail with smtp_host set did not work.
- Fixed the file permissions for appinfo_errors.py and appinfo.py in the SDK.
- Fixed an issue deploying an app with version set to 0.
- Fixed an issue where the SDK allowed GET or DELETE with a body, which does
not work in production.
- Fixed an issue where URLFetch/urllib did not work with MacOS and
Python 2.6.0-2.6.3.
- Fixed the an issue in the SDK where the mail body was incorrectly generated
when the sendmail option was enabled.
- Fixed an issue in the SDK dataviewer where editing a ListProperty(db.Category)
resulted in a BadValueError.
- Fixed an issue in the SDK where the signal module could be imported, as it
is not supported.
- Improved support for reserving an app id that is a canonicalized version of
a user's Gmail address.
- Added a more useful error messages for unavailable App Ids.
- The SDK now uses hashlib instead of sha. Python 2.4 is no longer supported.
- Fixed an issue where images.composite() did not support PNG transparency in
the SDK.
- Added better error messages for cron.yaml parsing.
- Fixed an issue where uploading an index.yaml file with DOS line endings
caused an error.
- Fixed an issue where unicode characters in a script caused an error.
- Task Queue names can now include the "_" character.
- The sender of an email is no longer BCC'd when they are already included in
the email.
- Fixed an issue where non-string types were interpreted as strings when
parsing the index.yaml file.
- Image API now supplies image format.
- Fixed webapp.request.get_range to work with default=None.
- Added a more helpful error message when trying to send email to a malformed
address.
- The SDK now returns an error if the Content-length header is not included in a
post request, matching production.
- Fixed an issue using URLFetch to fetch pages where the URL contained unicode.
- Fixed an issue where the SDK looked in the wrong folder for the SDK Version
file.
- Fixed a webapp.Request get() issue where the default was not being properly
returned when allow_multiple was set to True.
- Fixed an issue where handler.get_url did not work for non-default versions of
Django.
- Fixed an issue where X-AppEngine-TaskRetryCount did not increment in the SDK.
- Applied a user patch that partially fixed an issue where bulkloader resume
was not working.
- Fixed a logging issue with the SDK BlobImageDispatcher.
- The Images API now supports WebP.
- ListProperty now supports datetime.time and datetime.date, as documented.
- Fixed an issue where the Content-length header was being incorrectly stored as
an integer.
- Fixed an issue where the Admin Console didn't keep the app version viewed
consistent across actions.
- Fixed an issue using os.environ in appengine_config.py in the SDK.
- Fixed an issue where HTTP requests on the SDK where truncated if a semicolon
was included in the request.
- Fixed an issue where images.get_serving_url() did not handle blob_info.key()
correctly.
- Fixed an issue where checking for a new version caused the appcfg download_app
command to fail.
- Fixed a typo in the Admin Console on the New App page.
- Return a better error when a ReferenceProperty fails to resolve.
- Fixed an issue where sending mail from an app registered on the HR datastore
required the app id be prefaced with s~.
- Fixed an issue where URLFetch with urllib over HTTPS didn't work.
=============
- Support for Backends which allow developers to create infrastructure
components that complement the existing dynamic apps which App Engine already
provides. Instances of a backend can maintain state, be addressed
individually, and are not subject to per-request time limits. They can also be
configured to consume more memory and CPU than ordinary dynamic instances.
- Task Queues support pull mode, allowing for more control over task queue work
rates. To use pull queues, include the 'mode' element in your queue.xml.
- Pull queues are supported by a REST API, allowing access from outside App
Engine. To use the REST API, you must also include a valid ACL section
specifying which users can lease tasks from the pull queue.
- Task Queue payload limits have been increased. Push queues now support 100KB
per task, pull queues support 1MB per task. Within App Engine, the new limit
is 32 MB per batch of tasks. With the REST API the limit is 1 MB per batch.
- HTTP request and response sizes have been increased to 32 MB.
- We have removed the rate quotas for requests, datastore operations,
memcache operations, and image API operations. Resource quotas still apply.
- When creating new applications, developers will now see the High Replication
Datastore as the default configuration option. Developers that still wish to
use the Master/Slave configuration must explicitly choose this option at
application creation time.
- The Task Queue maximum configurable processing rate has been increased to
500/s.
- Modified Dashboard latency graphs to indicate they only include dynamic
requests.
- Fixed an issue where the Javadoc for the File API was not generated.
- Fixed an issue where the API Deadlines were not being enforced in the SDK.
- Fixed an issue where Federated User data didn't survive a get-put-delete
operation cycle.
- Fixed an issue with Federated Users causing the Admin Console dataviewer to
fail.
- Fixed an issue causing SDK URL Fetch not to work behind proxy.
- Fixed an issue deploying an app with version set to 0.
- Improved support for reserving an app id that is a canonicalized version of
a user's Gmail address.
- Added a more useful error message for unavailable App Ids.
- Added clearer error messaging for invalid transactions in the SDK.
- Added better error messages for cron.xml parsing.
- Entity constructors are now consistent with KeyFactory constructors.
- Task Queue names can now include the "_" character.
- The sender of an email is no longer BCC'd when they are already included in
the email.
- Added a more helpful error message when trying to send email to a malformed
address.
- The SDK now returns an error if the Content-length header is not included in a
post request, matching production.
- Fixed an issue where the wrong type of error was being thrown on HTTP request
timeout.
- The Images API now supports WebP.
- Fixed an issue where the Admin Console didn't keep the app version viewed
consistent across actions.
- Added Javadocs for TaskOptions.taskName().
- Fixed a typo in the Admin Console on the New App page.
- Fixed an issue where sending mail from an app registered on the HR datastore
required the app id be prefaced with s~.
- Fixed an issue where HTTP POST was broken in the SDK if the Content-Length
header was specified.