blob: 9ccf4536ece1a2d62ca0ec1ec20093f3c20f5a14 [file] [log] [blame]
Apache CouchDB CHANGES
======================
Version 0.10.1
--------------
Replicator
* Stability enhancements regarding redirects, timeouts, OAuth.
Query Server
* Avoid process leaks
* Allow list and view to span languages
Stats
* Eliminate new process flood on system wake
Build and System Integration:
* Test suite now works with the distcheck target.
Version 0.10.0
--------------
Storage Format
* Add move headers with checksums to the end of database files for extra robust
storage and faster storage.
View Server
* Added native Erlang views for high-performance applications.
Build and System Integration:
* Changed `couchdb` script configuration options.
* Added default.d and local.d configuration directories to load sequence.
HTTP Interface:
* Added optional cookie-based authentication handler.
* Added optional two-legged OAuth authentication handler.
Version 0.9.1
-------------
Build and System Integration:
* PID file directory is now created by the SysV/BSD daemon scripts.
* Fixed the environment variables shown by the configure script.
* Fixed the build instructions shown by the configure script.
* Updated ownership and permission advice in `README` for better security.
Configuration and stats system:
* Corrected missing configuration file error message.
* Fixed incorrect recording of request time.
Database Core:
* Document validation for underscore prefixed variables.
* Made attachment storage less sparse.
* Fixed problems when a database with delayed commits pending is considered
idle, and subject to losing changes when shutdown. (COUCHDB-334)
External Handlers:
* Fix POST requests.
Futon Utility Client:
* Redirect when loading a deleted view URI from the cookie.
HTTP Interface:
* Attachment requests respect the "rev" query-string parameter.
JavaScript View Server:
* Useful JavaScript Error messages.
Replication:
* Added support for Unicode characters transmitted as UTF-16 surrogate pairs.
* URL-encode attachment names when necessary.
* Pull specific revisions of an attachment, instead of just the latest one.
* Work around a rare chunk-merging problem in ibrowse.
* Work with documents containing Unicode characters outside the Basic
Multilingual Plane.
Version 0.9.0
-------------
Futon Utility Client:
* Added pagination to the database listing page.
* Implemented attachment uploading from the document page.
* Added page that shows the current configuration, and allows modification of
option values.
* Added a JSON "source view" for document display.
* JSON data in view rows is now syntax highlighted.
* Removed the use of an iframe for better integration with browser history and
bookmarking.
* Full database listing in the sidebar has been replaced by a short list of
recent databases.
* The view editor now allows selection of the view language if there is more
than one configured.
* Added links to go to the raw view or document URI.
* Added status page to display currently running tasks in CouchDB.
* JavaScript test suite split into multiple files.
* Pagination for reduce views.
Design Document Resource Paths:
* Added httpd_design_handlers config section.
* Moved _view to httpd_design_handlers.
* Added ability to render documents as non-JSON content-types with _show and
_list functions, which are also httpd_design_handlers.
HTTP Interface:
* Added client side UUIDs for idempotent document creation
* HTTP COPY for documents
* Streaming of chunked attachment PUTs to disk
* Remove negative count feature
* Add include_docs option for view queries
* Add multi-key view post for views
* Query parameter validation
* Use stale=ok to request potentially cached view index
* External query handler module for full-text or other indexers.
* Etags for attachments, views, shows and lists
* Show and list functions for rendering documents and views as developer
controlled content-types.
* Attachment names may use slashes to allow uploading of nested directories
(useful for static web hosting).
* Option for a view to run over design documents.
* Added newline to JSON responses. Closes bike-shed.
Replication:
* Using ibrowse.
* Checkpoint replications so failures are less expensive.
* Automatically retry of failed replications.
* Stream attachments in pull-replication.
Database Core:
* Faster B-tree implementation.
* Changed internal JSON term format.
* Improvements to Erlang VM interactions under heavy load.
* User context and administrator role.
* Update validations with design document validation functions.
* Document purge functionality.
* Ref-counting for database file handles.
Build and System Integration:
* The `couchdb` script now supports system chainable configuration files.
* The Mac OS X daemon script now redirects STDOUT and STDERR like SysV/BSD.
* The build and system integration have been improved for portability.
* Added COUCHDB_OPTIONS to etc/default/couchdb file.
* Remove COUCHDB_INI_FILE and COUCHDB_PID_FILE from etc/default/couchdb file.
* Updated `configure.ac` to manually link `libm` for portability.
* Updated `configure.ac` to extended default library paths.
* Removed inets configuration files.
* Added command line test runner.
* Created dev target for make.
Configuration and stats system:
* Separate default and local configuration files.
* HTTP interface for configuration changes.
* Statistics framework with HTTP query API.
Version 0.8.1-incubating
------------------------
Database Core:
* Fix for replication problems where the write queues can get backed up if the
writes aren't happening fast enough to keep up with the reads. For a large
replication, this can exhaust memory and crash, or slow down the machine
dramatically. The fix keeps only one document in the write queue at a time.
* Fix for databases sometimes incorrectly reporting that they contain 0
documents after compaction.
* CouchDB now uses ibrowse instead of inets for its internal HTTP client
implementation. This means better replication stability.
HTTP Interface:
* Fix for chunked responses where chunks were always being split into multiple
TCP packets, which caused problems with the test suite under Safari, and in
some other cases.
* Fix for an invalid JSON response body being returned for some kinds of
views. (COUCHDB-84)
* Fix for connections not getting closed after rejecting a chunked request.
(COUCHDB-55)
* CouchDB can now be bound to IPv6 addresses.
* The HTTP `Server` header now contains the versions of CouchDB and Erlang.
JavaScript View Server:
* Sealing of documents has been disabled due to an incompatibility with
SpiderMonkey 1.9.
* Improve error handling for undefined values emitted by map functions.
(COUCHDB-83)
Build and System Integration:
* The `couchdb` script no longer uses `awk` for configuration checks as this
was causing portability problems.
* Updated `sudo` example in `README` to use the `-i` option, this fixes
problems when invoking from a directory the `couchdb` user cannot access.
Futon Utility Client:
* The view selector dropdown should now work in Opera and Internet Explorer
even when it includes optgroups for design documents. (COUCHDB-81)
Version 0.8.0-incubating
------------------------
Database Core:
* The view engine has been completely decoupled from the storage engine. Index
data is now stored in separate files, and the format of the main database
file has changed.
* Databases can now be compacted to reclaim space used for deleted documents
and old document revisions.
* Support for incremental map/reduce views has been added.
* To support map/reduce, the structure of design documents has changed. View
values are now JSON objects containing at least a `map` member, and
optionally a `reduce` member.
* View servers are now identified by name (for example `javascript`) instead of
by media type.
* Automatically generated document IDs are now based on proper UUID generation
using the crypto module.
* The field `content-type` in the JSON representation of attachments has been
renamed to `content_type` (underscore).
HTTP Interface:
* CouchDB now uses MochiWeb instead of inets for the HTTP server
implementation. Among other things, this means that the extra configuration
files needed for inets (such as `couch_httpd.conf`) are no longer used.
* The HTTP interface now completely supports the `HEAD` method. (COUCHDB-3)
* Improved compliance of `Etag` handling with the HTTP specification.
(COUCHDB-13)
* Etags are no longer included in responses to document `GET` requests that
include query string parameters causing the JSON response to change without
the revision or the URI having changed.
* The bulk document update API has changed slightly on both the request and the
response side. In addition, bulk updates are now atomic.
* CouchDB now uses `TCP_NODELAY` to fix performance problems with persistent
connections on some platforms due to nagling.
* Including a `?descending=false` query string parameter in requests to views
no longer raises an error.
* Requests to unknown top-level reserved URLs (anything with a leading
underscore) now return a `unknown_private_path` error instead of the
confusing `illegal_database_name`.
* The Temporary view handling now expects a JSON request body, where the JSON
is an object with at least a `map` member, and optional `reduce` and
`language` members.
* Temporary views no longer determine the view server based on the Content-Type
header of the `POST` request, but rather by looking for a `language` member
in the JSON body of the request.
* The status code of responses to `DELETE` requests is now 200 to reflect that
that the deletion is performed synchronously.
JavaScript View Server:
* SpiderMonkey is no longer included with CouchDB, but rather treated as a
normal external dependency. A simple C program (`_couchjs`) is provided that
links against an existing SpiderMonkey installation and uses the interpreter
embedding API.
* View functions using the default JavaScript view server can now do logging
using the global `log(message)` function. Log messages are directed into the
CouchDB log at `INFO` level. (COUCHDB-59)
* The global `map(key, value)` function made available to view code has been
renamed to `emit(key, value)`.
* Fixed handling of exceptions raised by view functions.
Build and System Integration:
* CouchDB can automatically respawn following a server crash.
* Database server no longer refuses to start with a stale PID file.
* System logrotate configuration provided.
* Improved handling of ICU shared libraries.
* The `couchdb` script now automatically enables SMP support in Erlang.
* The `couchdb` and `couchjs` scripts have been improved for portability.
* The build and system integration have been improved for portability.
Futon Utility Client:
* When adding a field to a document, Futon now just adds a field with an
autogenerated name instead of prompting for the name with a dialog. The name
is automatically put into edit mode so that it can be changed immediately.
* Fields are now sorted alphabetically by name when a document is displayed.
* Futon can be used to create and update permanent views.
* The maximum number of rows to display per page on the database page can now
be adjusted.
* Futon now uses the XMLHTTPRequest API asynchronously to communicate with the
CouchDB HTTP server, so that most operations no longer block the browser.
* View results sorting can now be switched between ascending and descending by
clicking on the `Key` column header.
* Fixed a bug where documents that contained a `@` character could not be
viewed. (COUCHDB-12)
* The database page now provides a `Compact` button to trigger database
compaction. (COUCHDB-38)
* Fixed portential double encoding of document IDs and other URI segments in
many instances. (COUCHDB-39)
* Improved display of attachments.
* The JavaScript Shell has been removed due to unresolved licensing issues.