Version 1.3.8
=============
- You can run task queue tasks immediately from the admin console.
- Added an OutputSettings class to the Images API to specify the JPEG encoding
quality when running in production.
- Support for login of multiple Google accounts within an app, and longer login
sessions. For more information see:
http://www.google.com/support/accounts/bin/answer.py?answer=181599
- In queue.xml, the maximum allowed bucket size is now 100.
- Removed limits on zigzag merge-join queries. Therefore the error "The built-in
indices are not efficient enough for this query and your data. Please add a
composite index for this query." will no longer be thrown in most cases,
enabling more types of queries without indexes.
- The whitelist has been updated to include java.net.InetAddress and some
interfaces and abstract classes in javax.xml.soap, including
javax.xml.soap.SOAPMessage.
- Fixed an issue reserving App Ids by owners of emails containing periods,
multiple cases, and googlemail.com address.
http://code.google.com/p/googleappengine/issues/detail?id=1196
- Fixed an issue where TaskOptions had no public getters, making testing
impossible.
http://code.google.com/p/googleappengine/issues/detail?id=3243
- Fixed an issue on the development server where PNGs were being returned as
JPEGs.
http://code.google.com/p/googleappengine/issues/detail?id=3661
Version 1.3.7
=============
- Fixed an SDK issue where calling getServingUrl raised an exception.
http://code.google.com/p/googleappengine/issues/detail?id=3598
Version 1.3.6
=============
- Multitenancy is now supported in the datastore, allowing better
compartmentalization of user data.
- Automatic image thumbnailing is now available in the Images API using
getServingUrl.
- Users can now serve custom static error pages for over_quota, dos_api_denial
and default cases.
- Results of datastore count() queries and offsets for all datastore queries
are no longer capped at 1000.
- Added a pause queue button to the task queue details page in the Admin
Console.
- Historical graphs have been added to all of the dashboard graphs in the Admin
Console.
- Content-range headers are supported on Blobstore downloads.
- New method to allocate datastore ids in a given range: allocateIdRange()
- The app.yaml format is supported with Java applications.
- Increased several rate limited quotas for free applications.
- Fixed an issue that did not allow forms of over 200,000 bytes to be submitted.
http://code.google.com/p/googleappengine/issues/detail?id=1608
Version 1.3.5
=============
- Ability to configure the Task Queue storage limit with the
total-storage-limit field in the queue.xml file.
- Task Queues now support up to 50 qps per queue, up from 50 qps per app.
- Developers can programmatically access Blobs with BlobstoreInputStream, which
provides an InputStream view of a blob in Blobstore
- Bulkloader transform helpers for lists and hierarchical keys were added.
- remote_api_shell commands can be sent over HTTPS or HTTP.
- Admin Console logs now include information on request time latency.
- The datastore now supports end cursors.
- Fixed an issue where requesting /appstats would not properly direct to
/appstats/.
- Fixed an issue with inconsistent URL mappings between the SDK and production.
http://code.google.com/p/googleappengine/issues/detail?id=2598
Version 1.3.4
=============
- Client side bulkloader available with the Python SDK that has a new
configuration syntax and wizard for easier import/export with the datastore.
Can be used by enabling remote_api in your Java application
- Applications can now be configured to authenticate with OpenID by selecting
the OpenID option when creating your application in the admin console
http://code.google.com/p/googleappengine/issues/detail?id=248
http://code.google.com/p/googleappengine/issues/detail?id=56
- New API to allow App Engine apps to act as OAuth service providers
http://code.google.com/p/googleappengine/issues/detail?id=919
- The version update check in the Java SDK now uses https
- Allow full access to javax.el.*
http://code.google.com/p/googleappengine/issues/detail?id=3157
- Increased the timeout during deployment to 15 minutes
- Fixed an issue with JPA where an illegal cast exception was thrown during the
fetch of integer fields
- MemcacheService.setNamespace() is deprecated in favor of
MemcacheServiceFactory.getMemcacheManager(namespace)
- Support in the SDK for Java 1.5 is being deprecated. These warnings now appear
when starting the SDK
Version 1.3.3.1
===============
- Fixed an issue where servlet filters could cause 404s
http://code.google.com/p/googleappengine/issues/detail?id=3138
Version 1.3.3
=============
- Added two new system properties com.google.appengine.application.id and
com.google.appengine.application.version
- DeadlineExceededException is now always thrown before
HardDeadlineExceededError
- Decreased likelihood of "Too many URLMap" deployment errors for complex
web apps
- Fixed an error where QuotaService.getCpuTimeInMegaCycles() was returning
cycles instead of megacycles
- Fixed an issue between differing behavior of jsp in the production and
development environments
http://code.google.com/p/googleappengine/issues/detail?id=3022
- Fixed an issue uploading webapps with .tag files
http://code.google.com/p/googleappengine/issues/detail?id=2902
Version 1.3.2
=============
- New API to read the contents of uploaded Blobs (fetch_data)
http://code.google.com/p/googleappengine/issues/detail?id=2536
- URLFetch now supports accessing ports 80-90, 440-450, and 1024-65535
- Mail API now allows common document formats as attachments
http://code.google.com/p/googleappengine/issues/detail?id=494
- The Task Queue API now supports adding multiple tasks in a single call to
Queue.add()
- Fixed charset handling for inbound emails
http://code.google.com/p/googleappengine/issues/detail?id=2326
- Fixed issue with compositing background colors in dev_appserver
- New feature in the datastore to specify whether to use strong or eventually
consistent reads (the default is strong)
- New datastore feature allows setting deadlines for operations
- Increased the maximum Task Queue refill rate from 20/s to 50/s
- Support for IP blacklisting to prevent denial of service (DoS) attacks
- App Stats is now available for the Java SDK in addition to Python
- Fix issue with expiration times not being reset on Put on the Memchache API
http://code.google.com/p/googleappengine/issues/detail?id=1284
- Fix issue preventing static files from being served when a servlet is mapped to root
http://code.google.com/p/googleappengine/issues/detail?id=1379
Version 1.3.1
=============
- Datastore Query Cursors
http://code.google.com/appengine/docs/java/datastore/queriesandindexes.html#Query_Cursors
- Transactional Tasks
- Support for Custom Admin Console pages
- Java Precompilation is now on by default
Developers can opt-out of precompilation by setting the flag in
appengine-web.xml:
false
- New built-in support for unit testing (see appengine-testing.jar)
http://code.google.com/appengine/docs/java/tools/localunittesting.html
http://code.google.com/p/googleappengine/issues/detail?id=326
- net.sf.jsr107 package included as an alternative to the low-level
Memcache API
- javax.annotation.Resource/Resources added to the package whitelist
- New "month" and "synchronized" syntax for Cron configuration
http://code.google.com/appengine/docs/java/config/cron.html
- URLFetch supports asynchronous requests
http://code.google.com/p/googleappengine/issues/detail?id=1899
- appcfg.sh uses HTTPS for application deployment
- appcfg.sh adds request_logs --append
- Changes to the order queries without a specified sort order are returned
Only queries that use IN will see different results.
- Added support for multiple != filters on the same property
- Improved support for keys-only queries when using IN and != filters
- Support for ETags, If-matches, If-not-matches HTTP Headers, as well as 304
status codes now available on static files (not yet available on the
dev_appserver or Blobstore blobs)
http://code.google.com/p/googleappengine/issues/detail?id=575
- Fixed issue where the maximum transform count was enforced for composite
operations
http://code.google.com/p/googleappengine/issues/detail?id=1656
- Fixed issue with whitespace on the end of strings in web.xml
http://code.google.com/p/googleappengine/issues/detail?id=2242
- Fixed web.xml entries for 404 error codes
http://code.google.com/p/googleappengine/issues/detail?id=1477
- Added validation prevent welcome-files with absolute paths
http://code.google.com/p/googleappengine/issues/detail?id=1249
- Fixed issue where cancelling a deployment in progress could unintentionally
corrupt the SDK
http://code.google.com/p/googleappengine/issues/detail?id=2255
- Fixed issue with QuotaService.getCpuTimeInMegaCycles() returning 0
http://code.google.com/p/googleappengine/issues/detail?id=2639
- Fixed issue where JSP exceptions will be incorrectly cast causing a
ClassCastException
http://code.google.com/p/googleappengine/issues/detail?id=1438
Version 1.3.0
=============
- Support for the new Blobstore API
- New com.google.appengine.runtime.{version,environment} system properties
(and a SystemProperty accessor class)
- New sample applications for GWT 2.0
- Optimizations for many reflection operations
Version 1.2.8
=============
- Support for JAXB. JAXB is included in JDK 1.6 (and App Engine's production
servers). If you're using JDK 1.5 with your local dev_appserver, you will
need to include the JAXB libraries with your application to use it.
http://code.google.com/p/googleappengine/issues/detail?id=1267
- New support for application pre-compilation to reduce the length of
loading requests. To enable pre-compilation on your application, add this
flag to your appengine-web.xml:
true
If you have trouble deploying your application, you should remove this
flag or set it to false.
- Added Quota API (com.google.appengine.api.quota) to match Python API.
- Low-level Memcache API now supports batchIncrement().
- HTTPResponse object now has getFinalUrl() method for 302 redirects.
- http://code.google.com/p/googleappengine/issues/detail?id=1464
- Java Dev Appserver now automatically executes tasks. If you prefer the
old behavior where tasks do not automatically execute you can use the
following flag when starting the server:
-Dtask_queue.disable_auto_task_execution
- Additional file extensions permitted when sending mail.
- http://code.google.com/p/googleappengine/issues/detail?id=494
- Fixed issue with Java mail handler not processing multipart messages
correctly.
- Fixed agent code included in appengine-local-runtime.jar results in
RuntimeException.
- http://code.google.com/p/googleappengine/issues/detail?id=2280
- Fixed issue with sort orders defined on properties that allow multiple
values.
- http://code.google.com/p/googleappengine/issues/detail?id=2349
- Fixed problem with dropped query strings after requiring log-in.
- http://code.google.com/p/googleappengine/issues/detail?id=2225
- Removed limitation preventing multiple parameters with the same name.
- http://code.google.com/p/googleappengine/issues/detail?id=2090
- Fixed issue with local datastore incorrectly sorting results of ancestor
queries.
- http://code.google.com/p/googleappengine/issues/detail?id=2177
- New Index building status page in the Admin Console
- Task Queue now supports purging queues, and deleting tasks and queues via
the Admin Console.
- http://code.google.com/p/googleappengine/issues/detail?id=2159
- http://code.google.com/p/googleappengine/issues/detail?id=1740
- Over Quota HTTP status code changed from 403 to 503, other to 500.
- http://code.google.com/p/googleappengine/issues/detail?id=961
- Task Queue now considers all HTTP 2xx status codes to represent success.
For past release notes, visit:
http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes